Как заполнить строку 5б в Диадоке через подключаемый модуль в 1С:Бухгалтерия 3.0?

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

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

Выясним причину проблемы: форматы 820 и 970

Прежде всего, разберем техническую подоплеку. Строка 5б в том виде, в котором она требуется современным законодательством, полноценно реализована в формате 970 (приказ ФНС № ЕД-7-26/970@). В более старом формате 820 структура данных отличалась. Если ваша обработка «Диадок» работает в режиме совместимости, она может пытаться сформировать документ по структуре 820-го формата, а затем «на лету» конвертировать его в 970-й. В процессе этой конвертации данные об авансово-расчетных документах (строка 5б) часто теряются.

Проанализируем ситуацию: в 1С данные в табличной части «Платежно-расчетные документы» заполнены, но в самом Диадоке строка 5б пуста. Это верный признак того, что либо модуль работает в старом режиме совместимости, либо подключаемый модуль перехватывает управление и не заполняет соответствующую коллекцию XDTO-объекта.

Шаг 1. Настройка режима совместимости форматов

Первым делом нам необходимо проверить настройки интеграции в самой базе 1С. Рассмотрим порядок действий:

  1. Перейдем в раздел Администрирование или воспользуемся поиском по всем функциям.
  2. Найдем регистр сведений «Дополнительные сведения» (или аналогичный регистр настроек Диадока, в зависимости от версии модуля).
  3. Нам необходимо найти запись с именем DDPro_РежимСовместимостиФорматов820и970.
  4. Если значение установлено в «Авто», модуль может продолжать использовать логику старого формата. Установим значение в «НеИспользуется».

Важный момент: Отключение режима совместимости заставляет систему работать с прямой структурой формата 970 (Utd970SellerContent). Это необходимо для корректного отображения строки 5б, но это же изменение может «сломать» работу старых подключаемых модулей, которые обращаются к полям, специфичным для 820-го формата.

Шаг 2. Адаптация подключаемого модуля (ПМ)

Если после смены режима совместимости подключаемый модуль перестал загружать дополнительные сведения (например, ИнфПолФХЖ1), значит, код модуля требует доработки под формат 970. Разберем, как программно обратиться к коллекции авансовых документов.

В подключаемом модуле за формирование контента отвечает функция ПодготовитьЭлектронныйДокумент. Проанализируем пример кода для заполнения строки 5б (коллекция AccompanyingDocuments) и строки 5а (коллекция DocumentShipments):


// Формирование контента на основании ссылки на документ в 1С
Функция ПодготовитьЭлектронныйДокумент(Параметры)
    
    Content = Параметры.Content;
    Источник = Параметры.Документ; // Ссылка на Счет-фактуру или УПД в 1С
    
    // Проверяем, что работаем с форматом 970
    Если ВРЕГ(Параметры.ТипКонтента) = ВРЕГ("Utd970SellerContent") Тогда
        
        // Заполнение строки 5а (Документы об отгрузке)
        Если Content.DocumentShipments.Количество() > 0 Тогда
            // Например, принудительно устанавливаем наименование
            Content.DocumentShipments[0].Name = "УПД";
        КонецЕсли;
        
        // Заполнение строки 5б (Авансово-расчетные документы)
        // В формате 970 это коллекция AccompanyingDocuments
        Если Источник.ПлатежноРасчетныеДокументы.Количество() > 0 Тогда
            
            // Очистим коллекцию перед заполнением, если это необходимо
            Content.AccompanyingDocuments.Очистить();
            
            Для Каждого СтрокаПлатежа Из Источник.ПлатежноРасчетныеДокументы Цикл
                НовыйДок = Content.AccompanyingDocuments.Добавить();
                НовыйДок.Number = СтрокаПлатежа.НомерПлатежноРасчетногоДокумента;
                НовыйДок.Date = СтрокаПлатежа.ДатаПлатежноРасчетногоДокумента;
                // Поле Name обычно заполняется как "п/п" или "платежное поручение"
                НовыйДок.Name = "п/п"; 
            КонецЦикла;
            
        КонецЕсли;
        
    КонецЕсли;

КонецФункции

Шаг 3. Обработка дополнительных сведений

Рассмотрим ситуацию, когда после переключения в режим 970 перестали загружаться пользовательские поля (доп. сведения). Это происходит потому, что в 970 формате структура AdditionalInfo может отличаться или называться иначе. Проверим в отладчике объект Параметры.Content — для этого подойдёт инструмент пошаговой отладки кода в режиме 1С:Предприятие.

Для корректной передачи произвольных полей (ИнфПолФХЖ) в новом формате убедитесь, что вы обращаетесь к правильным узлам. Обычно это коллекция AdditionalInformation (или AdditionalInfoId), в зависимости от того, на каком уровне (всего документа или конкретной строки) вы хотите добавить данные.

Посмотрим на типичные ошибки

Проанализируем основные грабли, на которые наступают разработчики при заполнении строки 5б:

  1. Пустая таблица в 1С: Если в документе «Счет-фактура выданный» на вкладке «Платежно-расчетные документы» пусто, модуль Диадока по умолчанию ничего не передаст. Всегда проверяйте заполнение первичных данных в базе.
  2. Несоответствие типов: В XDTO-модели Диадока дата должна передаваться в определенном строковом формате или как объект даты. Если вы передаете пустую дату, документ может не пройти валидацию.
  3. Использование устаревшей обработки: Убедитесь, что основная обработка «Диадок» обновлена до актуальной версии (не ниже 5.40). В старых версиях логика работы с форматом 970 реализована не полностью, что вызывает конфликты с ПМ — для этой задачи есть обработка формирования XML-файлов УПД и УКД по форматам ФНС.

Резюме

Для того чтобы строка 5б отображалась в Диадоке при использовании подключаемого модуля, необходимо выполнить комплекс действий. Сначала переключаем режим совместимости в регистре настроек на «НеИспользуется». Затем адаптируем код ПМ, заменяя логику формирования Utd820SellerContent на Utd970SellerContent. Особое внимание уделяем коллекции AccompanyingDocuments, которая и отвечает за вывод данных об авансах в печатную форму электронного документа.

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

← На главную