Как отладить внешнюю печатную форму или обработку в 1С:Управление торговлей 10.3 на обычных формах?

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

Разработка и доработка внешних печатных форм и обработок в конфигурациях на обычных (неуправляемых) формах, таких как Управление торговлей 10.3, нередко сопровождается трудностями при отладке. Распространенная проблема — отладчик в Конфигураторе игнорирует установленные точки останова внутри модуля внешней обработки или вложенного функционала.

Проанализируем основные причины такого поведения и разберем проверенные способы запуска и отладки программного кода.

Почему отладчик не останавливается на точках останова?

Выделим ключевые факторы, из-за которых отладка внешних печатных форм не срабатывает:

  1. Несовпадение путей к файлам. Механизм отладки сопоставляет точки останова строго по полному пути к исходному файлу обработки. Если печатная форма зарегистрирована в справочнике ВнешниеОбработки, платформа при вызове выгружает ее двоичные данные во временную папку пользователя под сгенерированным именем. Если в Конфигураторе открыт локальный файл с диска, пути не совпадают, и точка останова пропускается.
  2. Серверная база без флага отладки. Если информационная база работает в клиент-серверном режиме, а сервер 1С:Предприятия запущен без специального ключа отладки, исполняемый на стороне сервера код не передает контекст в Конфигуратор.
  3. Отключенный перехват предметов отладки. В конфигураторе могут быть выключены флаги автоматического подключения серверных контекстов или фоновых заданий.
  4. Исполнение через строковые функции. Вызовы через конструкции Выполнить() или Вычислить() выполняются в динамическом контексте, который не привязан к строкам исходного модуля.

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

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

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

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

Теперь запустим сеанс 1С:Предприятия через отладку (клавиша F5), откроем файл внешней обработки через меню Файл → Открыть, выберем документ и нажмем кнопку. Точки останова внутри модуля будут гарантированно срабатывать, так как файл открыт напрямую.

Способ 2. Запуск сервера 1С в режиме отладки и настройка подключения

Если печатная форма или вызываемая внутренняя логика исполняются на стороне сервера, необходимо убедиться, что серверная служба работает с флагом отладки.

Разберем порядок действий для настройки серверной отладки:

  1. Остановим службу 1C:Enterprise 8.3 Server Agent.
  2. В реестре Windows перейдем к ветке службы и в параметре ImagePath добавим ключ -debug к строке запуска ragent.exe.
  3. Запустим службу сервера 1С.
  4. В Конфигураторе откроем главное меню: Отладка → Подключение..., нажмем кнопку Настройка автоматического подключения и установим флаги: Серверные контексты, Фоновые задания и Внешние соединения.

Способ 3. Принудительная точка останова через оператор Остановить()

Если платформа не видит визуальные точки останова из-за различия путей временного файла, воспользуемся явным оператором платформы Остановить().

Вставим вызов оператора непосредственно в модуль печатной формы или вызываемой обработки:


Функция Печать(СсылкаНаОбъект) Экспорт
    // Принудительное прерывание выполнения для отладчика
    Остановить();
    
    ТабДокумент = Новый ТабличныйДокумент;
    // Формирование макета и заполнение параметров
    Возврат ТабДокумент;
КонецФункции

Если клиентский сеанс запущен из Конфигуратора или подключен к нему, платформа автоматически переведет фокус в отладчик на строку с оператором Остановить();.

Способ 4. Прямой вызов внешнего файла из метаданных конфигурации

На время разработки можно временно переопределить логику вызова печати в модуле документа или модуля менеджера, заменив обращение к справочнику на прямое создание объекта из локального файла:


ПутьКФайлу = "C:\Dev\ПечатнаяФорма.epf";
ВнешняяФорма = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь);
ТабДокумент = ВнешняяФорма.Печать(Ссылка);
ТабДокумент.Показать();

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

Способ 5. Временное включение обработки в состав метаданных

Если внешняя форма активно взаимодействует со сложными внутренними механизмами конфигурации, перенесем ее в дерево метаданных:

  1. Добавим объект в ветку Обработки основной конфигурации.
  2. Скопируем реквизиты, формы, макеты и модуль объекта из внешней обработки.
  3. Выполним отладку стандартными средствами Конфигуратора.
  4. После завершения отладки и тестирования перенесем исправленный программный код обратно в файл .epf.

Проверка прав пользователя

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

← На главную