Как заполнить реквизит «Хозяйственная операция» при переносе документов из УПП в КА 2?

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

При настройке обмена данными между историческими конфигурациями и современными решениями 1С часто возникают не только технические, но и методологические сложности. Разберем типичную задачу: перенос документа «Поступление товаров и услуг» из конфигурации «Управление производственным предприятием» (УПП) в конфигурацию «Комплексная автоматизация 2» (КА 2) или ERP.

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

Анализ методологических отличий УПП и КА 2

Прежде чем приступать к написанию кода в правилах обмена, проанализируем, как изменилась концепция учета. В УПП документ поступления был универсальным: в нем можно было отразить приход ТМЦ, услуг и даже объектов строительства. В КА 2 подход кардинально изменился. Разберем эти отличия по шагам:

  1. Разделение сущностей: Если в УПП вы приходовали физические запасы, в КА 2 это ложится в документ «Приобретение товаров и услуг». Однако, если приходуются услуги или активы (например, поступление на счет 08.04.2), корректнее конвертировать такие данные в совершенно другой документ — «Приобретение услуг и прочих активов».
  2. Закупка через подотчет: В УПП приобретение товаров подотчетным лицом часто фиксировалось непосредственно в табличной части документа «Авансовый отчет». В КА 2 логика иная: для этого создается отдельный документ приобретения с хозяйственной операцией ЗакупкаЧерезПодотчетноеЛицо, который затем привязывается к авансовому отчету.

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

Техническое решение в Конвертации Данных 2

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

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

Пример программного кода для обработчика ПКС

Рассмотрим конкретный пример реализации. Нам нужно проанализировать реквизиты документа-источника (УПП) и динамически определить, какую строку передать в приемник.

Откроем правило конвертации свойства ХозяйственнаяОперация и в обработчике «Перед выгрузкой» напишем следующий код:


Если Источник.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентом Тогда
    Значение = "ПриемНаКомиссию";
Иначе
    Значение = "ЗакупкаУПоставщика";
КонецЕсли;

Разберем логику этого скрипта. Если в документе УПП выбран договор с видом «С комитентом», мы присваиваем переменной Значение строку "ПриемНаКомиссию". В остальных базовых случаях устанавливаем "ЗакупкаУПоставщика".

Для более сложных сценариев этот код можно и нужно расширять. Проанализируем дополнительные условия, которые могут вам понадобиться:


Если Источник.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ВПереработку Тогда
    Значение = "ПриемВПереработку";
ИначеЕсли Источник.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентом Тогда
    Значение = "ПриемНаКомиссию";
Иначе
    // Для импортных поставок можно добавить проверку ставки НДС или признака в договоре
    Значение = "ЗакупкаУПоставщика";
КонецЕсли;

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

← На главную