Как настроить отладку функций на сервере 1С под управлением Linux

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

Настройка отладки на сервере 1С под управлением Linux (например, Debian или Ubuntu) часто становится серьезным испытанием для системных администраторов и разработчиков. В отличие от Windows-среды, где многие процессы автоматизированы, в Linux-версии требуется ручная правка конфигурационных файлов и понимание особенностей сетевого взаимодействия между компонентами системы. Рассмотрим подробно, как активировать режим отладки и что делать, если стандартные методы не приносят результата.

Анализ проблемы и выбор протокола отладки

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

Существует два основных протокола отладки:

  1. TCP-отладка (классический вариант): требует возможности прямого и обратного соединения между сервером 1С и рабочим местом разработчика. Именно здесь чаще всего возникают проблемы, так как сервер должен «уметь» инициировать соединение с клиентом.
  2. HTTP-отладка (современный вариант): использует специальный сервис dbgs (сервер отладки). В этом режиме и сервер, и клиент подключаются к посреднику, что делает работу через NAT и сложные сетевые структуры гораздо стабильнее.

Разберем по шагам, как настроить наиболее стабильный вариант — HTTP-отладку.

Шаг 1. Предварительная настройка конфигурационных файлов

Прежде всего, нам необходимо отредактировать файл переменных окружения сервера 1С. В большинстве дистрибутивов Linux путь к этому файлу выглядит так: /etc/default/srv1cv83 (или это может быть ссылка на файл в каталоге установки /opt/1cv8/x86_64/.../srv1cv83.conf).

Найдем строку, отвечающую за включение отладки, и убедимся, что параметр активирован. Рассмотрим пример настройки:


# Включение режима отладки
SRV1CV8_DEBUG=1

Однако простого включения флага DEBUG часто недостаточно для протокола TCP. Чтобы принудительно перевести сервер на HTTP-протокол, проанализируем скрипт инициализации. Выясним причину, по которой параметр -http может не подхватываться автоматически.

Шаг 2. Изменение параметров запуска службы

Нам необходимо модифицировать скрипт запуска сервера, чтобы добавить ключ -http в командную строку запуска демона ragent. Откроем файл /etc/init.d/srv1cv83 (или соответствующий unit-файл systemd) и найдем блок, где формируется переменная cmdline.

Проанализируем и изменим условие добавления флага отладки:


# Было:
[ "x$SRV1CV8_DEBUG" == "x1" ] && cmdline="$cmdline -debug"

# Стало:
[ "x$SRV1CV8_DEBUG" == "x1" ] && cmdline="$cmdline -debug -http"

Важный момент: использование ключа -http без дополнительных параметров заставляет сервер 1С автоматически запустить встроенный сервер отладки dbgs на стандартном порту. Это наиболее простой и эффективный способ для небольших и средних внедрений.

Шаг 3. Настройка внешнего соединения (comcntrcfg.xml)

В некоторых случаях для корректной работы COM-соединений и внешних подключений требуется создать файл конфигурации в каталоге conf сервера 1С. Рассмотрим структуру файла /opt/1cv8/x86_64/8.3.20.1590/conf/comcntrcfg.xml:


<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
    <debugconfig debug="true" protocol="tcp" debuggerURL="tcp://localhost:1560"/>
</config>

Внимание: Если вы решили использовать HTTP-отладку, данный файл может конфликтовать с настройками или быть избыточным. Попробуйте сначала настроить отладку без него, а если она не заработает — адаптируйте его под HTTP, указав соответствующий протокол и URL сервера отладки.

Шаг 4. Остановка служб и применение изменений

Выясним важную особенность управления процессами в Linux. Обычный перезапуск службы командой systemctl restart srv1cv83 не всегда корректно завершает все дочерние процессы rphost, которые могут «зависнуть» и продолжать работу со старыми параметрами отладки.

Выполним правильную последовательность действий:

  1. Остановим службу сервера 1С: systemctl stop srv1cv83.
  2. Проверим наличие оставшихся процессов пользователя usr1cv8: ps -ef | grep 1cv8. Если процессы остались, завершим их принудительно через kill -9.
  3. Выполним обновление конфигурации демонов: systemctl daemon-reload.
  4. Запустим службу: systemctl start srv1cv83.

Как показывает практика, в некоторых дистрибутивах (Debian 10/11) изменения в скриптах инициализации подхватываются системой только после полной перезагрузки операционной системы. Если после перезапуска службы параметры в ps -fU usr1cv8 не изменились, выполните reboot.

Шаг 5. Проверка работы режима отладки

После запуска проверим, что процессы действительно работают в нужном режиме. Выполним команду:

ps -fU usr1cv8

В выводе мы должны увидеть запущенные процессы ragent, rmngr и rphost с флагами -debug и -http. Также должен появиться процесс dbgs, если он запущен встроенными средствами платформы.

Теперь перейдем в Конфигуратор на рабочем месте разработчика:

  1. Откроем меню Сервис — Параметры.
  2. На вкладке Отладка выберем протокол HTTP.
  3. Укажем адрес нашего сервера 1С (например, http://192.168.1.17:1560).
  4. Проверим список предметов отладки (Отладка — Подключение). В списке должны появиться серверные сеансы.

Если серверные сеансы видны, попробуем установить точку останова в любом серверном модуле (например, в модуле приложения или общем модуле с признаком «Сервер»). При выполнении кода система должна штатно остановиться на выбранной строке.

Резюме и рекомендации

Подведем итоги нашего исследования. Для успешной отладки на Linux-сервере 1С следует придерживаться следующих правил:

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

← На главную