Разработка внешних печатных форм (ВПФ) — одна из самых частых задач программиста 1С. Однако при работе с современными конфигурациями на базе Библиотеки стандартных подсистем (БСП), такими как Бухгалтерия предприятия 3.0, разработчики часто сталкиваются с проблемой: стандартные точки остановки в модуле объекта внешней обработки просто не срабатывают. Это происходит потому, что система при выполнении печати копирует обработку во временное хранилище или запускает её в фоновом задании.
В этой статье мы подробно разберем несколько проверенных способов отладки ВПФ, от простых «ручных» методов до использования профессиональных инструментов разработчика. Проанализируем ситуацию и выясним, какой подход лучше всего подойдет для вашей задачи.
Рассмотрим самый доступный метод, который не требует стороннего софта. Его суть заключается в том, чтобы превратить внешнюю печатную форму в обычную обработку с экранной формой. Это позволит запускать процедуру печати напрямую из файла, открытого через Файл — Открыть, где отладчик работает безупречно.
Разберем этот процесс по шагам:
СсылкаНаОбъект с типом документа, который мы собираемся печатать (например, ДокументСсылка.РеализацияТоваровУслуг).Пример кода для кнопки на форме отладки:
&НаСервере
Процедура КомандаПечатьНаСервере()
// Создаем объект текущей обработки
ОбъектОбработка = РеквизитВЗначение("Объект");
// Подготавливаем параметры для процедуры Печать
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(Объект.СсылкаНаОбъект);
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ИмяМакетаВВашейВПФ");
ОбъектыПечати = Новый СписокЗначений;
ПараметрыВывода = УправлениеПечатью.ПодготовитьПараметрыВывода();
// Вызываем основную экспортную процедуру модуля объекта
ОбъектОбработка.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
// Здесь можно вывести результат, например, в ТабличныйДокумент на форме
КонецПроцедуры
Этот метод хорош тем, что вы полностью контролируете контекст и можете ставить точки остановки в любом месте модуля объекта.
Профессиональные разработчики часто используют готовые решения, которые позволяют отлаживать ВПФ без модификации их структуры. Проанализируем работу с такими инструментами, как Инструменты разработчика (ИР) или специализированные консоли для БСП.
Основное преимущество таких консолей заключается в том, что они умеют программно подключать внешнюю обработку и вызывать её методы так, как это делает сама конфигурация. В этом случае отладка запускается автоматически при открытии файла обработки через консоль. Рассмотрим основные возможности таких инструментов:
Печать или СведенияОВнешнейОбработке.Если вы не хотите создавать форму или использовать сторонний софт, можно воспользоваться особенностью работы БСП. Когда вы нажимаете кнопку «Печать» в режиме «Предприятие», система выгружает обработку во временную папку пользователя. Мы можем «поймать» этот файл.
Посмотрим, как это сделать:
Печать, добавьте строку кода: Предупреждение("Отладка запущенна"); (или Сообщить в старых версиях).%TEMP%). Найдите там свежий файл с расширением .epf и случайным именем.Файл — Открыть).Важно: После завершения печати система может удалить этот временный файл, поэтому при следующем запуске процедуру придется повторить с новым файлом.
Часто отладка не работает даже при правильных действиях, так как в Бухгалтерии 3.0 печать может выполняться в фоновом режиме на сервере. Даже в файловой базе 1С имитирует фоновые задания.
Выясним, как правильно настроить конфигуратор для этого случая:
/Debug.Для гарантированной остановки в коде модуля объекта ВПФ можно принудительно вызвать ошибку, если отладчик не цепляется:
Если Найти(ПараметрыСеанса.ТекущийПользователь.Наименование, "Разработчик") > 0 Тогда
ВызватьИсключение "Стоп-кран для отладки";
КонецЕсли;
Хотя автор темы упоминал, что остановка по ошибке у него не работает, это чаще всего связано именно с не настроенным подключением к фоновым заданиям в окне «Подключение к предметам отладки».
Рассмотрим «ленивый», но эффективный метод. Если внешняя печатная форма никак не поддается отладке, мы можем временно превратить её во внутреннюю.
Обработки новую обработку.Этот метод позволяет пользоваться всеми преимуществами штатной отладки без ограничений, связанных с правами доступа и безопасным режимом внешних обработок. После завершения отладки просто перенесите исправленный код обратно в .epf и удалите временную обработку из конфигурации.
Таким образом, мы проанализировали основные стратегии отладки. Для быстрой правки макета лучше использовать метод с формой-заглушкой, а для глубокого анализа логики БСП — специализированные инструменты разработчика.