Как отладить внешнюю печатную форму в 1С 8.3: подробные инструкции и практические методы

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

Разработка и поддержка внешних печатных форм (ВПФ) — одна из наиболее частых задач программиста 1С. Однако разработчики часто сталкиваются с проблемой: точки останова в модуле объекта внешней обработки упорно игнорируются конфигуратором, и стандартная отладка «не идет». Это происходит из-за того, что в управляемом приложении код печатных форм выполняется на стороне сервера или в фоновом режиме, а сама обработка загружается в информационную базу как двоичные данные и запускается во временном хранилище.

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

Почему отладчик игнорирует точки останова в ВПФ?

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

  1. Считывает двоичные данные файла .epf из справочника Дополнительные отчеты и обработки.
  2. Записывает эти данные во временный файл во временном каталоге операционной системы на стороне сервера.
  3. Подключает внешнюю обработку в безопасном или небезопасном режиме.
  4. Вызывает экспортный метод Печать в модуле объекта обработки.

Поскольку файл выполняется на сервере, а его имя генерируется динамически, отладчик конфигуратора просто «не знает», какой именно файл на диске сопоставить с открытым проектом в конфигураторе. Кроме того, часто серверные вызовы и фоновые задания по умолчанию не подключены к сеансу отладки.

Давайте исправим это, настроив среду разработки.

Шаг 1. Настройка параметров отладки платформы 1С

Перед началом любой работы с серверным кодом выполним обязательную настройку конфигуратора и сервера 1С. Без этого ни один из описанных ниже методов не сработает.

Активация отладки на сервере:
Если ваша база данных развернута в клиент-серверном варианте, убедитесь, что служба сервера 1С:Предприятие запущена с ключом отладки -debug (для протокола TCP/IP) или -http (для HTTP-отладки). Если этот параметр не задан в реестре или конфигурационном файле службы, серверный код отлаживать будет невозможно.

Настройка автоматического подключения в Конфигураторе:
Давайте укажем отладчику, какие именно процессы ему нужно перехватывать автоматически:

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

Отключение защиты от опасных действий:
При интерактивном открытии внешних обработок платформа 8.3 запрашивает подтверждение безопасности, что может блокировать выполнение фонового кода отладки. Для учетной записи разработчика рекомендуется временно отключить эту защиту. Для этого перейдем в раздел Администрирование — Пользователи, откроем карточку разработчика и снимем флажок Защита от опасных действий.

Шаг 2. Создание тестовой формы для эмуляции вызова (Классический метод)

Этот способ является самым надежным и популярным среди разработчиков. Мы добавим в саму внешнюю обработку вспомогательную форму, которая позволит запускать печать напрямую через меню Файл — Открыть, обходя механизмы регистрации БСП.

Рассмотрим пошагово, как это сделать:

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

Теперь нам нужно написать код обработчика команды. Нам необходимо сымитировать структуру параметров, которую БСП обычно передает в экспортный метод Печать. Стандартный метод в модуле объекта выглядит так:

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

Давайте напишем код эмуляции на форме нашей обработки. В модуле формы разместим следующий код:


&НаКлиенте
Процедура ВыполнитьПечать(Команда)
    
    // Проверим, заполнена ли ссылка на документ
    Если Не ЗначениеЗаполнено(Объект.СсылкаНаОбъект) Тогда
        Предупреждение("Пожалуйста, выберите документ для отладки!");
        Возврат;
    КонецЕсли;
    
    // Формируем список объектов для передачи на сервер
    ОбъектыПечати = Новый СписокЗначений;
    ОбъектыПечати.Добавить(Объект.СсылкаНаОбъект);
    
    // Вызываем серверный метод генерации печатной формы
    ВыполнитьПечатьНаСервере(ОбъектыПечати);
    
КонецПроцедуры

