Разработка и доработка внешних печатных форм и обработок в конфигурациях на обычных (неуправляемых) формах, таких как Управление торговлей 10.3, нередко сопровождается трудностями при отладке. Распространенная проблема — отладчик в Конфигураторе игнорирует установленные точки останова внутри модуля внешней обработки или вложенного функционала.
Проанализируем основные причины такого поведения и разберем проверенные способы запуска и отладки программного кода.
Выделим ключевые факторы, из-за которых отладка внешних печатных форм не срабатывает:
ВнешниеОбработки, платформа при вызове выгружает ее двоичные данные во временную папку пользователя под сгенерированным именем. Если в Конфигураторе открыт локальный файл с диска, пути не совпадают, и точка останова пропускается.Выполнить() или Вычислить() выполняются в динамическом контексте, который не привязан к строкам исходного модуля.Самый простой и надежный способ для обычных форм — добавить во внешнюю обработку форму для тестирования. Рассмотрим по шагам реализацию этого подхода:
ДокументСсылка.РеализацияТоваровУслуг) и кнопку выполнения печати.
Процедура КнопкаПечатьНажатие(Элемент)
// Проверим заполнение документа
Если Не ЗначениеЗаполнено(ДокументСсылка) Тогда
Предупреждение("Выберите документ для отладки!");
Возврат;
КонецЕсли;
// Передадим ссылку в функцию формирования печатной формы
ТабДокумент = Печать(ДокументСсылка);
Если ТабДокумент <> Неопределено Тогда
ТабДокумент.Показать();
КонецЕсли;
КонецПроцедуры
Теперь запустим сеанс 1С:Предприятия через отладку (клавиша F5), откроем файл внешней обработки через меню Файл → Открыть, выберем документ и нажмем кнопку. Точки останова внутри модуля будут гарантированно срабатывать, так как файл открыт напрямую.
Если печатная форма или вызываемая внутренняя логика исполняются на стороне сервера, необходимо убедиться, что серверная служба работает с флагом отладки.
Разберем порядок действий для настройки серверной отладки:
1C:Enterprise 8.3 Server Agent.ImagePath добавим ключ -debug к строке запуска ragent.exe.Если платформа не видит визуальные точки останова из-за различия путей временного файла, воспользуемся явным оператором платформы Остановить().
Вставим вызов оператора непосредственно в модуль печатной формы или вызываемой обработки:
Функция Печать(СсылкаНаОбъект) Экспорт
// Принудительное прерывание выполнения для отладчика
Остановить();
ТабДокумент = Новый ТабличныйДокумент;
// Формирование макета и заполнение параметров
Возврат ТабДокумент;
КонецФункции
Если клиентский сеанс запущен из Конфигуратора или подключен к нему, платформа автоматически переведет фокус в отладчик на строку с оператором Остановить();.
На время разработки можно временно переопределить логику вызова печати в модуле документа или модуля менеджера, заменив обращение к справочнику на прямое создание объекта из локального файла:
ПутьКФайлу = "C:\Dev\ПечатнаяФорма.epf";
ВнешняяФорма = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь);
ТабДокумент = ВнешняяФорма.Печать(Ссылка);
ТабДокумент.Показать();
При таком подходе файл обработки открывается по фиксированному пути, что обеспечивает полную синхронизацию точек останова между кодом и средой разработки.
Если внешняя форма активно взаимодействует со сложными внутренними механизмами конфигурации, перенесем ее в дерево метаданных:
.epf.Убедимся, что у пользователя, под учетной записью которого выполняется тестирование, назначена роль с правом Отладка или полные административные права. При отсутствии этого права отладочная информация блокируется платформой на уровне безопасности.