Разработка внешних печатных форм (ВПФ) в среде 1С:Предприятие 8.3 — задача стандартная, но процесс их отладки часто ставит в тупик даже опытных разработчиков. Типичная ситуация: когда мы открываем обработку через Файл — Открыть, отладчик прекрасно отрабатывает все точки останова. Однако стоит подключить ту же самую обработку в справочник Дополнительные отчеты и обработки, как отладчик начинает игнорировать код. Рассмотрим подробнее, почему это происходит и какими методами можно добиться остановки в нужном месте кода.
Для начала проанализируем ситуацию: почему поведение системы меняется? Когда мы запускаем ВПФ через меню Файл — Открыть, платформа работает напрямую с файлом .epf на диске. В этом случае путь к файлу в конфигураторе и путь исполняемого кода совпадают.
Когда же ВПФ зарегистрирована в системе (в составе БСП — Библиотеки стандартных подсистем), механизм работы радикально меняется. Программа выполняет следующие действия:
AppData\Local\Temp).v8_2345_12.epf).Важный момент: точки останова, расставленные вами в исходном файле МояПечатнаяФорма.epf, никак не связаны с временным файлом, который создала система. Для конфигуратора это два абсолютно разных объекта.
Прежде чем приступать к программным хитростям, проверим базовые настройки. В современных версиях 1С:Управление торговлей 11.5 печать практически всегда выполняется на стороне сервера. Если у вас клиент-серверный вариант базы, отладчик не остановится, если сервер не переведен в специальный режим.
Выясним, включена ли отладка на сервере. Для этого убедимся, что служба сервера «1С:Предприятия» запущена с ключом -debug. Если этот параметр отсутствует, серверный код будет выполняться без возможности прерывания отладчиком.
Также пройдем в меню конфигуратора Отладка — Установка предметов отладки. Нам нужно убедиться, что в списке типов подключений активны пункты Сервер и Фоновые задания. Без включения отладки фоновых заданий мы не сможем «поймать» момент формирования печатной формы, если система отправляет задачу на печать в фоновом режиме.
Рассмотрим пошагово метод, который позволяет использовать стандартные точки останова даже в подключенной ВПФ:
ДополнительныеОтчетыИОбработки).ПодключитьВнешнююОбработку() или перед выполнением команды.Помните: этот метод неудобен тем, что при каждом перезапуске или обновлении обработки имя временного файла может меняться, и процедуру придется повторять.
Проанализируем ситуацию, когда нам нужно быстро попасть в код без поиска временных папок. Мы можем заставить систему саму открыть нам нужный участок кода. Для этого в начало процедуры Печать или в интересующее нас место вставим следующий код:
Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
// Временно вставляем для отладки
ВызватьИсключение "Остановка для отладки";
// Далее идет основной код
...
КонецПроцедуры
При запуске печати система выдаст окно с критической ошибкой. Нам нужно нажать кнопку Подробно, а затем — кнопку Конфигуратор. Платформа сама откроет тот самый временный файл на нужной строке. После этого мы можем спокойно ставить точки останова ниже по коду, удалить строку с исключением и продолжить работу в текущей сессии.
Самый профессиональный и удобный метод — использование специальных «отладчиков ВПФ». Рассмотрим принцип их работы. Это внешние обработки, которые эмулируют среду запуска печатной формы. Вместо того чтобы подключать ВПФ в справочник, мы открываем обработку-отладчик, в которой:
В этом случае обработка-отладчик программно заполняет структуру ПараметрыРегистрации и вызывает экспортный метод Печать() нашей формы. Поскольку запуск происходит из файла, стандартные точки останова работают безупречно. Найти такие инструменты можно на специализированных ресурсах, таких как Инфостарт. В качестве готового решения подойдёт универсальная форма для тестирования и отладки внешних обработок в режиме предприятия.
Выясним еще одну причину, мешающую отладке. В карточке дополнительной обработки в интерфейсе программы часто стоит флаг Безопасный режим. В этом режиме накладываются ограничения на выполнение некоторых операций, что иногда мешает корректной работе отладчика и механизмов перехвата исключений. На время разработки этот флаг рекомендуется снимать.
Также в настройках некоторых конфигураций (включая УТ 11.5) существует опция фоновой печати. Если форма формируется в фоне, основной сеанс отладчика ее «не видит». Попробуйте временно отключить использование фоновых заданий для печати в настройках программы или используйте подключение к фоновым заданиям в меню Автоматическое подключение настроек отладки.
Начиная с версии платформы 8.3.7, разработчикам доступен протокол HTTP для отладки. Если вы сталкиваетесь с тем, что отладчик «отваливается» или не видит серверные вызовы в распределенной сети, попробуйте переключить настройки отладки в конфигураторе на использование HTTP. Этот протокол работает более стабильно при прохождении через брандмауэры и при отладке серверных процессов в сложных инфраструктурах.
Подведем итог: для успешной отладки ВПФ в УТ 11.5 наиболее эффективным является сочетание включенной серверной отладки и использование метода «программной остановки» через исключение или специальных обработок для тестирования. Это избавляет от необходимости вручную искать временные файлы и позволяет сосредоточиться на логике кода.