В современных конфигурациях 1С, построенных на базе Библиотеки электронных документов (БЭДО), поиск кода, отвечающего за вывод печатной формы, часто превращается в настоящий квест. В отличие от классических документов, где печатная форма привязана к менеджеру объекта, в ЭДО визуализация документа может генерироваться динамически из XML-данных, использовать XSLT-трансформации или вообще подтягиваться из внешних обработок оператора. Рассмотрим пошагово, как вычислить нужную процедуру.
Это самый эффективный и универсальный способ. Если вы не знаете, какой модуль вызывается при нажатии на кнопку просмотра, позвольте системе самой «рассказать» об этом. Разберем алгоритм действий:
После этого перед нами откроется таблица со списком всех выполненных процедур и функций. Проанализируем её. Нам нужно искать модули, чьи названия связаны с ЭДО или печатью. Обратим внимание на колонку Количество вызовов и Чистое время. Обычно функции формирования визуализации занимают значительное время. Ищите вызовы в общих модулях ПечатьЭлектронныхДокументов или в формах, содержащих слово Просмотр.
Если замер производительности выдает слишком много данных, в которых легко запутаться, попробуем метод «мгновенной остановки». Проанализируем этот сценарий:
Если форма открывается слишком быстро, сначала нажмите кнопку просмотра, а когда появится индикатор загрузки («Ожидание»), жмите «Остановить» в конфигураторе. Проанализировав стек вызовов, мы увидим всю цепочку процедур, приведших к открытию формы.
Выясним причину, по которой стандартный поиск в ПриСозданииНаСервере часто не дает результатов. В ЭДО печатная форма — это не всегда ТабличныйДокумент (MXL), созданный на основе данных базы. Часто это HTML-представление, полученное путем преобразования XML-файла электронного документа.
Разберем основные точки входа, которые стоит проверить глобальным поиском (Ctrl+Shift+F):
ПечатьЭлектронныхДокументов, ЭлектронныеДокументыСлужебный и ЭлектронныеДокументыПерезаполнение.СформироватьВизуализациюЭлектронногоДокумента. Она является ключевой для БЭДО.ЧтениеXML и метода ПреобразоватьXSLT.Ситуация усложняется, если вы используете внешнюю обработку от оператора ЭДО (например, Диадок). В таких решениях основной функционал часто вынесен во вспомогательные обработки, которые хранятся прямо внутри макетов основной обработки в виде двоичных данных.
Рассмотрим, как это работает:
При запуске основная обработка извлекает двоичные данные из макета, сохраняет их во временный каталог на диске с расширением .epf и подключает их программно. В этом случае поиск по конфигурации ничего не даст. Чтобы найти код, вам придется:
ПолучитьМакет и Записать во временный файл)..epf файлы.Посмотрим на структуру метаданных. В типовых конфигурациях за отображение документа отвечает общая форма ПросмотрЭлектронногоДокумента. Проанализируем её модуль. В ней часто вызываются серверные процедуры, которые обращаются к менеджеру документа или специализированным модулям печати.
Если вы находитесь в процедуре ПриСозданииНаСервере этой формы, обратите внимание на вызовы типа:
// Пример типичного вызова в БЭДО
ЭлектронныеДокументыСлужебный.СформироватьДанныеДляПросмотра(Контекст, Параметры);
Именно внутри таких «служебных» процедур происходит обращение к хранилищу документов, получение тела XML и его последующая конвертация в печатный вид. Если вы видите использование ПолеHTMLДокумента, значит, ищите формирование HTML-строки.
Для ускорения процесса проанализируем ситуацию с помощью глобального поиска по следующим ключевым фразам:
"ПечатьЭлектронногоДокумента" — часто встречается в именах команд."ТипДокументаЭДО" — поиск по типам поможет найти логику распределения: какой макет для какого типа документа (УПД, Счет, Акт) использовать."ПолучитьВизуализацию" — стандартный метод для получения представления документа.Не забывайте проверять расширения конфигурации. Если логика ЭДО была изменена программистами вашей компании, то нужный код может находиться в расширении, перекрывая стандартные методы с помощью аннотаций &Вместо, &После или &Перед. В окне поиска обязательно устанавливайте область поиска «Во всей конфигурации и расширениях».
Таким образом, комбинируя метод замера производительности с анализом структуры БЭДО, вы сможете обнаружить даже самый глубоко «зашитый» код формирования печатных форм электронного документооборота.