Как перенести счет-фактуру при синхронизации документов поступления из УПП в БП 3.0 через КД 2.1?

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

При настройке правил обмена в конфигурации «Конвертация данных 2.1» разработчики нередко сталкиваются с ситуацией: в исходной базе УПП 1.3 есть документ поступления и связанный счет-фактура, а в целевой базе «Бухгалтерия предприятия 3.0» на форме документа ПоступлениеТоваровУслуг данные о счете-фактуре упорно не появляются. Попытка напрямую сопоставить реквизит СчетФактура заходит в тупик, так как в метаданных документа-приемника такого реквизита попросту нет.

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

Выясним причину: почему счет-фактура отсутствует в объекте поступления

Проанализируем структуру документа ПоступлениеТоваровУслуг в БП 3.0 с помощью отладчика или конфигуратора. Если заглянуть в процедуру формы ПриСозданииНаСервере, мы увидим, что поля номера, даты и самого документа счета-фактуры в нижней части формы — это исключительно реквизиты формы. Они не сохраняются в объекте базы данных.

Связь между документами в БП 3.0 реализована зеркально по отношению к тому, как это выглядит визуально:

  1. Документ ПоступлениеТоваровУслуг ничего не знает о счете-фактуре на уровне реквизитов объекта.
  2. Документ СчетФактураПолученный содержит ссылку на документ поступления. При открытии формы поступления система выполняет динамический запрос и находит зарегистрированный счет-фактуру, у которого в основаниях числится текущая накладная.
  3. Если подчиненный счет-фактура найден, управляемая форма заполняет свои экранные реквизиты и отображает ссылку на документ.

Различие структур метаданных УПП 1.3 и БП 3.0

Главная сложность заключается в несовпадении структур хранения документа СчетФактураПолученный:

  1. В УПП 1.3 ссылка на накладную находится в реквизите шапки ДокументОснование.
  2. В БП 3.0 поддерживается работа со сводными счетами-фактурами (один счет-фактура на несколько поступлений). По этой причине ссылка на поступление перенесена в табличную часть ДокументыОснования (реквизит табличной части ДокументОснование).

Если выгружать реквизит ДокументОснование напрямую в шапку документа приемника, табличная часть останется пустой. В итоге документ загрузится несвязанным, и в форме поступления данные счета-фактуры не отобразятся.

Способ 1. Выгрузка счета-фактуры по отдельному ПКО через обработчик ПВД

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

В правиле выгрузки данных (ПВД) для документа ПоступлениеТоваровУслуг в обработчике ПослеВыгрузкиОбъекта обратимся к типовой функции поиска связанного счета-фактуры и вызовем его выгрузку:


СчетФактура = УчетНДС.НайтиПодчиненныйСчетФактуру(Объект, "СчетФактураПолученный");
Если ЗначениеЗаполнено(СчетФактура) Тогда
    ВыгрузитьПоПравилу(СчетФактура, , , , "СчетФактураПолученный");
КонецЕсли;

Теперь настроим само правило конвертации объектов (ПКО) для документа СчетФактураПолученный:

  1. Создадим ПКО с источником СчетФактураПолученный и приемником СчетФактураПолученный. Снимем признак «Искать объект приемника по внутреннему идентификатору», настроив поиск по полям входящего номера, даты и контрагента (или организации).
  2. Настроим правило конвертации группы свойств (ПКГС) для табличной части ДокументыОснования. Так как в источнике УПП это реквизит шапки, в обработчике ПередОбработкойПравила для группы свойств создадим коллекцию вручную:

КоллекцияОбъектов = Новый ТаблицаЗначений;
КоллекцияОбъектов.Колонки.Добавить("ДокументОснование");

СтрокаТЧ = КоллекцияОбъектов.Добавить();
СтрокаТЧ.ДокументОснование = Источник.ДокументОснование;

Для свойства ДокументОснование внутри этой группы укажем правило конвертации, соответствующее документу ПоступлениеТоваровУслуг.

Обязательно убедимся в заполнении базовых реквизитов счета-фактуры в БП 3.0:

  1. Реквизит ВидСчетаФактуры должен принимать значение перечисления ПеречислениеСсылка.ВидыСчетовФактурПолученных.НаПоступление.
  2. Реквизит КодВидаОперации заполняется строковым значением "01".
  3. Реквизиты НомерВходящегоДокумента и ДатаВходящегоДокумента переносятся из соответствующих входящих данных счета-фактуры УПП.

Способ 2. Программное создание счета-фактуры в обработчике «ПослеЗагрузки»

Если в исходной базе документы счетов-фактур не ведутся отдельно или их перенос через отдельное ПКО усложняет правила, применим альтернативный подход — создание счета-фактуры на стороне БП 3.0 в момент загрузки поступления.

В ПКО документа ПоступлениеТоваровУслуг передадим номер и дату через ПараметрыОбъекта, а в обработчике ПослеЗагрузки выполним программное создание:


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

Особенности синхронизации документов в режиме УПД

Посмотрим на ситуацию, когда поставка оформлена универсальным передаточным документом (УПД). В конфигурации БП 3.0 для этого задействован механизм согласованных флагов:

  1. В документе ПоступлениеТоваровУслуг предусмотрен реквизит УПД (тип Булево). При включении этого тумблера номер и дата автоматически синхронизируются со входящими реквизитами накладной.
  2. В документе СчетФактураПолученный также есть реквизит УПД (тип Булево).

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

← На главную