При работе с электронным документооборотом (ЭДО) через сервис «Диадок» пользователи часто сталкиваются с необходимостью корректного заполнения строки 5б («К расчетно-платежному документу») в счетах-фактурах или УПД — в этом поможет модуль организации юридически значимого ЭДО в 1С. Особенно остро этот вопрос встает при автоматизации процесса через подключаемые модули (ПМ), когда стандартные механизмы 1С:Бухгалтерии 3.0 по каким-то причинам не передают данные в Диадок в нужном формате. Рассмотрим подробно, как решить эту задачу, настроить конфигурацию и адаптировать программный код.
Прежде всего, разберем техническую подоплеку. Строка 5б в том виде, в котором она требуется современным законодательством, полноценно реализована в формате 970 (приказ ФНС № ЕД-7-26/970@). В более старом формате 820 структура данных отличалась. Если ваша обработка «Диадок» работает в режиме совместимости, она может пытаться сформировать документ по структуре 820-го формата, а затем «на лету» конвертировать его в 970-й. В процессе этой конвертации данные об авансово-расчетных документах (строка 5б) часто теряются.
Проанализируем ситуацию: в 1С данные в табличной части «Платежно-расчетные документы» заполнены, но в самом Диадоке строка 5б пуста. Это верный признак того, что либо модуль работает в старом режиме совместимости, либо подключаемый модуль перехватывает управление и не заполняет соответствующую коллекцию XDTO-объекта.
Первым делом нам необходимо проверить настройки интеграции в самой базе 1С. Рассмотрим порядок действий:
DDPro_РежимСовместимостиФорматов820и970.Важный момент: Отключение режима совместимости заставляет систему работать с прямой структурой формата 970 (Utd970SellerContent). Это необходимо для корректного отображения строки 5б, но это же изменение может «сломать» работу старых подключаемых модулей, которые обращаются к полям, специфичным для 820-го формата.
Если после смены режима совместимости подключаемый модуль перестал загружать дополнительные сведения (например, ИнфПолФХЖ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 = "п/п";
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецФункции
Рассмотрим ситуацию, когда после переключения в режим 970 перестали загружаться пользовательские поля (доп. сведения). Это происходит потому, что в 970 формате структура AdditionalInfo может отличаться или называться иначе. Проверим в отладчике объект Параметры.Content — для этого подойдёт инструмент пошаговой отладки кода в режиме 1С:Предприятие.
Для корректной передачи произвольных полей (ИнфПолФХЖ) в новом формате убедитесь, что вы обращаетесь к правильным узлам. Обычно это коллекция AdditionalInformation (или AdditionalInfoId), в зависимости от того, на каком уровне (всего документа или конкретной строки) вы хотите добавить данные.
Проанализируем основные грабли, на которые наступают разработчики при заполнении строки 5б:
Для того чтобы строка 5б отображалась в Диадоке при использовании подключаемого модуля, необходимо выполнить комплекс действий. Сначала переключаем режим совместимости в регистре настроек на «НеИспользуется». Затем адаптируем код ПМ, заменяя логику формирования Utd820SellerContent на Utd970SellerContent. Особое внимание уделяем коллекции AccompanyingDocuments, которая и отвечает за вывод данных об авансах в печатную форму электронного документа.
Следуя этим шагам, мы обеспечим корректное формирование документов в соответствии с требованиями законодательства и сохраним гибкость управления данными через подключаемый модуль.