Почему не срабатывает отладчик внешней обработки в 1С и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

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

Понимание проблемы: Клиент и Сервер

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

Шаг 1. Включение ключа -debug на сервере 1С

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

  1. Откройте оснастку служб Windows (Services.msc).
  2. Найдите службу "Агент сервера 1С:Предприятия 8.3".
  3. Откройте ее свойства и посмотрите строку запуска (путь к исполняемому файлу). Она должна выглядеть примерно так:

"C:\Program Files\1cv8\8.3.22.1923\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

Важно: Если ключа -debug в конце строки нет, вам необходимо добавить его через реестр Windows. После редактирования реестра службу необходимо обязательно перезапустить.

Если же ваш сервер 1С работает под управлением Linux, ключ отладки прописывается в конфигурационном файле, например, /etc/default/srv1cv83. Там необходимо найти переменную SRV1CV8_DEBUG и установить ей значение 1, после чего перезапустить службу (daemon).

Шаг 2. Выбор протокола отладки: TCP или HTTP

Платформа 1С поддерживает два протокола отладки. Стандартный TCP (включается ключом -debug) требует открытых портов в диапазоне 1560–1591 между сервером и вашим компьютером. Если брандмауэр блокирует обратное соединение от сервера к клиенту, отладка не сработает.

В качестве альтернативы рассмотрим HTTP-отладку. Она стабильнее работает при сложных сетевых настройках. Для ее активации в строке запуска службы сервера вместо (или вместе с) -debug используется ключ -http. Выбор протокола также указывается в настройках Конфигуратора перед запуском сеанса.

Шаг 3. Настройка автоматического подключения в Конфигураторе

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

  1. Перейдите в меню верхнего окна: ОтладкаПодключение...
  2. Нажмите кнопку Автоматическое подключение.
  3. Обязательно установите флажки напротив пунктов Серверные процедуры и Фоновые задания.

Если эти галочки сняты, Конфигуратор не "подхватит" управление, когда алгоритм перейдет из клиентского модуля в серверный (например, в модуль объекта внешней обработки).

Шаг 4. Правильное открытие файла обработки

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

  1. Откройте внешнюю обработку (файл .epf) в Конфигураторе через Файл -> Открыть.
  2. Установите необходимые точки останова в тексте модуля (клавиша F9).
  3. Запустите режим Предприятия (F5).
  4. В режиме Предприятия откройте эту же обработку точно таким же путем (например, с того же локального диска, избегая использования сетевых путей в одном месте и локальных в другом).

Шаг 5. Альтернативный метод: Остановка по ошибке

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


// Вставляем этот код в то место, где хотим прервать выполнение
А = 1 / 0; 

Предварительно в Конфигураторе необходимо включить остановку по ошибке (Отладка -> Остановка по ошибке... -> поставить галочку). При выполнении деления на ноль система выдаст исключение и, если сервер работает в режиме отладки, автоматически выбросит вас в Конфигуратор на строке с ошибкой. Там вы сможете просмотреть значения локальных переменных (в окне "Табло" или по комбинации Shift-F9).

Особенности фоновых заданий и безопасного режима

Если ваша обработка работает через БСП (Библиотека стандартных подсистем) и выполняет длительные операции, ее код запускается в изолированном фоновом задании. В таком случае обычные точки останова могут игнорироваться. Рекомендуем использовать HTTP-отладку и программный вызов ожидания, чтобы успеть вручную подключить сеанс фонового задания в окне подключений.

Также помните, что при подключении через справочник "Дополнительные отчеты и обработки" код может выполняться в Безопасном режиме. На время отладки и доработки открывайте обработку просто через меню Файл — это избавит от множества ограничений, блокирующих работу отладчика.

← На главную