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

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

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

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

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

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

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

Подготовка: включение отладки и проверка окружения

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

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

Открытие обработки в конфигураторе и расстановка точек останова

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

Расставляйте точки осмысленно: на входе в ключевую процедуру, перед проблемным запросом, внутри цикла обработки данных. Избегайте точек внутри интенсивно исполняемых циклов — остановка на каждой итерации замедлит анализ. Для таких случаев используйте условные точки останова: правый клик по точке → «Условие», например НомерСтроки = 150.

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

Запуск сеанса и подключение предметов отладки

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

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

Приёмы работы в отладчике

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

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

Если обработка работает с большими таблицами значений, просмотр всей коллекции в табло может «подвесить» отладчик. Вычисляйте отдельные ячейки, например ТЗ[0].Сумма, вместо разворачивания всей таблицы.
ПЗ
Практическое замечание

Отладка серверного кода и фоновых заданий

Если обработка вызывает серверные процедуры (директивы &НаСервере в форме или вызовы общих модулей), убедитесь, что в настройках подключения включён пункт отладки сервера. В клиент-серверной базе серверный код исполняет рабочий процесс сервера — отладчик подключается к нему автоматически, если сервер запущен с -debug.

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

Маршрут решения

Как выбрать способ отладки

Обработка выполняется вручную в вашем сеансеЗапускайте отладку через F5 из конфигуратора — это самый простой путь
Ошибка воспроизводится только у конкретного пользователяПодключитесь к его сеансу через Отладка → Подключение
Код исполняется в фоновом заданииПодключитесь к сеансу фонового задания или временно сделайте вызов синхронным
Точки останова не срабатывают в серверном кодеПроверьте, что сервер запущен с ключом -debug и включена отладка сервера в настройках подключения

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

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

Вторая группа проблем — отладка управляемых форм. Код с директивой &НаКлиенте исполняется в клиентском приложении, и для тонкого или веб-клиента могут понадобиться дополнительные настройки подключения. Проверяйте, какие предметы отладки видны в окне подключения: клиент, сервер, фоновые задания должны быть отмечены флажками.

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

Проверка результата и завершение отладки

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

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

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

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

Конфигуратор активируется, строка подсвечена, переменные доступны

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

Код проходит мимо — проверьте версию файла и подключение сеанса

Значения переменных в табло
Норма

Переменные содержат ожидаемые типы и данные

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

Неопределено или пустые коллекции там, где ожидались данные — ищите ошибку выше по коду

Поведение после исправления
Норма

Сценарий выполняется без ошибок, данные корректны

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

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

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

Итог

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

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

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

Можно ли отладить обработку, если нет доступа к конфигуратору?

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

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

Это признак рассинхронизации версий: файл .epf на диске изменился после открытия в конфигураторе или в предприятии открыта другая копия. Сохраните обработку, закройте и заново откройте её в обоих местах, затем повторите запуск.

Как отладить обработку в тонком клиенте?

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

Работает ли отладка внешних обработок в веб-клиенте?

Прямая отладка кода на веб-клиенте ограничена. Практичный подход — отладить серверную часть (она отлаживается стандартно) и максимально вынести логику на сервер, а клиентскую часть проверять в тонком клиенте, где отладчик работает полноценно.

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

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

Опасно ли включать отладку на рабочем сервере?

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