Переход с УТ 11.0 на УТ 11.2 с помощью Конвертации данных



Недавно была поставлена задача о переводе компании с УТ 11.0 на УТ 11.2. Данная задача решалась в несколько этапов. Основная часть это разработка конвертации под особенности компании и разработка расширений, т.к. первичная конфигурация была доработанной, а в условии стояло сохранение конфигурации в типовом виде.

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

Данную проблему решил следующим образом:

в ПКО файлы (Файлы — ПрисоединенныеФайлы) в обработчик ПередОбработкой добавлен код:               


файл = Источник;
версия = файл.ТекущаяВерсия;
ДанныеФайла = РаботаСФайлами.ПолучитьДанныеФайла(файл, версия);
ФайлХранилище =  ДанныеФайла.Версия.ФайлХранилище;
ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("ФайлХранилище", ФайлХранилище);

В ПКС ФайлХранилище добавляем строку:

Значение= ВходящиеДанные.ФайлХранилище;

Теперь в ПКО ПослеЗагрузки Файлы добавляем код:

Объект.Записать(); //для получения ссылки на объект справочника

ПрисоединенныйФайл = Объект.Ссылка;

ДвоичныеДанные = Объект.ФайлХранилище;

УстановитьПривилегированныйРежим(Истина);

МенеджерЗаписи = РегистрыСведений.ПрисоединенныеФайлы.СоздатьМенеджерЗаписи();

МенеджерЗаписи.ПрисоединенныйФайл = ПрисоединенныйФайл;

МенеджерЗаписи.ХранимыйФайл = ДвоичныеДанные;//Новый ХранилищеЗначения(картинка, Новый СжатиеДанных(9));

МенеджерЗаписи.Записать(Истина);

Объект.Заполнить(Неопределено);

Объект.Записать();

В ПКО номенклатуры просто соотносим ФайлКартинки.

Полностью реализацию переноса можно увидеть в правилах конвертации, прикрепленных сюда.

3 Comments

  1. Serg O.

    молодец конечно что перенес… правилами

    я бы обработку лучше для фоток сделал… тем более вообще фото хранить в базе не очень то правильно… база растёт как на дрожжах…

    у тебя ещё это не самый сложный вариант…попался

    из 10.3 в 11 УТ вот был переход… или бух. 2.0 в 3.0 с доработками

    на будущее … смотри на infostart-е что-нить подобное или универсальное, типа

    https://infostart.ru/public/308563/

    Reply
  2. Serg O.

    вот например публикация тут уже давно была

    обработка «перенос изображений УТ10-УТ11»

    http://infostart.ru/public/290011/

    Reply
  3. maks_20

    (1) можно было и обработкой. Но я кроме фоток еще и справочники выгружал, и документы. поэтому сделал общие правила сразу.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *