Как эффективно отладить внешнюю печатную форму в 1С:Бухгалтерия 3.0

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

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

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

Способ 1: Создание вспомогательной формы отладки

Рассмотрим самый доступный метод, который не требует стороннего софта. Его суть заключается в том, чтобы превратить внешнюю печатную форму в обычную обработку с экранной формой. Это позволит запускать процедуру печати напрямую из файла, открытого через Файл — Открыть, где отладчик работает безупречно.

Разберем этот процесс по шагам:

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

Пример кода для кнопки на форме отладки:


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

Этот метод хорош тем, что вы полностью контролируете контекст и можете ставить точки остановки в любом месте модуля объекта.

Способ 2: Использование специализированных консолей и инструментов

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

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

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

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

Посмотрим, как это сделать:

  1. В модуле объекта вашей ВПФ, в самом начале процедуры Печать, добавьте строку кода: Предупреждение("Отладка запущенна"); (или Сообщить в старых версиях).
  2. Запустите печать из документа. Когда появится окно с предупреждением, не закрывайте его.
  3. Перейдите в папку временных файлов вашего профиля (обычно это %TEMP%). Найдите там свежий файл с расширением .epf и случайным именем.
  4. Откройте этот файл через Конфигуратор (Файл — Открыть).
  5. Поставьте точки остановки в этом открытом временном файле.
  6. Вернитесь в «1С:Предприятие», закройте окно предупреждения. Отладчик сработает именно в этом временном файле.

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

Способ 4: Настройка отладки фоновых заданий

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

Выясним, как правильно настроить конфигуратор для этого случая:

  1. Зайдите в меню Сервис — Параметры.
  2. Перейдите на закладку Запуск 1С:Предприятия — Дополнительно.
  3. Убедитесь, что в поле параметров запуска прописано /Debug.
  4. В меню Отладка — Подключение проверьте список «Доступные предметы отладки». Если там есть пункты, связанные с фоновыми заданиями, их нужно выбрать и нажать «Подключить».

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


Если Найти(ПараметрыСеанса.ТекущийПользователь.Наименование, "Разработчик") > 0 Тогда
    ВызватьИсключение "Стоп-кран для отладки";
КонецЕсли;

Хотя автор темы упоминал, что остановка по ошибке у него не работает, это чаще всего связано именно с не настроенным подключением к фоновым заданиям в окне «Подключение к предметам отладки».

Способ 5: Временное внедрение в конфигурацию

Рассмотрим «ленивый», но эффективный метод. Если внешняя печатная форма никак не поддается отладке, мы можем временно превратить её во внутреннюю.

  1. Создайте в дереве метаданных в ветке Обработки новую обработку.
  2. Скопируйте в неё содержимое модуля объекта и макеты из вашей ВПФ.
  3. В коде документа, откуда вызывается печать, временно подмените вызов внешней обработки вызовом этой новой встроенной обработки.

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

Таким образом, мы проанализировали основные стратегии отладки. Для быстрой правки макета лучше использовать метод с формой-заглушкой, а для глубокого анализа логики БСП — специализированные инструменты разработчика.

← На главную