Откуда Диадок берет печатные формы и как изменить визуализацию документов?

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

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

Природа печатной формы в электронном документообороте

Для начала проанализируем фундаментальное отличие ЭДО от бумажного документооборота. В мире 1С мы привыкли, что печатная форма — это объект типа ТабличныйДокумент, который формируется на основе макета. В системе Диадок (и ЭДО в целом) юридически значимым документом является файл формата XML, составленный по строгому регламенту ФНС. То, что мы видим на экране монитора или при печати на принтере — это лишь визуализация данных, содержащихся в этом XML-файле.

Рассмотрим, из чего состоит процесс отображения формы:

  1. XML-файл: содержит все данные (реквизиты сторон, позиции номенклатуры, суммы, налоги).
  2. XSLT-преобразование: специальный стиль (шаблон), который говорит системе, в какую ячейку таблицы поместить значение из того или иного тега XML.
  3. Рендерер: программный компонент, который объединяет XML и XSLT, выдавая на выходе картинку или PDF-файл с синим штампом подписи.

Таким образом, когда мы ищем «печатную форму» внутри модуля, мы на самом деле ищем либо алгоритм заполнения XML, либо шаблон визуализации.

Где искать макеты в модуле интеграции Диадок

Если мы используем стандартный модуль обработки от СКБ Контур, логика формирования визуализации глубоко интегрирована в код. Выясним, где именно «спрятаны» данные, если вы все же решили докопаться до истины внутри .epf файла.

Проанализируем структуру модуля:

Как советуют опытные разработчики, чтобы заглянуть внутрь, можно попробовать сохранить макет ПечатныеФормы как отдельный файл ПечатныеФормы.epf. Однако, как показывает практика, редактирование этого внутреннего файла мало что дает, так как современные версии модуля стремятся использовать серверную визуализацию.

Как изменить данные в печатной форме: правильный подход

Вместо того чтобы пытаться перерисовать саму форму (сетку таблицы), разберем, как повлиять на содержимое. В Сообщении 8 автор отмечает: «Реквизиты заполняю как хочу! А форму — никак не поменять». Это и есть ключ к решению задачи в ЭДО.

Большинство изменений, которые требуются бизнесу (изменить основание, добавить номер заказа, вывести дополнительные сведения), решаются через настройку полей в модуле Диадока. Рассмотрим, как это работает:

В модуле существует механизм сопоставления полей 1С и тегов XML-файла. Если вы хотите, чтобы в строке «Основание» выводилось «Наименование договора», а не «Номер и Дата», вам нужно не править макет, а изменить функцию, отвечающую за заполнение этого поля в структуре данных документа.

Пример логики переопределения данных перед отправкой (условно):


// Пример логики изменения данных в структуре перед отправкой
Если ИмяПоля = "Основание" Тогда
    // Вместо стандартного формирования строки из Номера и Даты
    // Берем полное наименование договора из реквизита документа
    ЗначениеПоля = ДокументОбъект.ДоговорКонтрагента.Наименование;
КонецЕсли;

Формализованные и неформализованные документы

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

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

2. Неформализованные документы (произвольные акты, счета на оплату):
Здесь у разработчика гораздо больше свободы. Модуль 1С может генерировать печатную форму прямо на стороне 1С (используя обычный табличный документ), конвертировать её в PDF и отправлять в Диадок как вложение. В этом случае вы правите обычный макет в 1С, и он будет отображаться в Диадоке именно так, как вы его сформировали.

Использование расширений и API

Современные версии модуля Диадок поддерживают механизмы расширения через события. Это позволяет внедряться в процесс формирования XML, не снимая основной модуль с поддержки. Выясним, какие этапы можно перехватить:

Разберем пример изменения логики заполнения основания через программный интерфейс модуля:


Функция ПередЗаполнениемРеквизитов(Документ1С, СтруктураРеквизитов) Экспорт
    // Изменяем основание документа для визуализации в Диадоке
    Если ТипЗнч(Документ1С) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
        СтруктураРеквизитов.Вставить("Основание", "Согласно договору №" + Документ1С.ДоговорКонтрагента.Номер);
    КонецЕсли;
КонецФункции

Резюме для разработчика

Подводя итог нашему анализу, сформулируем основные выводы для работы с печатными формами в Диадоке:

  1. Не ищите макеты: В классическом понимании их нет в модуле для формализованных документов.
  2. Меняйте XML: Все, что вы видите в «форме», берется из тегов XML-файла. Используйте настройки сопоставления полей в модуле или программные перехватчики (события) для изменения содержимого.
  3. Используйте ИПФ: Если нужно изменить саму сетку (дизайн) УПД, обращайтесь к оператору ЭДО за разработкой индивидуального визуализатора.
  4. Для счетов используйте PDF: Если вам нужен уникальный дизайн счета, формируйте его средствами 1С и отправляйте как неформализованный документ в формате PDF.

Таким образом, работа с формами в ЭДО требует перехода от мышления «рисовальщика макетов» к мышлению «архитектора данных XML». Правильное заполнение структур данных — залог того, что визуализация будет корректной и информативной для вашего контрагента.

← На главную