К статье
Практический материал

Разработка и Конфигурация · 10 мин

Режим отладки внешней обработки в 1С: что это и как настроить

Что такое режим отладки внешней обработки в 1С, как включить отладку внешних обработок и печатных форм, пошаговая инструкция, типичные ошибки и FAQ.

Режим отладки внешней обработки в 1С — это способ запуска внешних файлов .epf (обработок) и .erf (отчётов) так, чтобы их код можно было пошагово проверять в конфигураторе: ставить точки останова, смотреть значения переменных и находить ошибки. Без специальной настройки отладчик «не видит» код внешнего файла, потому что обработка открывается в клиентском приложении как отдельный объект, не связанный с конфигурацией базы.

Проблема особенно заметна у внешних печатных форм и обработок, подключённых через механизм «Дополнительные отчеты и обработки» (БСП). Они исполняются внутри сеанса пользователя, и разработчику нужно, чтобы точка останова в файле .epf сработала при нажатии кнопки «Печать» в реальной базе. Для этого и существуют специальные приёмы: открытие обработки через «Файл — Открыть», параметр запуска, отладка по HTTP или настройка подключения предметов отладки.

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

Что такое внешняя обработка и почему её нельзя отладить «просто так»

Внешняя обработка — это файл с расширением .epf, а внешний отчёт — файл .erf. Они хранятся вне конфигурации базы данных и подключаются в момент работы: либо пользователь открывает файл вручную через меню «Файл — Открыть», либо обработка зарегистрирована в справочнике дополнительных отчётов и обработок и вызывается из интерфейса (например, как печатная форма документа).

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

Базовый способ: открыть обработку через «Файл — Открыть»

Самый надёжный вариант для ручной проверки — запустить клиентское приложение под отладкой и открыть внешнюю обработку в нём как файл. Порядок действий одинаков для большинства версий платформы 8.3.

Порядок действий
  1. 1
    Откройте внешнюю обработку в конфигураторе: Файл — Открыть — выберите .epf.
  2. 2
    Поставьте точку останова (F9) в нужной строке модуля формы или объекта.
  3. 3
    Запустите клиент под отладкой: Отладка — Начать отладку (F5), выберите толстый или тонкий клиент.
  4. 4
    В запустившемся клиенте откройте ту же обработку: Файл — Открыть.
  5. 5
    Выполните действие в обработке — выполнение остановится на точке останова.
  6. 6
    Проверяйте переменные через табло (Shift+F9) и шагайте по коду (F10/F11).

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

Для управляемого приложения учитывайте контекст исполнения: код с директивой &НаСервере выполняется на сервере (или в серверном контексте файловой базы), и точка останова там сработает только если отладчик подключён к серверному предмету отладки. При отладке файловой базы через F5 это происходит автоматически, в клиент-серверном варианте может потребоваться включение отладки на сервере.

Отладка внешних печатных форм и обработок из справочника «Дополнительные отчеты и обработки»

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

Рабочий приём — включить автоматическое подключение предметов отладки. В конфигураторе откройте «Отладка — Подключение», нажмите кнопку настройки автоматического подключения и отметьте нужные типы предметов: клиентские приложения, фоновые задания, при необходимости — серверные контексты. После этого запустите сеанс пользователя (вручную, не обязательно через F5) и подключитесь к нему через «Отладка — Подключение». Точка останова в .epf сработает, если файл открыт в конфигураторе и совпадает с загруженным в базу.

Отладка через параметр запуска /debug

Для клиент-серверных баз сеанс пользователя часто запускается отдельно от конфигуратора. Чтобы такой сеанс был доступен отладчику, запустите клиент с ключом /debug (для тонкого клиента дополнительно укажите протокол, например /debug -tcp или используйте отладку по HTTP, если она настроена на сервере). Затем в конфигураторе подключитесь к появившемуся предмету отладки.

Отладка на сервере 1С

Если код обработки исполняется в серверном контексте клиент-серверной базы, на сервере 1С должен быть разрешён режим отладки: служба агента сервера запускается с ключом -debug (и при HTTP-отладке настраивается соответствующий параметр). Без этого серверные точки останова не сработают, даже если клиентский сеанс подключён корректно.

Сравнение способов отладки

