Всем доброго времени суток. Как уже сказал ранее, речь пойдет о переносе данных из УТ 11.0 в УТ11.2. Задача состояла в том, чтобы перенести доработанную версию 11.0 на полностью типовой механизм 11.2. В 11.0 были добавлены реквизиты, а также несколько модулей и подписок. С этой задачей помогли справиться дополнительные реквизиты объектов, а подписки были реализованы с помощью расширений. С конвертацией по большинству объектов проблем не было. Немного пришлось помучаться с переносом картинок в базу-приемник. В УТ 11.0 файлы картинок хранятся в справочнике Файлы, непосредственного реквизита ФайлХранилище в данном справочнике нет. В УТ 11.2 файлы картинок хранятся в определяемом справочнике ПрисоединенныеФайлы(Номенклатуры). Структуры исходного и конечного справочников немного отличается.
Данную проблему решил следующим образом:
в ПКО файлы (Файлы - ПрисоединенныеФайлы) в обработчик ПередОбработкой добавлен код:
файл = Источник;
версия = файл.ТекущаяВерсия;
ДанныеФайла = РаботаСФайлами.ПолучитьДанныеФайла(файл, версия);
ФайлХранилище = ДанныеФайла.Версия.ФайлХранилище;
ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("ФайлХранилище", ФайлХранилище);
В ПКС ФайлХранилище добавляем строку:
Значение= ВходящиеДанные.ФайлХранилище;
Теперь в ПКО ПослеЗагрузки Файлы добавляем код:
Объект.Записать(); //для получения ссылки на объект справочника
ПрисоединенныйФайл = Объект.Ссылка;
ДвоичныеДанные = Объект.ФайлХранилище;
УстановитьПривилегированныйРежим(Истина);
МенеджерЗаписи = РегистрыСведений.ПрисоединенныеФайлы.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ПрисоединенныйФайл = ПрисоединенныйФайл;
МенеджерЗаписи.ХранимыйФайл = ДвоичныеДанные;//Новый ХранилищеЗначения(картинка, Новый СжатиеДанных(9));
МенеджерЗаписи.Записать(Истина);
Объект.Заполнить(Неопределено);
Объект.Записать();
В ПКО номенклатуры просто соотносим ФайлКартинки.
Полностью реализацию переноса можно увидеть в правилах конвертации, прикрепленных сюда.