Как настроить перенос начальных остатков в Конвертации данных 2.0?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При переносе данных между базами 1С с помощью конфигурации «Конвертация данных 2.0» часто возникает необходимость сформировать документы ввода начальных остатков в приемнике на основе остатков по регистрам источника. В этом случае физического документа-источника в исходной базе не существует, поэтому правила обмена выгружаются по произвольному алгоритму. Рассмотрим подробно, как правильно настроить правила конвертации объектов (ПКО) и правила выгрузки данных (ПВД) для такой задачи, а также разберем типичные ошибки, из-за которых возникают пустые ссылки или не заполняются реквизиты.

Сбор и передача данных табличной части через ИсходящиеДанные и ВходящиеДанные

Когда выгрузка происходит по произвольному запросу к остаткам, нам необходимо передать сформированную Таблицу Значений в документ-приемник. Проанализируем основной алгоритм передачи данных:

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

Причины появления «пустых» ссылок и битых документов в базе-приемнике

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

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

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

Разберем еще одну распространенную проблему: когда документ загружается, но колонки с характеристиками или сериями номенклатуры остаются незаполненными.

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

Если характеристики выгружаются как подчиненные справочники через произвольные данные, в ПКО характеристики необходимо также передавать ссылку на номенклатуру-владельца во ВходящиеДанные, чтобы элемент корректно записался с заполнением реквизита Владелец.

← На главную