Как при переносе данных из УПП в Бухгалтерию 3.0 создать несколько документов на основе одного?

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

При переносе данных из УПП в Бухгалтерию 3.0 часто возникают ситуации, когда структура документов в конфигурациях не совпадает. Одной из типичных задач является конвертация документа Выплата через банк подотчетникам, который содержит список сотрудников, в несколько документов Списание с расчетного счета в Бухгалтерии. Разберем по шагам, как реализовать этот механизм с помощью Конвертации данных 2.0.

Понимание механизма разделения объектов

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

Реализация логики в правилах выгрузки

Для решения задачи мы будем использовать обработчик Перед выгрузкой в ПВД (Правилах выгрузки данных). Именно здесь мы перехватываем процесс выгрузки и создаем нужное количество документов.

  1. Выборка данных: В обработчике мы делаем запрос к табличной части документа УПП, чтобы получить всех подотчетных лиц и суммы.
  2. Цикл выгрузки: В цикле мы вызываем метод ВыгрузитьПоПравилу() для каждого найденного подотчетника.
  3. Присвоение ключа: При вызове метода мы передаем КлючВыгружаемыхДанных, который уникально связывает наш документ-источник и конкретную строку (подотчетника).

Рассмотрим пример кода, который нужно разместить в ПВД:


// Пример логики в обработчике Перед выгрузкой ПВД
ВыборкаСтрок = Источник.Подотчетники;
Для Каждого СтрокаТЧ Из ВыборкаСтрок Цикл
    // Создаем ключ, уникальный для данной пары
    Ключ = Новый Структура(\"СсылкаНаДокумент, Подотчетник\", Источник.Ссылка, СтрокаТЧ.Подотчетник);
    
    // Выгружаем документ, передавая сформированный ключ
    ВыгрузитьПоПравилу(Источник, , Ключ, , \"ВашеИмяПравилаКонвертации\");
КонецЦикла;

// Важно: отменяем стандартную выгрузку, так как мы сделали ее вручную
Отказ = Истина;

Зачем нужен КлючВыгружаемыхДанных?

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

Связь с Авансовым отчетом

Вторая часть проблемы — как указать нужный документ списания в Авансовом отчете в Бухгалтерии. Поскольку мы программно создали несколько документов списания, теперь для каждого из них в Бухгалтерии есть своя ссылка. При выгрузке Авансового отчета вам нужно будет найти соответствующий документ Списание с расчетного счета, опираясь на тот же КлючВыгружаемыхДанных, который вы использовали при выгрузке.

В обработчике После загрузки или в правилах конвертации свойств (ПКС) вы можете выполнить поиск созданного ранее объекта по ключу. Если ключ был передан корректно, система без труда найдет нужный документ Списание с расчетного счета и подставит его в соответствующее поле Авансового отчета.

Подведем итоги работы

Работа с механизмом «один ко многим» требует внимательного отношения к идентификаторам объектов. Помните следующие правила:

Этот подход является стандартным для Конвертации данных 2.0 и позволяет гибко решать задачи трансформации данных любой сложности, сохраняя при этом целостность учета при переходе с УПП на Бухгалтерию 3.0.

← На главную