При работе в конфигурации «Конвертация данных 2.1» после автоматической синхронизации свойств объектов неизбежно возникают вопросы: ставить ли флаги выгрузки напротив реквизитов и табличных частей, если реквизит присутствует в приемнике, но отсутствует в источнике? Затрет ли пустое значение существующие данные в приемнике? Разберем подробно механику работы Правил конвертации свойств (ПКС) и нюансы установки флагов.
Рассмотрим ситуацию, когда в структуре базы-приемника реквизит есть, а в базе-источнике аналогичного реквизита нет.
В этой ситуации возможны два основных варианта настройки флага ПКС:
Проанализируем ситуации, когда реквизита в источнике нет, но в приемнике его необходимо заполнить значением по умолчанию или вычислить алгоритмически.
1. Заполнение через обработчик «Перед выгрузкой» в ПКС
Если для реквизита включен флаг ПКС, мы можем прописать логику формирования значения в событии Перед выгрузкой данного правила:
Присвоение явного значения на стороне источника:
Значение = "Основной";
Или вычисление выражения на стороне приемника в момент загрузки:
Выражение = "Справочники.Организации.ОсновнаяОрганизация";
2. Использование входящих данных
В настройках ПКС можно включить флаг Получить из входящих данных. В этом случае значение передается из вышестоящего правила (ПВД или ПКО) через структуру ВходящиеДанные.
3. Заполнение на стороне приемника в обработчиках ПКО
Если ПКС для реквизита не создано или отключено, заполнить реквизит объекта можно в обработчиках ПКО При загрузке или После загрузки напрямую:
Объект.ИмяРеквизита = НужноеЗначение;
Посмотрим, как функционируют флаги для табличных частей объектов:
Чтобы избежать очистки табличной части при включенной конвертации, в настройках ПКО можно установить флаг «Не замещать табличные части при загрузке» или прописать алгоритм объединения строк в обработчиках загрузки.
Выясним назначение других важных флагов в табличной части правил конвертации свойств:
ПараметрыОбъекта. На стороне приёмника значение считывается в обработчике После загрузки:
ЗначениеПараметра = ПараметрыОбъекта["ИмяПараметра"];
Таким образом, если реквизит отсутствует в источнике и его не нужно заполнять специальным значением, флаг выгрузки можно оставить выключенным — данные в базе-приемнике не затрутся.