Почему не работает отладка расширения конфигурации при включении внешних пользователей в 1С и как это исправить

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

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

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

Выясним причину: почему точка останова становится серой

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

  1. Запуск через веб-клиент или веб-сервер: Внешние клиенты подключаются к системе через веб-публикацию (IIS или Apache). По умолчанию Конфигуратор не перехватывает автоматический запуск серверных вызовов и веб-сеансов без явных настроек отладчика.
  2. Использование механизма разделения данных (SaaS): При работе с внешними пользователями часто активируется разделение данных (общие реквизиты ОбластьДанныхОсновныеДанные и ОбластьДанныхВспомогательныеДанные). Сеансы в разделенных областях данных требуют разрешения перехвата разделенных сеансов в настройках отладчика.
  3. Запуск сервера 1С без ключа отладки: Если служба агента кластера 1С (процесс rphost) запущена без параметра -debug, код, исполняемый на стороне сервера, не останавливается на точках останова.

Чтобы убедиться, исполняется ли код расширения на самом деле, достаточно добавить запись в журнал регистрации с помощью функции ЗаписатьИндексПротокола() или функции ЗаписьЖурналаРегистрации(). Если запись появляется, значит, расширение работает исправно, а проблема заключается исключительно в отладке.

Разберем по шагам: настройка автоматического подключения отладчика

Рассмотрим порядок действий для того, чтобы Конфигуратор автоматически перехватывал сеансы внешних пользователей и веб-клиентов при традиционной TCP-отладке:

  1. Откроем Конфигуратор под пользователем с правами администратора.
  2. В главном меню перейдем в раздел Отладка > Подключение...
  3. В открывшемся окне нажмем кнопку Настройка автоматического подключения...
  4. Установим флажки напротив следующих предметов отладки:
    • Сервер
    • Веб-клиент
    • HTTP-сервисы / WEB-сервисы
    • Фоновые задания
  5. Подтвердим выбор нажатием кнопки ОК.

После применения этих настроек при выполнении кода внешним пользователем через веб-клиент Конфигуратор попытается автоматически подключиться к созданному предмету отладки.

Альтернативное и более надежное решение: переход на HTTP-отладку

Традиционная отладка по протоколу TCP/IP (использующая диапазон портов 1560–1591) часто теряет связь с процессами rphost при перенаправлении сеансов внешних пользователей или при работе через веб-сервер. Начиная с платформы 8.3.7, 1С предоставляет более стабильный механизм — HTTP-отладку.

Рассмотрим основные преимущества HTTP-отладки по сравнению с классической TCP-отладкой:

Как включить HTTP-отладку на сервере 1С

Для перевода кластера 1С:Предприятие на работу по протоколу HTTP необходимо выполнить настройку службы агента сервера:

  1. Остановим службу Агент сервера 1С:Предприятия 8.3.
  2. Откроем реестр Windows (или конфигурационный файл службы в Linux) и найдем строку запуска службы ragent.exe.
  3. В параметры запуска службы добавим ключи: -debug -http
  4. Если сервер отладки запускается на отдельном порту или адресе, явно укажем параметр -debugServerAddr.
  5. Запустим службу агента сервера 1С.
  6. В Конфигураторе перейдем в меню Сервис > Параметры > вкладка Отладка, выберем протокол HTTP и укажем адрес сервера отладки.

После переключения на HTTP-протокол отладки точки останова в модулях расширений перестанут становится серыми при вызове процедур и функций под сеансами внешних пользователей, обеспечивая комфортную и стабильную разработку.

← На главную