Рассмотрим классическую ситуацию, с которой сталкиваются разработчики и системные администраторы: сервер 1С развернут на ОС Linux (например, CentOS 7), а клиентская часть с Конфигуратором запускается на ОС Windows. Вы успешно включили отладку на сервере, в Конфигураторе в списке предметов отладки серверный сеанс подключен, но при выполнении кода на точке останова выполнение не останавливается (при этом в клиентских процедурах отладка работает исправно). Проанализируем эту ситуацию и разберем по шагам, как заставить серверную отладку работать стабильно.
Выясним причину такого поведения. При использовании стандартной TCP/IP-отладки (которая активируется параметром -debug по умолчанию) процесс взаимодействия между Конфигуратором и сервером 1С происходит в два этапа:
Если ваш рабочий компьютер находится за NAT (офисным или домашним роутером) или защищен брандмауэром Windows, удаленный сервер Linux физически не может "достучаться" до вашего Конфигуратора извне по этим портам. В результате сервер просто продолжает выполнять код, молчаливо игнорируя точки останова. Если быстро наладить сетевой доступ нет возможности, в качестве временного решения можно использовать расширение для отладки СКД и запросов под пользователем при недоступной серверной отладке.
Прежде чем переходить к сетевым настройкам, убедимся, что отладка вообще активирована в параметрах службы 1С. В ОС Linux это делается не через реестр, как в Windows, а через конфигурационные файлы демона.
Посмотрим на пример включения параметра SRV1CV8_DEBUG для CentOS 7. Вам необходимо отредактировать файл настроек службы (обычно это /etc/sysconfig/srv1cv83 или /etc/default/srv1cv83):
# Открываем файл конфигурации в текстовом редакторе, например nano:
nano /etc/sysconfig/srv1cv83
# Находим или добавляем строку:
SRV1CV8_DEBUG=1
После внесения изменений службу необходимо перезапустить. Однако, как мы выяснили ранее, простого включения флага -debug недостаточно для работы через интернет или NAT. Рассмотрим два пути решения проблемы.
Начиная с версии платформы 8.3.7, фирма "1С" реализовала режим отладки по протоколу HTTP. В этом режиме все соединения (и запросы, и обратные ответы) инициируются исключительно со стороны клиента к специальной службе отладки (модулю dbgs), которая запускается на сервере. Это полностью решает проблему обратной маршрутизации через NAT.
Разберем по шагам, как настроить HTTP-отладку на сервере CentOS 7:
systemctl stop srv1cv83
-http. Если вы используете старый формат скриптов инициализации, строка может выглядеть так:
[ "x$SRV1CV8_DEBUG" == "x1" ] && cmdline="$cmdline -debug -http"
Примечание: Если вы используете современные версии платформы (начиная с 8.3.20/8.3.22), где управление идет через systemd-шаблоны, необходимо отредактировать юнит-файл службы через команду systemctl edit srv1cv8-8.3.XX.XXXX@ и добавить параметр в блок Environment:
Environment="SRV1CV8_DEBUG=-debug -http"
systemctl daemon-reload
systemctl start srv1cv83
dbgs, который по умолчанию прослушивает порт 1550.
ps aux | grep dbgs
firewalld. Разрешим входящий TCP-порт 1550:
firewall-cmd --zone=public --add-port=1550/tcp --permanent
firewall-cmd --reload
http://192.168.1.100:1550.Если по каким-либо причинам вы вынуждены использовать старый протокол TCP/IP, вам придется обеспечить сетевую доступность вашего рабочего компьютера со стороны сервера Linux. Проанализируем, что для этого нужно сделать:
1cv8.exe./etc/hosts необходимо прописать связку IP-адреса и имени вашего компьютера: 192.168.1.50 workstation-developer.C:\Windows\System32\drivers\etc\hosts аналогично пропишите IP и имя сервера CentOS.Если после выполнения всех настроек (особенно в режиме HTTP) отладка всё равно не подхватывается, обратите внимание на следующие системные нюансы:
1. Проверка SELinux
Модуль безопасности SELinux в CentOS 7 по умолчанию включен и может блокировать сетевую активность процессов 1С на нестандартных портах. Проверьте его статус командой getenforce. Для диагностики проблемы временно переведите SELinux в разрешающий режим: setenforce 0. Если после этого отладка заработала, вам потребуется настроить правильные политики SELinux для процессов кластера 1С.
2. Строгое совпадение версий платформы
Критически важно убедиться, что версия платформы 1С, установленная на сервере Linux, абсолютно идентична версии платформы, в которой запущен Конфигуратор на Windows. Совпадение должно быть вплоть до последней цифры сборки (например, строго 8.3.14.1809 с обеих сторон). Малейшее различие в релизах часто приводит к тому, что отладчик подключается, но серверные точки останова игнорируются.