&НаСервере
Процедура ВыполнитьПечатьНаСервере(ОбъектыПечати)
    
    // Преобразуем список в массив, как требует стандарт БСП
    МассивОбъектов = Новый Массив;
    Для Каждого Элемент Из ОбъектыПечати Цикл
        МассивОбъектов.Добавить(Элемент.Значение);
    КонецЦикла;
    
    // Эмулируем структуры БСП с помощью стандартных функций конфигурации
    КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ИдентификаторВашегоМакета");
    ПараметрыВывода = УправлениеПечатью.ПодготовитьStructureПараметровВывода();
    
    // Получаем объект обработки из данных формы для доступа к экспортным методам
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    
    // Вызываем экспортный метод печати.
    // Именно на этой строке или внутри метода Печать в Модуле объекта ставим точку останова!
    ОбработкаОбъект.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
    
    // Опционально: Выводим результат на экран, если требуется визуальный контроль табдока
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбъектыПечати);
    
КонецПроцедуры

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

Шаг 3. Штатный механизм отладки БСП

В современных конфигурациях 1С, построенных на базе Библиотеки Стандартных Подсистем (БСП), разработчики предусмотрели штатный механизм отладки внешних объектов без необходимости добавления тестовых форм и изменения структуры обработки.

Рассмотрим, как задействовать этот функционал:

  1. Перейдем в режим 1С:Предприятие под учетной записью администратора.
  2. Откроем справочник Дополнительные отчеты и обработки (обычно находится в разделе НСИ и администрирование — Печатные формы, отчеты и обработки).
  3. Зарегистрируем нашу внешнюю печатную форму обычным способом, загрузив ее файл.
  4. В карточке зарегистрированной обработки найдем переключатель или команду Режим отладки (в некоторых версиях БСП этот флаг называется «Использовать отладку» или доступен по кнопке «Настройка отладки»).
  5. Укажем прямой путь к файлу .epf, который хранится на вашем локальном диске или в сетевой папке (важно: сервер 1С должен иметь физический доступ к этому пути).
  6. В Конфигураторе откроем именно этот файл .epf с жесткого диска и расставим точки останова в модуле объекта.
  7. Запустим печать документа из стандартного интерфейса программы.

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

Шаг 4. Метод быстрого перехвата «Остановка по ошибке»

Если вам нужно срочно посмотреть структуру возвращаемых данных из запроса, а времени на создание тестовых форм или регистрацию обработки в справочнике БСП нет, можно воспользоваться универсальным «лайфхаком» платформы 1С — перехватом временного файла через обработку ошибок.

Выясним алгоритм этого метода по шагам:

  1. Откроем модуль объекта нашей печатной формы в Конфигураторе.
  2. В самом начале процедуры Печать или непосредственно перед интересующим нас запросом добавим строку с принудительным вызовом ошибки. Например: ВызватьИсключение "ОСТАНОВКА_ДЛЯ_ОТЛАДКИ"; Или напишем простую математическую ошибку в блоке попытки:
    
    Попытка 
        а = 1 / 0; 
    Исключение 
        // Ошибка будет поймана конфигуратором
    КонецПопытки;
    
  3. Сохраним обработку и обновим ее в справочнике дополнительных обработок в режиме предприятия.
  4. В Конфигураторе откроем меню Отладка — Настройка остановки по ошибке...
  5. Установим флажок Останавливаться по ошибке. Также можно установить флажок Привлекать внимание конфигуратора.
  6. Запустим печать документа из интерфейса программы.
  7. Платформа начнет выполнение кода, дойдет до нашей строчки с искусственной ошибкой и немедленно остановит процесс. Конфигуратор автоматически откроет временную копию нашей обработки прямо на строке с ошибкой.

Важное примечание: Открывшийся файл является временным (его имя будет выглядеть как случайный набор символов в системном каталоге). Вы можете полноценно использовать инструменты отладки: открывать Табло, вызывать контекстное меню Вычислить выражение, просматривать структуру результатов запросов и пошагово обходить код кнопками F10 и F11. Однако ни в коем случае не редактируйте код внутри этого открывшегося временного файла! Все изменения и исправления нужно вносить только в ваш исходный рабочий файл .epf.

Подведение итогов

Мы подробно разобрали основные методы отладки внешних печатных форм в управляемом приложении 1С 8.3. Подведем краткий итог по выбору оптимального инструмента:

Используя эти приемы, вы сможете быстро находить ошибки в запросах, анализировать структуру возвращаемых данных и значительно сократите время разработки печатных форм в 1С.

← На главную