Добрый день, коллеги!
Есть КД.
Есть две базы данных с похожей структурой, по крайней мере мне нужно перенести абсолютно одинаковые объекты, но в каждой базе они имеют свои УИДы, названия конфигураций не важны.
Есть справочник,в этом справочнике есть реквизит с типом ХранилищеЗначения, в нём содержится другой тип - Отбор; конечно, в этом отборе есть другие ссылочные типы (Валюты, Организации и тп). Таким образом возникает проблема с переносом этого реквизита.
Я понимаю, что нужно сделать выгрузку через виртуальную таблицу значений, но как это реализовать - хз.
картинка
Скорее всего как-то так:
1) Реквизит хранилища знаения не передавать;
2) отбор из хранилища значения преобразовать в структуру где объекты будут заменены примитивынми реквизитами поиска (строка, булево и т.п.);
3) из структуры получить внутреннюю строку (ЗначениеВСтрокуВнутр) и передать данную строку в реквизит-параметр приемника
4) используя, ВыгрузитьПоПравилу () выгрузить значения ссылок;
5) при загрузке выполнить преобразование параметра-строки (осуществить поиск и т.д), и заполнить хранилище.
Я лично делал примерно по такому сценарию. Вроде проблем не было
(2) adva,
1. Я его не передаю - смысла нет.
2. Проблема заключается в том, что отбор содержит различные вариации: равно, в иерархии, в списке - и вот последнее вызывает проблему.
3. Можешь подробнее рассказать про эту операцию?
4. -
5. Тоже, плиз, подробнее, если можно, то пример какой-нибудь.
Спасибо.
В правилах для какого нибудь реквизита (не важно для какого) указываешь флаг "Передавать в параметр" (может быть можно и без указания реквизита источника, я уже давно делал, не помню). И в обработчике этого ПКС указываешь примерно такой код:
Структура = Новый Структура;
Структура.Вставить("Использование", Истина);
Если Отбор.ВидСравнения = ... Равно Тогда
Структура.Вставить("ВидСравнения", "Равно"); // строка
ИначеЕсли ...
КонецЕсли;
СтруктураСсылки = Новый Структура ("ТипОбъекта, ВидОбъекта, РеквизитыПоиска");
СтруктураСсылки.ТипОбъекта = "Справочник" // (в зависиомости от объекта)
СтруктураСсылки.ВидОбъета = "Справочник1" // (имя метаданных)
СтруктураСсылки.РеквизитыПоиска = СсылкаНаСправочник1.Код
ВыгрузитьПоПравилу (СсылкаНаСправочник1, , , , "ИмяПКОдляСправочника1"); // это наверное надо сделать еще раньше, тоже не очень помню)