Почему отладчик не останавливается в подключенной внешней печатной форме (ВПФ) и как это исправить?

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

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

Разберем причину поведения системы

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

Когда же ВПФ зарегистрирована в системе (в составе БСП — Библиотеки стандартных подсистем), механизм работы радикально меняется. Программа выполняет следующие действия:

  1. Извлекает двоичные данные обработки из информационной базы.
  2. Сохраняет их во временный файл в директории пользователя (обычно это папка AppData\Local\Temp).
  3. Присваивает временному файлу уникальное имя (например, v8_2345_12.epf).
  4. Подключает и запускает именно этот временный файл.

Важный момент: точки останова, расставленные вами в исходном файле МояПечатнаяФорма.epf, никак не связаны с временным файлом, который создала система. Для конфигуратора это два абсолютно разных объекта.

Способ 1. Настройка серверной отладки

Прежде чем приступать к программным хитростям, проверим базовые настройки. В современных версиях 1С:Управление торговлей 11.5 печать практически всегда выполняется на стороне сервера. Если у вас клиент-серверный вариант базы, отладчик не остановится, если сервер не переведен в специальный режим.

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

Также пройдем в меню конфигуратора Отладка — Установка предметов отладки. Нам нужно убедиться, что в списке типов подключений активны пункты Сервер и Фоновые задания. Без включения отладки фоновых заданий мы не сможем «поймать» момент формирования печатной формы, если система отправляет задачу на печать в фоновом режиме.

Способ 2. Отладка через временный файл

Рассмотрим пошагово метод, который позволяет использовать стандартные точки останова даже в подключенной ВПФ:

  1. Найдем в конфигурации общий модуль, отвечающий за запуск дополнительных обработок (обычно это ДополнительныеОтчетыИОбработки).
  2. Поставим точку останова в месте, где происходит вызов метода ПодключитьВнешнююОбработку() или перед выполнением команды.
  3. Запустим печать из интерфейса пользователя.
  4. Когда отладчик остановится в общем модуле, вычислим значение переменной, содержащей путь к временному файлу.
  5. Скопируем этот путь, нажмем Файл — Открыть в конфигураторе и вставим путь в строку имени файла.
  6. Теперь, когда открыт именно временный файл, расставим в нем точки останова. Процесс пойдет дальше, и отладчик сработает.

Помните: этот метод неудобен тем, что при каждом перезапуске или обновлении обработки имя временного файла может меняться, и процедуру придется повторять.

Способ 3. Метод программной остановки («Вызов исключения»)

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


Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    // Временно вставляем для отладки
    ВызватьИсключение "Остановка для отладки";
    
    // Далее идет основной код
    ...
КонецПроцедуры

При запуске печати система выдаст окно с критической ошибкой. Нам нужно нажать кнопку Подробно, а затем — кнопку Конфигуратор. Платформа сама откроет тот самый временный файл на нужной строке. После этого мы можем спокойно ставить точки останова ниже по коду, удалить строку с исключением и продолжить работу в текущей сессии.

Способ 4. Использование внешних обработок-отладчиков

Самый профессиональный и удобный метод — использование специальных «отладчиков ВПФ». Рассмотрим принцип их работы. Это внешние обработки, которые эмулируют среду запуска печатной формы. Вместо того чтобы подключать ВПФ в справочник, мы открываем обработку-отладчик, в которой:

В этом случае обработка-отладчик программно заполняет структуру ПараметрыРегистрации и вызывает экспортный метод Печать() нашей формы. Поскольку запуск происходит из файла, стандартные точки останова работают безупречно. Найти такие инструменты можно на специализированных ресурсах, таких как Инфостарт. В качестве готового решения подойдёт универсальная форма для тестирования и отладки внешних обработок в режиме предприятия.

Способ 5. Отключение безопасного режима и фоновой печати

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

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

Протокол отладки: HTTP или TCP/IP

Начиная с версии платформы 8.3.7, разработчикам доступен протокол HTTP для отладки. Если вы сталкиваетесь с тем, что отладчик «отваливается» или не видит серверные вызовы в распределенной сети, попробуйте переключить настройки отладки в конфигураторе на использование HTTP. Этот протокол работает более стабильно при прохождении через брандмауэры и при отладке серверных процессов в сложных инфраструктурах.

Подведем итог: для успешной отладки ВПФ в УТ 11.5 наиболее эффективным является сочетание включенной серверной отладки и использование метода «программной остановки» через исключение или специальных обработок для тестирования. Это избавляет от необходимости вручную искать временные файлы и позволяет сосредоточиться на логике кода.

← На главную