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

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

Как включить отладку внешней обработки 1С

Как включить отладку внешней обработки 1С: настройка конфигуратора, точки останова, отладка на клиенте и сервере, типовые ошибки и их решение.

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

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

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

Что нужно подготовить перед началом отладки

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

Убедитесь, что у вашей учётной записи есть права на запуск Конфигуратора и что информационная база не заблокирована регламентными заданиями или другими сеансами, если планируется монопольный доступ. Для файловой базы достаточно локального доступа к каталогу; для клиент-серверной — сетевого доступа к серверу 1С и, при необходимости, прав на изменение параметров службы агента сервера.

Отдельно проверьте, как открывается обработка в пользовательском режиме: через «Файл → Открыть» или подключена через механизм дополнительных отчётов и обработок (БСП). От способа подключения зависит, какой модуль реально исполняется, и где ставить точки останова.

Включение режима отладки в Конфигураторе

Откройте Конфигуратор и подключитесь к нужной информационной базе. Затем перейдите в меню «Отладка» и проверьте пункт «Начать отладку» (клавиша F5) — при первом запуске платформа сама предложит включить отладку. Если клиентское приложение уже запущено без отладки, используйте пункт «Отладка → Подключение», выберите нужный сеанс в списке и подключите его к отладчику.

В настройках отладки (меню «Отладка → Параметры» или через диалог подключения) проверьте, какие предметы отладки выбраны: «Тонкий клиент», «Толстый клиент», «Веб-клиент», «Сервер». По умолчанию отлаживается клиентский контекст. Если код обработки выполняется в серверных вызовах, отметьте и серверный предмет отладки — иначе точки останова в серверных процедурах будут игнорироваться.

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

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

Открытие внешней обработки для отладки

Ключевой момент: чтобы отладчик видел модуль внешней обработки, файл должен быть открыт в Конфигураторе через «Файл → Открыть». После открытия в дереве появится структура обработки, и вы сможете открыть модуль формы, модуль объекта и модули команд. Точки останова ставятся именно в этих открытых модулях.

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

Отладка обработки, подключённой через БСП

В конфигурациях на Библиотеке стандартных подсистем внешние обработки обычно регистрируются в справочнике «Дополнительные отчеты и обработки». В этом случае порядок такой: откройте .epf в Конфигураторе, поставьте точки останова, затем в клиентском приложении запустите обработку из интерфейса. Если точки не срабатывают, убедитесь, что в базу загружена та же версия файла, что открыта в Конфигураторе.

Отладка фонового выполнения

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

Отладка серверного кода внешней обработки

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

В клиент-серверном варианте сервер 1С по умолчанию запущен без поддержки отладки. Чтобы включить её, нужно остановить службу агента сервера 1С и запустить её с параметром -debug. На Windows это делается через оснастку служб или командную строку, на Linux — через параметры запуска службы. После перезапуска службы серверные сеансы становятся доступны для подключения отладчика.

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

Работа с точками останова и проверка результата

Точка останова ставится кликом по серому полю слева от строки кода или клавишей F9. Красный маркер означает активную точку. Если маркер отображается полым или с вопросительным знаком, платформа не смогла привязать точку к исполняемому коду — обычно это признак того, что открытый в Конфигураторе файл отличается от исполняемого или модуль ещё не загружен.

После остановки используйте «Вычислить выражение» (Shift+F9) для просмотра значений переменных, «Табло» для постоянного наблюдения за несколькими выражениями и стек вызовов для понимания, откуда пришло управление. Клавиши F10 (шаг через), F11 (шаг в) и Shift+F11 (шаг из) позволяют двигаться по коду построчно.

Проверка результата отладки — это не только «код дошёл до точки». Убедитесь, что переменные содержат ожидаемые значения, запросы возвращают данные, а после снятия точек останова обработка отрабатывает до конца без исключений. Полезно прогнать сценарий дважды: с отладкой и в обычном режиме, чтобы исключить влияние остановок на логику (например, на транзакции с тайм-аутами).

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

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

