Почему отладчик 1С не заходит в серверные функции и как это исправить

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

В процессе разработки на платформе 1С:Предприятие 8 программисты часто сталкиваются с ситуацией, когда отладка прекрасно работает в файловом режиме, но при переходе на клиент-серверный вариант (SQL) отладчик перестает "заходить" в процедуры и функции, помеченные директивой &НаСервере — для этой задачи есть инструмент пошаговой отладки кода в 1С:Предприятии. Это создает серьезные трудности, так как разработчик видит лишь входные параметры и конечный результат, теряя возможность проанализировать промежуточные вычисления внутри серверного контекста. Рассмотрим подробно, почему это происходит и как настроить систему для полноценной работы.

Причина 1: Служба сервера 1С запущена без режима отладки

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

  1. Откроем оснастку "Службы" (services.msc) и найдем службу 1C:Enterprise 8.3 Server Agent (в некоторых случаях может потребоваться установка комьюнити-лицензии на сервер 1С).
  2. Остановим службу. Перед этим желательно убедиться, что все пользователи вышли из базы, так как сеансы будут прерваны. При возникновении проблем со входом может помочь удаление спящих сеансов 1С.
  3. Запустим редактор реестра (regedit).
  4. Перейдем по следующему пути (путь может незначительно отличаться в зависимости от версии платформы): HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.3 Server Agent
  5. Найдем параметр ImagePath. В нем содержится строка запуска исполняемого файла ragent.exe.
  6. Нам необходимо дописать в конец строки ключ -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
    
  7. Сохраним изменения в реестре и запустим службу сервера заново.

Проанализируем ситуацию: теперь сервер 1С готов принимать запросы от отладчика. Однако помните, что включение этого режима на "боевом" сервере может снизить его производительность на 10-20%, поэтому после завершения работ ключ рекомендуется убрать.

Причина 2: Несоответствие имен информационной базы

Одной из самых неочевидных проблем является разница в написании имени базы. Отладчик 1С очень чувствителен к регистру символов и точному строковому соответствию. Если в списке баз у пользователя база называется Trade_Base, а в консоли администрирования сервера 1С она прописана как trade_base, отладка на сервере работать не будет.

Выясним причину такого поведения: при попытке зайти в серверный вызов конфигуратор запрашивает у сервера список предметов отладки. Сервер отдает список баз, и если имя базы в конфигураторе не совпадает (символ в символ) с именем на сервере, конфигуратор просто "не узнает" свою базу и проигнорирует серверный контекст.

Решение: приведите имена баз к единому виду везде: в настройках подключения клиента и в консоли кластера серверов 1С.

Причина 3: Настройка автоматического подключения в Конфигураторе

Даже если сервер настроен правильно, конфигуратор может не знать, что вы хотите отлаживать именно серверные вызовы. Проверим настройки автоматического подключения предметов отладки:

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

Это позволит отладчику автоматически "подцеплять" серверный сеанс при начале выполнения кода. Особенно это важно для отладки Фоновых заданий, так как они выполняются в отдельном сеансе, который без этой настройки поймать практически невозможно.

Причина 4: Сетевые ограничения и Брандмауэр

Отладка в 1С использует определенный диапазон TCP-портов. Если между компьютером разработчика и сервером стоит Firewall (брандмауэр) или они находятся в разных подсетях, порты могут быть заблокированы.

Рассмотрим технические детали: сервер 1С использует порты из диапазона 1560-1591 для обмена данными с отладчиком. Убедитесь, что эти порты открыты на входящие соединения на сервере и на исходящие на стороне клиента. Если вы используете современный протокол HTTP для отладки (доступен в последних версиях платформы), убедитесь, что правильно настроен адрес сервера отладки в меню Сервис — Параметры — Запуск 1С:Предприятия — Отладка.

Причина 5: Особенности работы на Linux

Если ваш сервер 1С работает под управлением ОС Linux, правка реестра Windows не поможет. Разберем, как включить отладку в этой среде. Вам необходимо отредактировать конфигурационный файл службы srv1cv83. В зависимости от дистрибутива (Ubuntu, CentOS, Astra Linux), файл может находиться в /etc/init.d/ или /etc/sysconfig/.

Найдите переменную SRV1CV8_DEBUG и установите её значение в 1:


# Пример в файле конфигурации
SRV1CV8_DEBUG=1

После внесения изменений перезапустите службу сервера командой systemctl restart srv1cv83 или аналогичной.

Полезные советы по диагностике

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

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

← На главную