Как настроить отладку серверных процедур и функций в 1С:Предприятие на SQL-сервере

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

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

Выясним причину: почему отладка на сервере не работает по умолчанию

Когда мы запускаем конфигуратор и устанавливаем точку останова в серверной процедуре, программа может ее проигнорировать. Это происходит потому, что процесс rphost (рабочий процесс сервера 1С) по умолчанию запущен в обычном режиме производительности. Режим отладки требует дополнительных ресурсов и, что более важно, может приводить к временной «заморозке» рабочего процесса при срабатывании точки останова. Если в этом же процессе работают другие пользователи, их сеансы перестанут отвечать до тех пор, пока программист не продолжит выполнение кода или не снимет задачу. Именно поэтому настройка отладки — это осознанное действие администратора или разработчика.

Способ 1: Включение отладки через реестр Windows

Проанализируем самый распространенный метод для серверов под управлением ОС Windows. Нам необходимо внести изменения в параметры запуска службы Агент сервера 1С:Предприятия. Рассмотрим последовательность действий:

  1. Откроем редактор реестра. Для этого нажмем Win + R и введем команду regedit.
  2. Перейдем по следующему пути (в зависимости от версии платформы путь может незначительно отличаться): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent.
  3. Найдем параметр ImagePath. Это строка запуска службы, которая выглядит примерно так:
    
    "C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
    
  4. Нам нужно добавить ключ -debug в конец этой строки. Отредактируем параметр, чтобы он принял вид:
    
    "C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
    
  5. После сохранения изменений в реестре необходимо перезапустить службу 1С. Помним, что это приведет к отключению всех активных пользователей, поэтому такие работы проводятся в технологическое окно.

Способ 2: Использование протокола HTTP для отладки

Начиная с версии платформы 8.3.7, разработчики могут использовать более современный и стабильный протокол отладки — HTTP. Он особенно полезен, если сервер находится за брандмауэром или соединение происходит через VPN. Разберем, как его включить. Вместо обычного ключа -debug мы будем использовать комбинацию параметров.

В строке запуска в реестре (или в конфигурационном файле для Linux) добавим:

-debug -http

При использовании HTTP-отладки сервер 1С запускает специальный внутренний сервис (debug-server). По умолчанию он использует порт 1550. Это позволяет избежать проблем с динамическим выделением портов из диапазона 1560–1591, которые часто блокируются сетевыми экранами.

Настройка брандмауэра и сетевой доступности

Посмотрим на ситуацию, когда ключ установлен, сервер перезагружен, но точка останова все равно не срабатывает. Часто причиной является Firewall. Для успешной отладки по протоколу TCP (стандартный режим) необходимо, чтобы со стороны сервера были открыты порты из диапазона 1560:1591. Если же мы используем HTTP-отладку, убедимся, что открыт порт 1550.

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

Решение для критичных систем: запуск отдельной службы для отладки

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

  1. Создадим новую службу Windows с помощью команды sc create.
  2. Назначим ей другие порты, например: -port 2540 -regport 2541 -range 2560:2591.
  3. Укажем для этой службы отдельный каталог данных (параметр -d), чтобы настройки кластеров не пересекались.
  4. В строке запуска этой новой службы обязательно пропишем ключ -debug.

Таким образом, у нас появится полноценная среда для разработки («песочница»), где мы сможем останавливать процессы, анализировать переменные и не бояться, что rphost «повиснет» для всех сотрудников компании.

Отладка фоновых заданий

Фоновые задания — это особая сущность, которая выполняется в отдельном сеансе без участия пользователя. Чтобы отладчик «подцепил» такое задание, выполним следующие настройки:

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

Теперь, как только фоновое задание начнет выполняться на сервере с включенным ключом -debug, конфигуратор автоматически перехватит управление на установленной точке останова.

Влияние на производительность: стоит ли включать отладку на «проде»?

Проанализируем риски. Включение режима отладки увеличивает объем передаваемого трафика между сервером приложений и конфигуратором. Кроме того, увеличивается нагрузка на память рабочего процесса. Основная опасность — это человеческий фактор. Оставленная и забытая точка останова в коде, который вызывается часто, может парализовать работу всей организации.

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

Работа с Linux-серверами

Если сервер 1С работает под управлением Linux, реестра Windows там нет. В этом случае параметры запуска редактируются в конфигурационном файле. Обычно это файл /etc/init.d/srv1cv83 или настройки systemd по адресу /etc/default/srv1cv83. Найдем переменную SRV1CV8_DEBUG и установим ей значение 1. Это эквивалентно добавлению ключа в реестр.

Итоги и лучшие практики

Мы подробно разобрали механизмы включения серверной отладки. Подводя итог, выделим главные правила совместной работы программиста и администратора:

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

← На главную