Переход на новый формат электронного УПД (Приказ ФНС № ЕД-7-26/970@), который становится обязательным с апреля 2025 года, заставил многих разработчиков столкнуться с обновленной архитектурой интеграционных модулей Диадок. В современных версиях обработки (начиная с 4.50 и выше) привычная структура была значительно переработана, превратившись в сложную многоуровневую систему («матрешку»). Разберем подробно, как ориентироваться в этой структуре, где искать код формирования XML и как правильно вносить изменения, чтобы они не «слетели» при следующем обновлении.
Проанализируем, как устроена основная обработка Диадок. Раньше вся логика для конфигураций на обычных формах (например, УПП 1.3) находилась в модуле КонтурДиадокСтандартОФ. Теперь же разработчики Контура перешли к универсальной схеме, где основная обработка является лишь оболочкой, а вся бизнес-логика хранится в макетах. Рассмотрим основные уровни этой системы:
КонтурДиадокИнтеграцияУТ11. Именно в этих модулях прописаны правила сопоставления полей документов 1С и реквизитов электронного документа.КонтурДиадокГенерацияXML и КонтурДиадокПечатныеФормы отвечают за финальное преобразование собранных данных в формат XML или PDF.Выясним причину, по которой поиск по тексту «970» в основной обработке может не давать результатов: код физически находится внутри макетов, которые загружаются в память динамически при запуске программы.
Для того чтобы увидеть реальный код, работающий «под капотом», воспользуемся встроенными средствами тестирования. Пройдем по шагам процесс активации режима разработки:
После включения этого режима обработка предложит выгрузить содержимое макетов во внешние файлы (.epf). Сохраним их в отдельную папку. Теперь мы можем открыть их через конфигуратор и выполнить глобальный поиск по строке 970.
Разберем, где именно происходит сбор данных для нового формата. Если мы работаем с современными версиями обработки, нам необходимо найти макет интеграции, соответствующий нашей конфигурации. Например, в модуле КонтурДиадокИнтеграцияУТ11 (или аналогичном для вашей системы) следует искать специализированную область кода.
Проанализируем структуру процедур:
#Область УПД970
#Область УПД970_СборКонтентаПоДокументамУчета
Процедура ЗаполнитьКонтентInvoice(...)
// Здесь происходит основное заполнение данных для Счета-фактуры и УПД
КонецПроцедуры
Если ваша задача — изменить данные, которые уходят в файл (например, адрес грузополучателя, как обсуждалось в сообщении 17), вам нужно вмешаться в процесс до того, как данные будут переданы в модуль КонтурДиадокГенерацияXML. В этот момент данные обычно представлены в виде сложных структур 1С (Структура или Соответствие).
Часто разработчики сталкиваются с ситуацией: код в макете изменен, обработка перезагружена, но система продолжает работать по-старому. Это происходит из-за того, что Диадок извлекает макеты во временные файлы операционной системы (папка %TEMP%) и держит их там в течение всего сеанса работы пользователя.
Рассмотрим, как гарантированно применить изменения:
Diadoc_ или Kontur_, однако закрытие 1С обычно решает эту проблему автоматически, так как временные объекты освобождаются.Вместо того чтобы править «матрешки» внутри основной обработки и каждый раз при обновлении заново переносить код, Диадок предлагает механизм Подключаемых модулей. Это внешняя обработка (.epf), которая подключается в настройках и позволяет перехватывать события формирования документов.
Посмотрим на пример логики, которую можно реализовать в подключаемом модуле для изменения адреса грузополучателя:
Функция ПослеЗаполненияДанныхУПД(ДанныеУПД, ДокументОбъект) Экспорт
// Проверяем, что это нужный нам формат
Если ДанныеУПД.Формат = "970" Тогда
// Подменяем адрес доставки из фактического адреса контрагента
ДанныеУПД.Грузополучатель.Адрес = ПолучитьФактАдрес(ДокументОбъект.Контрагент);
КонецЕсли;
Возврат ДанныеУПД;
КонецФункции
Преимущества использования ПМ:
Подводя итог, отметим: если вы работаете с УПП 1.3 или другими старыми конфигурациями, не ищите логику 970 формата в модулях с суффиксом ОФ. Современный Диадок использует универсальные интеграционные модули, доступ к которым открывается через режим отладки или использование подключаемых модулей. Рекомендуем освоить механизм ПМ, так как это сэкономит десятки часов при регулярных обновлениях форматов ФНС.