Почему не работает отладка в серверных модулях 1С:ЗУП 3.1 и как это исправить?

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

При разработке и доработке современных типовых конфигураций, таких как Зарплата и Управление Персоналом 3.1, программисты часто сталкиваются с ситуацией, когда точка останова в серверном модуле не срабатывает. Это критическая проблема, так как большая часть бизнес-логики в управляемом приложении выполняется именно на стороне сервера. В этой статье мы подробно разберем, почему конфигуратор «пролетает» мимо точек останова и как правильно настроить окружение для полноценной отладки.

Шаг 1. Проверяем флаг отладки в параметрах запуска службы

Первым делом проанализируем настройки самой службы 1C:Enterprise 8.3 Server Agent. По умолчанию сервер 1С запускается без возможности отладки из соображений производительности. Если флаг не установлен, отладчик просто не сможет «увидеть» серверные вызовы.

Для включения режима отладки в Windows выполним следующие действия:

  1. Откроем редактор реестра (regedit).
  2. Перейдем по пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (название ветки может незначительно отличаться в зависимости от версии платформы).
  3. Найдем параметр ImagePath.
  4. Добавим в строку запуска флаг -debug.

Важный нюанс: флаг должен располагаться в правильном месте. Рассмотрим пример правильной строки запуска:


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

Если мы работаем на операционной системе Linux, то редактировать нужно файл настроек скрипта запуска (обычно это /etc/sysconfig/srv1cv83). Найдем там переменную и установим значение:

SRV1CV8_DEBUG=1

После изменения реестра или конфигурационного файла обязательно нужно перезапустить службу сервера 1С через консоль services.msc. Без перезапуска изменения не вступят в силу.

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

Даже если сервер запущен с нужным флагом, Конфигуратор должен знать, к каким типам соединений ему следует подключаться автоматически. Выясним причину, почему это важно для ЗУП 3.1. В этой программе многие операции (особенно формирование отчетов и длительные операции) выполняются во внешних или фоновых соединениях.

Рассмотрим порядок настройки в Конфигураторе:

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

Проанализируем ситуацию: если мы отлаживаем обработку, которая запускает длительную операцию на сервере, точка останова не сработает, пока не включен флаг Фоновые задания. Это связано с тем, что 1С порождает новый сеанс для выполнения кода, и отладчик должен «поймать» его в момент создания.

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

Начиная с версии платформы 8.3.7, появилось два способа взаимодействия отладчика и сервера. Если настройки протокола в Конфигураторе и на сервере не совпадают, отладка работать не будет. Разберем подробнее каждый вариант.

TCP-отладка: Это классический вариант. Для его работы сервер должен иметь возможность «достучаться» до компьютера разработчика по сети. Если между ними стоит брандмауэр, необходимо открыть диапазон портов (по умолчанию с 1560 по 1591).

HTTP-отладка: Более современный способ, использующий специальный сервис dbgs. Для его включения на сервере вместо простого флага -debug используются дополнительные параметры, указывающие адрес сервера отладки.

Выясним, какой протокол выбран у нас. Зайдем в Сервис — Параметры — вкладка Отладка. Посмотрим, какой переключатель установлен в поле «Протокол отладки». Если вы находитесь в одной локальной сети с сервером, проще всего использовать TCP/IP.

Шаг 4. Особенности отладки отчетов в ЗУП 3.1

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


ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
Результат = ДлительныеОперации.ВыполнитьВФоне("Отчеты.МойОтчет.Сформировать", ПараметрыОтчета, ПараметрыВыполнения);

Чтобы попасть внутрь процедуры Сформировать, нужно убедиться, что в настройках автоматического подключения (шаг 2) активен пункт Фоновые задания. Если это не помогает, в некоторых случаях (только для целей разработки!) можно временно отключить фоновое выполнение в настройках самой программы или через константы, чтобы код выполнился в текущем клиентском сеансе.

Шаг 5. Проблемы с сетевыми экранами и кэшем

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

Подведем итог: для успешной отладки в ЗУП 3.1 нам необходимо триединство настроек: включенный флаг -debug в реестре сервера, перезапущенная служба и правильно расставленные галочки в окне Автоподключение конфигуратора. Проверив эти три точки, вы в 99% случаев решите проблему с «невидимостью» серверного кода.

← На главную