Разработка на платформе 1С:Предприятие часто требует анализа кода, который выполняется непосредственно на стороне сервера. Это касается модулей менеджеров, серверных процедур в модулях форм, а также фоновых заданий. В отличие от файлового варианта, где отладка работает «из коробки», серверный вариант требует специальной подготовки окружения. Разберем подробно, как включить этот режим, почему администраторы часто выступают против него на рабочих серверах и как организовать безопасную среду для разработки.
Когда мы запускаем конфигуратор и устанавливаем точку останова в серверной процедуре, программа может ее проигнорировать. Это происходит потому, что процесс rphost (рабочий процесс сервера 1С) по умолчанию запущен в обычном режиме производительности. Режим отладки требует дополнительных ресурсов и, что более важно, может приводить к временной «заморозке» рабочего процесса при срабатывании точки останова. Если в этом же процессе работают другие пользователи, их сеансы перестанут отвечать до тех пор, пока программист не продолжит выполнение кода или не снимет задачу. Именно поэтому настройка отладки — это осознанное действие администратора или разработчика.
Проанализируем самый распространенный метод для серверов под управлением ОС Windows. Нам необходимо внести изменения в параметры запуска службы Агент сервера 1С:Предприятия. Рассмотрим последовательность действий:
Win + R и введем команду regedit.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent.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"
-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
Начиная с версии платформы 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С на той же самой физической машине, но на других портах. Это позволит нам отлаживать код в тестовой базе, не затрагивая стабильность основной системы.
sc create.-port 2540 -regport 2541 -range 2560:2591.-d), чтобы настройки кластеров не пересекались.-debug.Таким образом, у нас появится полноценная среда для разработки («песочница»), где мы сможем останавливать процессы, анализировать переменные и не бояться, что rphost «повиснет» для всех сотрудников компании.
Фоновые задания — это особая сущность, которая выполняется в отдельном сеансе без участия пользователя. Чтобы отладчик «подцепил» такое задание, выполним следующие настройки:
Серверные процедуры и Фоновые задания.Теперь, как только фоновое задание начнет выполняться на сервере с включенным ключом -debug, конфигуратор автоматически перехватит управление на установленной точке останова.
Проанализируем риски. Включение режима отладки увеличивает объем передаваемого трафика между сервером приложений и конфигуратором. Кроме того, увеличивается нагрузка на память рабочего процесса. Основная опасность — это человеческий фактор. Оставленная и забытая точка останова в коде, который вызывается часто, может парализовать работу всей организации.
Рекомендация: если отладка на рабочей базе неизбежна, постарайтесь максимально изолировать свой сеанс. В консоли администрирования кластеров можно временно создать отдельный рабочий процесс и через параметры функциональных опций или настройки «Количество сеансов на процесс» добиться того, чтобы ваш сеанс работал в отдельном rphost. Это минимизирует риск блокировки других пользователей при остановке кода.
Если сервер 1С работает под управлением Linux, реестра Windows там нет. В этом случае параметры запуска редактируются в конфигурационном файле. Обычно это файл /etc/init.d/srv1cv83 или настройки systemd по адресу /etc/default/srv1cv83. Найдем переменную SRV1CV8_DEBUG и установим ей значение 1. Это эквивалентно добавлению ключа в реестр.
Мы подробно разобрали механизмы включения серверной отладки. Подводя итог, выделим главные правила совместной работы программиста и администратора:
Использование данных методов позволит вам эффективно находить ошибки в сложных запросах и серверных вызовах, сохраняя при этом контроль над инфраструктурой предприятия.