Разработка внешних печатных форм (ВПФ) в среде 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 наиболее эффективным является сочетание включенной серверной отладки и использование метода «программной остановки» через исключение или специальных обработок для тестирования. Это избавляет от необходимости вручную искать временные файлы и позволяет сосредоточиться на логике кода.