Как правильно настраивать флаги в Правилах конвертации свойств (ПКС) в 1С:Конвертация данных 2.1?

Программист IT и автоматизация бизнеса
← На главную

При работе в конфигурации «Конвертация данных 2.1» после автоматической синхронизации свойств объектов неизбежно возникают вопросы: ставить ли флаги выгрузки напротив реквизитов и табличных частей, если реквизит присутствует в приемнике, но отсутствует в источнике? Затрет ли пустое значение существующие данные в приемнике? Разберем подробно механику работы Правил конвертации свойств (ПКС) и нюансы установки флагов.

Поведение системы при отсутствии реквизита в источнике

Рассмотрим ситуацию, когда в структуре базы-приемника реквизит есть, а в базе-источнике аналогичного реквизита нет.

В этой ситуации возможны два основных варианта настройки флага ПКС:

  1. Флаг выгрузки снят (отключен): При загрузке данных в базу-приемник данный реквизит вообще не затрагивается. Если объект в приемнике уже существовал, значение его реквизита останется неизменным. Пустое значение ничего не перетирает, так как данные по данному свойству в файл выгрузки не попадают.
  2. Флаг выгрузки установлен: Если источник пуст и дополнительный код в обработчиках не написан, реквизит просто не выгрузится, и значение в приемнике также не будет перезаписано. Однако установленный флаг позволяет программно сформировать значение для этого реквизита прямо в процессе переноса.

Способы заполнения реквизита при отсутствии источника

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

1. Заполнение через обработчик «Перед выгрузкой» в ПКС

Если для реквизита включен флаг ПКС, мы можем прописать логику формирования значения в событии Перед выгрузкой данного правила:

Присвоение явного значения на стороне источника:

Значение = "Основной";

Или вычисление выражения на стороне приемника в момент загрузки:

Выражение = "Справочники.Организации.ОсновнаяОрганизация";

2. Использование входящих данных

В настройках ПКС можно включить флаг Получить из входящих данных. В этом случае значение передается из вышестоящего правила (ПВД или ПКО) через структуру ВходящиеДанные.

3. Заполнение на стороне приемника в обработчиках ПКО

Если ПКС для реквизита не создано или отключено, заполнить реквизит объекта можно в обработчиках ПКО При загрузке или После загрузки напрямую:

Объект.ИмяРеквизита = НужноеЗначение;

Особенности выгрузки табличных частей

Посмотрим, как функционируют флаги для табличных частей объектов:

  1. Флаг табличной части выключен: Табличная часть приемника не перезаписывается при переносе объекта и остается в том состоянии, в котором была в базе-приемнике.
  2. Флаг табличной части включен: По умолчанию при загрузке объекта табличная часть приемника полностью очищается и перезаполняется строками из файла выгрузки. Если табличная часть в источнике пуста, в приемнике она также будет очищена.

Чтобы избежать очистки табличной части при включенной конвертации, в настройках ПКО можно установить флаг «Не замещать табличные части при загрузке» или прописать алгоритм объединения строк в обработчиках загрузки.

Дополнительные флаги и настройки ПКС

Выясним назначение других важных флагов в табличной части правил конвертации свойств:

  1. «Не замещать значение свойства приемника, если оно заполнено»: Обеспечивает сохранность данных в приемнике. Если в целевой базе реквизит уже заполнен, выгруженная информация из источника его не перезапишет.
  2. «Поиск» («Искать объект по этому свойству»): Указывает платформе использовать данный реквизит для поиска существующего объекта в базе-приемнике (если сопоставление по УИД не дало результатов или отключено).
  3. «Отключить»: Позволяет временно исключить правило конвертации свойства из процесса выгрузки и загрузки без удаления строки из структуры правил.
  4. «Передавать данные в параметр»: Выгружает значение реквизита не в сам реквизит приёмника, а в структуру ПараметрыОбъекта. На стороне приёмника значение считывается в обработчике После загрузки:

ЗначениеПараметра = ПараметрыОбъекта["ИмяПараметра"];

Таким образом, если реквизит отсутствует в источнике и его не нужно заполнять специальным значением, флаг выгрузки можно оставить выключенным — данные в базе-приемнике не затрутся.

← На главную