При переносе данных между двумя самописными конфигурациями возникла необходимость выгрузки табличной части справочника в независимый регистр сведений. Обмен данными производится по правилам обмена, созданным с помощью конфигурации Конвертация данных 2.1. Представляю найденное решение.
1. Создаём правило конвертации объектов (ПКО). Объект-источник оставляем пустым, объект-приемник - РегистрСведенийЗапись.<ИмяРегистра>.
2. Для каждого необходимго свойства регистра сведений создаём правило конвертации свойств (ПКС). В ПКС ставим галку Получить значение из входящих данных.
3. Создаём ПКО для справочника.
4. В обработчике события После выгрузки пишем подобный код:
Если Источник.<ТабличнаяЧасть>.Количество() > 0 Тогда
ИсходящиеДанные = Новый Структура("Период, <Измерения, Ресурсы, Реквизиты>");
ИсходящиеДанные.<СвязующееИзмерение> = Источник.Ссылка;
Для Каждого ТекСтрока Из Источник.<ТабличнаяЧасть> Цикл
ИсходящиеДанные.Период = ТекСтрока.<РеквизитТабличнойЧасти>;
ИсходящиеДанные.<Измерение> = ТекСтрока.<РеквизитТабличнойЧасти>;
ИсходящиеДанные.<Ресурс> = ТекСтрока.<РеквизитТабличнойЧасти>;
ИсходящиеДанные.<Реквизит> = ТекСтрока.<РеквизитТабличнойЧасти>;
ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"<ИмяПКОДляРегистраСведений>");
КонецЦикла;
КонецЕсли;
Комментарии
Евгений Девятов (не проверено)
пт, 29/12/2017 - 11:42
Огромное спасибо - наконец-то нашел действительно рабочую идею по переносу табчасти в РС!
Правда, тут не учтен (или не раскрыт) один важный нЬюанс: при УДАЛЕНИИ какой-то записи табчасти в источнике, это удаление никак не отразится в приемнике - там запись останется!! Надо что-то мутить в правилах на стороне приемника...Вот над этим сейчас работаю - если добью, постараюсь поделиться.
guru
пт, 29/12/2017 - 12:16
Можно попробовать в обработчике "После загрузки" в ПКО объекта добавить запись пустого набора записей РС с отбором по объекту (если объект найден).Тогда, по идее, РС будет очищаться, а потом заполняться заново.
Евгений Девятов (не проверено)
пт, 29/12/2017 - 13:19
мой "объект" - одно из измерений, строковый тип; поэтому, при таком варианте после загрузки осталась бы единственная (последняя загруженная) запись.
Сделал так (копирую из ветки нимфостарта, где уже откомментился - https://infostart.ru/public/402469/):