Точка останова
Норма

Сплошной красный маркер, при выполнении происходит остановка

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

Полый маркер или маркер с вопросом — код не привязан

Заголовок клиентского приложения
Норма

Есть пометка о режиме отладки

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

Пометки нет — сеанс запущен без отладки

Серверные процедуры
Норма

Остановка происходит и в коде &НаСервере

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

Останавливается только клиентский код — серверная отладка не включена

Значения переменных
Норма

В «Вычислить выражение» видны актуальные данные

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

Переменные пустые или не соответствуют ожиданиям — проверяйте логику выше по стеку

Типовые проблемы и их решение

Самая частая жалоба — «точки останова не срабатывают». Причины почти всегда одни и те же: файл в Конфигураторе отличается от исполняемого, сеанс не подключён к отладчику, код выполняется в другом предмете отладки (сервер вместо клиента) или строка, на которой стоит точка, реально не исполняется из-за условия выше по коду.

Вторая группа проблем — подключение к сеансу. Если в диалоге «Отладка → Подключение» список сеансов пуст, проверьте, что клиент запущен с разрешением отладки: для тонкого клиента отладка включается параметром командной строки или галочкой в диалоге запуска, для веб-клиента — настройкой публикации на веб-сервере. На веб-сервере отладка включается отдельно в файле настроек публикации, и без этого подключиться к веб-клиенту не получится.

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

Типичные ошибки
01
Открытие обработки только в режиме Предприятия — модуль не загружен в Конфигуратор, точки останова не работают
02
Правка файла после загрузки в справочник дополнительных обработок — в базе исполняется старая версия
03
Забытая отладка сервера в клиент-серверном варианте — серверные процедуры пропускаются
04
Отладка фонового задания без подключения его сеанса — код выполняется мимо отладчика
05
Оставленные точки останова и параметр -debug на рабочем сервере — лишние остановки и снижение производительности

Ограничения и альтернативные способы диагностики

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

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

После завершения работы не забудьте снять все точки останова («Отладка → Отключить точки останова» или удалить список), отключить отладку и, если включали параметр -debug на сервере, вернуть службу в обычный режим. Работа сервера в режиме отладки заметно снижает производительность и не должна быть постоянным состоянием продуктивной системы.

Итог

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

Отладка внешней обработки требует трёх условий: файл открыт в Конфигураторе, сеанс запущен под отладкой, серверная отладка включена (для клиент-серверного варианта). Точки останова не срабатывают — сначала сверяйте версию файла и предмет отладки. На рабочем сервере режим отладки после завершения работ отключайте.

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

Почему точка останова отображается полым кружком и не срабатывает?

Полый маркер означает, что платформа не привязала точку к исполняемому коду. Чаще всего открытый в Конфигураторе файл отличается от того, что реально выполняется (например, в базу загружена другая версия), либо модуль ещё не загружен — точка активируется после первого обращения к обработке. Также проверьте, что строка с точкой действительно исполняется: она может находиться внутри невыполняющегося условия.

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

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

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

Дождитесь старта фонового задания, откройте в Конфигураторе «Отладка → Подключение» и выберите сеанс фонового задания в списке. Если задание выполняется слишком быстро, временно добавьте в начало кода паузу или запустите ту же логику интерактивно из клиентского приложения.

Что делать, если в списке подключения нет нужного сеанса?

Проверьте, что клиент запущен с разрешением отладки: для тонкого клиента — соответствующий параметр в строке запуска или настройка в диалоге старта, для веб-клиента — включённая отладка в публикации на веб-сервере. Также убедитесь, что Конфигуратор и клиент подключаются к одной и той же информационной базе.

Влияет ли режим отладки на производительность сервера?

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

Отладка работает в файловой базе, но не работает в клиент-серверной. В чём причина?

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