Сравнение вариантов

F5 + «Файл — Открыть»

Подходит для ручной проверки обработки на файловой базе. Ограничение: не воспроизводит вызов из интерфейса конфигурации (печатные формы, команды).

Автоподключение предметов отладки

Подходит для дополнительных обработок БСП и фоновых заданий. Требует совпадения файла в конфигураторе и в базе.

Ключ /debug + подключение к сеансу

Подходит для клиент-серверных баз, где сеанс уже запущен пользователем. Ограничение: нужна отладка на сервере для серверного кода.

Сообщить() / запись в журнал

Запасной вариант, когда отладчик недоступен (например, нет прав на конфигуратор в рабочей базе). Медленнее и не даёт пошагового выполнения.

Как проверить, что отладка работает

Признак успешной настройки — выполнение останавливается на точке останова, конфигуратор показывает стек вызовов и текущие значения переменных. Если этого не происходит, пройдитесь по контрольным точкам ниже.

Контрольные точки

Как проверить результат

Точка останова в конфигураторе
Норма

Точка красная, не перечёркнута; при выполнении происходит остановка

Тревожный признак

Точка серая/пустая — код не сопоставлен с предметом отладки

Версия файла
Норма

Файл в конфигураторе и загруженный в базу совпадают

Тревожный признак

После правки файл не перезагружен в справочник дополнительных обработок

Предмет отладки
Норма

Сеанс виден в окне «Отладка — Подключение» и отмечен галочкой

Тревожный признак

Сеанса нет в списке — клиент запущен без /debug или отладка не включена

Серверный код
Норма

Остановка в &НаСервере происходит, на сервере включён режим отладки

Тревожный признак

Клиентские точки срабатывают, серверные — нет

Типичные ошибки и ограничения

Типичные ошибки
01
Правка файла на диске без перезагрузки в справочник дополнительных обработок — отлаживается устаревший код из базы.
02
Запуск клиента не под отладкой: сеанс открыт обычным ярлыком без /debug, и конфигуратор его не видит.
03
Точка останова в недостижимой ветке кода: условие не выполняется, и разработчик ошибочно считает, что отладка сломана.
04
Отладка серверного кода без включённого режима отладки на сервере 1С — серверные точки молча игнорируются.
05
Использование толстого клиента там, где обработка рассчитана на управляемые формы, — обработка может вообще не открыться.

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

Удобный приём для печатных форм: временно добавьте в начало экспортной функции Печать() строку с выводом сообщения о версии файла. Если сообщение появилось — загружена актуальная версия и можно ставить точки останова; если нет — обновите файл в справочнике дополнительных обработок.
ПЗ
Практическое замечание
Итог

Что важно запомнить

Отладка внешней обработки сводится к трём условиям: файл открыт в конфигураторе, сеанс подключён к отладчику, версии кода в конфигураторе и в базе совпадают. Для файловой базы достаточно F5 и «Файл — Открыть», для печатных форм БСП — автоподключение предметов отладки, для клиент-сервера — /debug и отладка на сервере. Проверки выполняйте на копии базы.

Частые вопросы

Почему точка останова во внешней обработке не срабатывает?

Чаще всего сеанс не подключён к отладчику или код в базе отличается от открытого в конфигураторе файла. Проверьте список предметов отладки в «Отладка — Подключение», перезагрузите обработку в справочник дополнительных обработок и убедитесь, что точка стоит на исполняемой строке, а не в комментарии или объявлении.

Можно ли отладить внешнюю обработку без конфигуратора?

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

Как отладить обработку, которая выполняется в фоновом задании?

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

Нужно ли включать отладку на сервере для файловой базы?

Нет. В файловом варианте серверный контекст исполняется внутри клиентского процесса, и при запуске через F5 отладчик подключается к нему автоматически. Ключ -debug для агента сервера требуется только в клиент-серверном варианте.

Опасно ли отлаживать обработку в рабочей базе?

Да, если обработка изменяет данные: под отладкой она реально проводит документы и записывает справочники. Кроме того, включённая отладка на сервере замедляет работу всех пользователей. Безопасный вариант — копия базы или тестовый сервер.

Чем отличается отладка внешнего отчёта .erf от обработки .epf?

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