Как найти процедуру формирования печатной формы ЭДО в 1С?

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

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

Метод 1. Использование замера производительности

Это самый эффективный и универсальный способ. Если вы не знаете, какой модуль вызывается при нажатии на кнопку просмотра, позвольте системе самой «рассказать» об этом. Разберем алгоритм действий:

  1. Откроем информационную базу в режиме Отладка.
  2. Перейдем в конфигуратор и выберем в меню пункт Отладка — Замер производительности.
  3. Вернемся в режим предприятия и нажмем кнопку, которая открывает печатную форму ЭДО (например, «Просмотреть электронный документ»).
  4. Как только форма отобразилась на экране, немедленно возвращаемся в конфигуратор и повторно нажимаем Отладка — Замер производительности (тем самым останавливая запись).

После этого перед нами откроется таблица со списком всех выполненных процедур и функций. Проанализируем её. Нам нужно искать модули, чьи названия связаны с ЭДО или печатью. Обратим внимание на колонку Количество вызовов и Чистое время. Обычно функции формирования визуализации занимают значительное время. Ищите вызовы в общих модулях ПечатьЭлектронныхДокументов или в формах, содержащих слово Просмотр.

Метод 2. Прерывание выполнения через отладчик

Если замер производительности выдает слишком много данных, в которых легко запутаться, попробуем метод «мгновенной остановки». Проанализируем этот сценарий:

  1. В режиме предприятия подготовимся к нажатию кнопки просмотра ЭДО.
  2. В конфигураторе нажмем кнопку Отладка — Остановить (синяя иконка «Пауза»).
  3. Теперь быстро нажмем на кнопку просмотра в 1С.
  4. Если система не успела мгновенно отрисовать форму, отладчик прервется на исполняемом коде.

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

Метод 3. Особенности архитектуры БЭДО и визуализация XML

Выясним причину, по которой стандартный поиск в ПриСозданииНаСервере часто не дает результатов. В ЭДО печатная форма — это не всегда ТабличныйДокумент (MXL), созданный на основе данных базы. Часто это HTML-представление, полученное путем преобразования XML-файла электронного документа.

Разберем основные точки входа, которые стоит проверить глобальным поиском (Ctrl+Shift+F):

Метод 4. Работа с внешними модулями операторов (Диадок, СБИС)

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

Рассмотрим, как это работает:

При запуске основная обработка извлекает двоичные данные из макета, сохраняет их во временный каталог на диске с расширением .epf и подключает их программно. В этом случае поиск по конфигурации ничего не даст. Чтобы найти код, вам придется:

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

Метод 5. Анализ общих форм

Посмотрим на структуру метаданных. В типовых конфигурациях за отображение документа отвечает общая форма ПросмотрЭлектронногоДокумента. Проанализируем её модуль. В ней часто вызываются серверные процедуры, которые обращаются к менеджеру документа или специализированным модулям печати.

Если вы находитесь в процедуре ПриСозданииНаСервере этой формы, обратите внимание на вызовы типа:


// Пример типичного вызова в БЭДО
ЭлектронныеДокументыСлужебный.СформироватьДанныеДляПросмотра(Контекст, Параметры);

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

Практические советы по поиску

Для ускорения процесса проанализируем ситуацию с помощью глобального поиска по следующим ключевым фразам:

  1. "ПечатьЭлектронногоДокумента" — часто встречается в именах команд.
  2. "ТипДокументаЭДО" — поиск по типам поможет найти логику распределения: какой макет для какого типа документа (УПД, Счет, Акт) использовать.
  3. "ПолучитьВизуализацию" — стандартный метод для получения представления документа.

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

Таким образом, комбинируя метод замера производительности с анализом структуры БЭДО, вы сможете обнаружить даже самый глубоко «зашитый» код формирования печатных форм электронного документооборота.

← На главную