Как правильно управлять последовательностью формирования документов при обмене в КД2?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет Торговля и дистрибуция
← На главную

В процессе разработки правил обмена между конфигурациями 1С, например, при переносе данных из УТ 10.3 в БП 3.0, часто возникает задача формирования зависимых документов в строгой последовательности. Основная ошибка при решении этой задачи заключается в попытке управлять очередностью через ПВД (Правила Выгрузки Данных) на стороне источника. Давайте разберем, почему это происходит и как правильно реализовать создание зависимых объектов, таких как документ Операция, после загрузки Поступления на расчетный счет.

Понимание архитектуры обмена

Важно помнить, что ПВД в КД2 предназначены исключительно для выбора объектов, которые должны быть выгружены из базы-источника. На стороне приемника механизмы выгрузки не работают — там действуют механизмы загрузки. Попытки влиять на порядок создания документов через параметры Порядок в ПВД часто приводят к непредсказуемым результатам, так как физическая запись объектов в базу происходит по мере обработки файла обмена.

Решение 1: Использование события «После загрузки» в ПКО

Если вам необходимо, чтобы документ Операция создавался сразу после того, как был записан документ-основание (например, Поступление на расчетный счет), лучше всего использовать обработчик ПослеЗагрузки в ПКО (Правиле Конвертации Объектов) для этого конкретного документа. В этом событии объект уже записан, его реквизиты доступны, и вы можете гарантированно инициировать создание связанных данных.

Рассмотрим пример реализации кода для события ПослеЗагрузки в ПКО:


// В обработчике ПослеЗагрузки объекта ПоступлениеНаРасчетныйСчет
Если НЕ ОбъектНайден Тогда
    // Создаем документ Операция
    НоваяОперация = Документы.ОперацияБух.СоздатьДокумент();
    НоваяОперация.Дата = Объект.Дата;
    НоваяОперация.Организация = Объект.Организация;
    // ... заполнение прочих реквизитов ...
    НоваяОперация.Записать();
КонецЕсли;

Решение 2: Использование глобального обработчика «После загрузки данных»

В случае, если логика формирования Операции требует накопления данных по нескольким документам Поступление на расчетный счет или если нужно убедиться, что весь пакет данных загружен корректно, следует воспользоваться глобальным событием ПослеЗагрузкиДанных. Этот обработчик выполняется один раз по завершении процесса обработки всего файла обмена.

Разберем этапы реализации этого подхода:

  1. При загрузке документов Поступление на расчетный счет накапливайте их ссылки в массив или таблицу значений, используя параметры сеанса или глобальные переменные.
  2. В обработчике ПослеЗагрузкиДанных переберите полученный массив.
  3. Для каждого элемента массива выполните формирование необходимых документов Операция.

Такой подход обеспечивает высокую надежность, так как вы работаете с уже полностью загруженными данными, что исключает риск «отсутствия» ссылочных объектов в базе приемника.

Почему не стоит создавать ПВД без ПКО для этой задачи?

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

Рекомендации по автоматизации

Следуя этим простым шагам, вы сможете выстроить надежный процесс обмена данными, где все связанные документы будут создаваться в нужной последовательности, обеспечивая актуальность взаиморасчетов в вашей учетной системе.

← На главную