Как при выгрузке РКО в Конвертации данных 2.0 установить фиксированную статью ДДС по коду в 1С:Бухгалтерия

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

При разработке правил обмена в конфигурации Конвертация данных 2.0 часто возникает задача подставить в загружаемый документ определенный элемент справочника, которого физически нет в информационной базе-источнике. Типичный пример — выгрузка документов РасходныйКассовыйОрдер (РКО) или ПриходныйКассовыйОрдер (ПКО), когда в источнике ведется укрупненная аналитика (например, всего 5 статей), а в приемнике (типовой конфигурации 1С:Бухгалтерия) требуется детальный учет по конкретному коду статьи ДДС.

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

Выясняем причину: почему статья ДДС не реквизит шапки

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

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

Решение 1. Заполнение табличной части и субконто счета в обработчике «После загрузки»

Если в базе-источнике нет нужной статьи ДДС и поиск необходимо выполнить исключительно на стороне приемника по известному коду (например, 000000006), наиболее простым и надежным способом является написание кода в обработчике ПослеЗагрузки для ПКО документа РасходныйКассовыйОрдер.

Разберем по шагам, что должен делать обработчик:

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

Пример кода для обработчика ПослеЗагрузки ПКО документа РКО:


// Находим целевую статью в базе-приемнике
СтатьяЦелевая = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("000000006");

Если ЗначениеЗаполнено(СтатьяЦелевая) Тогда
    // 1. Заполняем реквизит в табличной части
    Если Объект.РасшифровкаПлатежа.Количество() > 0 Тогда
        Объект.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств = СтатьяЦелевая;
    КонецЕсли;
    
    // 2. Устанавливаем аналитику на счете дебета (для вида операции "Инкассация" и др.)
    Объект.СубконтоДт1 = СтатьяЦелевая;
    
    // При необходимости заполняем реквизит шапки, если он присутствует в метаданных
    Если Метаданные.Документы.РасходныйКассовыйОрдер.Реквизиты.Найти("СтатьяДвиженияДенежныхСредств") <> Неопределено Тогда
        Объект.СтатьяДвиженияДенежныхСредств = СтатьяЦелевая;
    КонецЕсли;
КонецЕсли;

Обратите внимание: в обработчике ПослеЗагрузки вызывать метод Объект.Записать() не нужно — платформа 1С выполнит запись объекта автоматически после завершения работы события.

Решение 2. Передача жестко заданного кода через ПКС при выгрузке

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

Для этого выполним следующие настройки в конфигурации Конвертация данных:

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

При таком подходе в файл выгрузки XML запишется конструкция, содержащая код 000000006. При загрузке обработчик конвертации выполнит поиск элемента по коду в приемнике и подставит найденный объект в документ.

Важные рекомендации при работе с кодами и субконто

← На главную