Разработка и Конфигурация · 10 мин
Режим отладки внешней обработки в 1С: что это и как настроить
Что такое режим отладки внешней обработки в 1С, как включить отладку внешних обработок и печатных форм, пошаговая инструкция, типичные ошибки и FAQ.
Режим отладки внешней обработки в 1С — это способ запуска внешних файлов .epf (обработок) и .erf (отчётов) так, чтобы их код можно было пошагово проверять в конфигураторе: ставить точки останова, смотреть значения переменных и находить ошибки. Без специальной настройки отладчик «не видит» код внешнего файла, потому что обработка открывается в клиентском приложении как отдельный объект, не связанный с конфигурацией базы.
Проблема особенно заметна у внешних печатных форм и обработок, подключённых через механизм «Дополнительные отчеты и обработки» (БСП). Они исполняются внутри сеанса пользователя, и разработчику нужно, чтобы точка останова в файле .epf сработала при нажатии кнопки «Печать» в реальной базе. Для этого и существуют специальные приёмы: открытие обработки через «Файл — Открыть», параметр запуска, отладка по HTTP или настройка подключения предметов отладки.
Ниже разобрано, как работает механизм, какие способы включить отладку существуют в обычном и управляемом приложении, чем отличается отладка файловых и клиент-серверных баз и какие ошибки чаще всего мешают остановке на точке останова.
Что такое внешняя обработка и почему её нельзя отладить «просто так»
Внешняя обработка — это файл с расширением .epf, а внешний отчёт — файл .erf. Они хранятся вне конфигурации базы данных и подключаются в момент работы: либо пользователь открывает файл вручную через меню «Файл — Открыть», либо обработка зарегистрирована в справочнике дополнительных отчётов и обработок и вызывается из интерфейса (например, как печатная форма документа).
Код конфигурации отлаживается напрямую: конфигуратор знает все модули и при запуске отладки передаёт их отладчику. С внешним файлом иначе — платформа компилирует его в момент открытия в клиентском приложении, и конфигуратор по умолчанию не связывает этот скомпилированный код с открытым у разработчика файлом. Поэтому точка останова, поставленная в .epf, игнорируется, пока не выполнены условия подключения.
Базовый способ: открыть обработку через «Файл — Открыть»
Самый надёжный вариант для ручной проверки — запустить клиентское приложение под отладкой и открыть внешнюю обработку в нём как файл. Порядок действий одинаков для большинства версий платформы 8.3.
- 1Откройте внешнюю обработку в конфигураторе: Файл — Открыть — выберите .epf.
- 2Поставьте точку останова (F9) в нужной строке модуля формы или объекта.
- 3Запустите клиент под отладкой: Отладка — Начать отладку (F5), выберите толстый или тонкий клиент.
- 4В запустившемся клиенте откройте ту же обработку: Файл — Открыть.
- 5Выполните действие в обработке — выполнение остановится на точке останова.
- 6Проверяйте переменные через табло (Shift+F9) и шагайте по коду (F10/F11).
Важно, чтобы файл, открытый в конфигураторе, и файл, открытый в клиенте, были одним и тем же файлом по пути и содержимому. Если вы изменили код в конфигураторе, сохраните файл и переоткройте его в клиенте — иначе отлаживаться будет старая версия.
Для управляемого приложения учитывайте контекст исполнения: код с директивой &НаСервере выполняется на сервере (или в серверном контексте файловой базы), и точка останова там сработает только если отладчик подключён к серверному предмету отладки. При отладке файловой базы через F5 это происходит автоматически, в клиент-серверном варианте может потребоваться включение отладки на сервере.
Отладка внешних печатных форм и обработок из справочника «Дополнительные отчеты и обработки»
Когда обработка подключена к типовой конфигурации на БСП как дополнительная печатная форма, она запускается из сеанса пользователя по кнопке «Печать». Просто открыть файл в клиенте недостаточно — нужно, чтобы отладчик перехватил именно тот вызов, который делает подсистема БСП.
Рабочий приём — включить автоматическое подключение предметов отладки. В конфигураторе откройте «Отладка — Подключение», нажмите кнопку настройки автоматического подключения и отметьте нужные типы предметов: клиентские приложения, фоновые задания, при необходимости — серверные контексты. После этого запустите сеанс пользователя (вручную, не обязательно через F5) и подключитесь к нему через «Отладка — Подключение». Точка останова в .epf сработает, если файл открыт в конфигураторе и совпадает с загруженным в базу.
Отладка через параметр запуска /debug
Для клиент-серверных баз сеанс пользователя часто запускается отдельно от конфигуратора. Чтобы такой сеанс был доступен отладчику, запустите клиент с ключом /debug (для тонкого клиента дополнительно укажите протокол, например /debug -tcp или используйте отладку по HTTP, если она настроена на сервере). Затем в конфигураторе подключитесь к появившемуся предмету отладки.
Отладка на сервере 1С
Если код обработки исполняется в серверном контексте клиент-серверной базы, на сервере 1С должен быть разрешён режим отладки: служба агента сервера запускается с ключом -debug (и при HTTP-отладке настраивается соответствующий параметр). Без этого серверные точки останова не сработают, даже если клиентский сеанс подключён корректно.
Сравнение способов отладки
Сравнение вариантов
Подходит для ручной проверки обработки на файловой базе. Ограничение: не воспроизводит вызов из интерфейса конфигурации (печатные формы, команды).
Подходит для дополнительных обработок БСП и фоновых заданий. Требует совпадения файла в конфигураторе и в базе.
Подходит для клиент-серверных баз, где сеанс уже запущен пользователем. Ограничение: нужна отладка на сервере для серверного кода.
Запасной вариант, когда отладчик недоступен (например, нет прав на конфигуратор в рабочей базе). Медленнее и не даёт пошагового выполнения.
Как проверить, что отладка работает
Признак успешной настройки — выполнение останавливается на точке останова, конфигуратор показывает стек вызовов и текущие значения переменных. Если этого не происходит, пройдитесь по контрольным точкам ниже.
Как проверить результат
Точка красная, не перечёркнута; при выполнении происходит остановка
Точка серая/пустая — код не сопоставлен с предметом отладки
Файл в конфигураторе и загруженный в базу совпадают
После правки файл не перезагружен в справочник дополнительных обработок
Сеанс виден в окне «Отладка — Подключение» и отмечен галочкой
Сеанса нет в списке — клиент запущен без /debug или отладка не включена
Остановка в &НаСервере происходит, на сервере включён режим отладки
Клиентские точки срабатывают, серверные — нет
Типичные ошибки и ограничения
Отдельное ограничение — права доступа. Подключение к чужому сеансу и отладка требуют прав администратора или соответствующих настроек; в рабочих базах разработчику часто доступна только копия. Также помните, что обработка под отладкой реально выполняет действия с данными: если она записывает документы или меняет справочники, изменения сохранятся в базе. Для проверок используйте копию базы.
Удобный приём для печатных форм: временно добавьте в начало экспортной функции Печать() строку с выводом сообщения о версии файла. Если сообщение появилось — загружена актуальная версия и можно ставить точки останова; если нет — обновите файл в справочнике дополнительных обработок.
Что важно запомнить
Отладка внешней обработки сводится к трём условиям: файл открыт в конфигураторе, сеанс подключён к отладчику, версии кода в конфигураторе и в базе совпадают. Для файловой базы достаточно F5 и «Файл — Открыть», для печатных форм БСП — автоподключение предметов отладки, для клиент-сервера — /debug и отладка на сервере. Проверки выполняйте на копии базы.
Частые вопросы
Почему точка останова во внешней обработке не срабатывает?
Чаще всего сеанс не подключён к отладчику или код в базе отличается от открытого в конфигураторе файла. Проверьте список предметов отладки в «Отладка — Подключение», перезагрузите обработку в справочник дополнительных обработок и убедитесь, что точка стоит на исполняемой строке, а не в комментарии или объявлении.
Можно ли отладить внешнюю обработку без конфигуратора?
Полноценно — нет, пошаговая отладка возможна только через конфигуратор. Если доступа к нему нет, используйте вывод диагностических сообщений через Сообщить() или запись в журнал регистрации, но это заметно медленнее и менее информативно.
Как отладить обработку, которая выполняется в фоновом задании?
Включите автоматическое подключение фоновых заданий в настройках подключения предметов отладки, затем запустите задание. Оно появится в списке предметов отладки, и точки останова в его коде начнут срабатывать.
Нужно ли включать отладку на сервере для файловой базы?
Нет. В файловом варианте серверный контекст исполняется внутри клиентского процесса, и при запуске через F5 отладчик подключается к нему автоматически. Ключ -debug для агента сервера требуется только в клиент-серверном варианте.
Опасно ли отлаживать обработку в рабочей базе?
Да, если обработка изменяет данные: под отладкой она реально проводит документы и записывает справочники. Кроме того, включённая отладка на сервере замедляет работу всех пользователей. Безопасный вариант — копия базы или тестовый сервер.
Чем отличается отладка внешнего отчёта .erf от обработки .epf?
Технически — ничем: оба файла открываются в конфигураторе и отлаживаются одинаково. Различие только в структуре объекта: у отчёта есть схема компоновки данных, и ошибки формирования отчёта часто находятся в настройках СКД, а не в коде модуля.