Почему отладчик 1С не останавливается на точке останова в модуле менеджера и как это исправить?

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

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

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

Решение 1: Включаем отладку на сервере 1С

Это самая распространенная причина. В целях повышения производительности по умолчанию отладка серверных вызовов в клиент-серверной архитектуре отключена. Чтобы ее активировать, необходимо внести изменения в параметры запуска службы сервера 1С. Действия зависят от операционной системы, на которой установлен сервер.

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

Для Windows

Нам потребуется отредактировать параметры запуска службы через реестр. Разберем по шагам:

  1. Остановите службу "Агент сервера 1С:Предприятия". Это можно сделать через консоль "Службы" (запускается командой services.msc) или через "Диспетчер задач".
  2. Откройте редактор реестра. Нажмите Win + R и введите команду regedit.
  3. Найдите нужную ветку реестра. Путь зависит от версии и разрядности платформы. Обычно он выглядит так: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.x Server Agent (x86-64). Замените 8.x на вашу версию.
  4. Измените параметр запуска. В этой ветке найдите ключ с именем ImagePath. Его значение — это строка запуска процесса ragent.exe. Нам нужно добавить в самый конец этой строки флаг -debug.

    Например, было:

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

    А должно стать (обратите внимание на -debug в конце):

    
    "C:\Program Files\1cv8\8.3.22.2106\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
    
  5. Запустите службу сервера. Вернитесь в оснастку "Службы" и запустите "Агент сервера 1С:Предприятия" обратно.

Для Linux

В Linux-системах настройка выполняется через редактирование файла юнита для systemd или скрипта запуска. Чаще всего достаточно добавить переменную окружения SRV1CV8_DEBUG=1 в файл, отвечающий за запуск службы сервера.

Проверка работоспособности

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

Решение 2: Подключаемся к фоновым заданиям

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

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

  1. В Конфигураторе перейдите в меню "Отладка" → "Подключение...".
  2. В открывшемся окне нажмите на кнопку "Автоматическое подключение...".
  3. Появится диалог настройки, в котором нужно установить флажок напротив пункта "Фоновые задания".

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

Существует также альтернативный способ для конфигураций, использующих Библиотеку стандартных подсистем (БСП). Можно запустить сеанс Предприятия со специальным ключом /РежимОтладки. Этот ключ заставляет многие фоновые задания выполняться синхронно, в том же сеансе, что позволяет отлаживать их без автоматического подключения.

Другие возможные проблемы

Если два основных способа не помогли, проблема может быть в чем-то еще, хотя это случается реже.

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

← На главную