При разработке и сопровождении систем на платформе 1С:Предприятие программисты часто сталкиваются с ситуацией, когда точки останова в клиентском коде (например, в формах или обработчиках клиентских событий) срабатывают без проблем, но при попытке зайти внутрь серверной процедуры или функции отладчик просто «перескакивает» её. Особенно это сбивает с толку начинающих разработчиков, когда и серверная, и клиентская части 1С запущены на одном локальном компьютере.
Причина такого поведения кроется в архитектуре платформы. По умолчанию сервер 1С:Предприятия запускается в режиме высокой производительности, где функции отладки отключены для экономии системных ресурсов и обеспечения максимальной безопасности. Чтобы включить возможность отладки серверного кода, нам необходимо принудительно указать службе сервера специальный ключ запуска. Рассмотрим подробно, как настроить этот режим в различных операционных системах, как правильно выбрать протокол отладки и какие смежные сетевые параметры необходимо проверить.
Выясним причину проблемы и по шагам разберем процесс настройки серверной отладки для операционных систем Windows и Linux, а также особенности конфигурации самого клиента 1С.
---
Прежде чем перейти к практике, проанализируем, как устроен механизм отладки. В клиент-серверном варианте работы системы код выполняется в разных процессах:
1cv8.exe, тонкий или толстый клиент) выполняется на локальном компьютере пользователя.rphost.exe).Для того чтобы Конфигуратор мог «перехватить» выполнение кода внутри процесса rphost.exe, этот процесс должен быть запущен в специальном режиме. За это отвечает параметр запуска -debug главного агента сервера 1С (ragent.exe). Если этот параметр не передан при старте службы, сервер игнорирует любые попытки подключения отладчика.
---
Если ваш сервер приложений 1С функционирует в среде Windows, его параметры запуска хранятся в системном реестре. Нам потребуется отредактировать строковый параметр службы Агента сервера.
Рассмотрим детальный алгоритм действий:
Перед внесением любых изменений в реестр необходимо остановить службу сервера 1С, иначе операционная система может заблокировать запись параметров или изменения не вступят в силу после перезапуска. Для этого нажмите сочетание клавиш Win + R, введите в появившемся окне команду services.msc и нажмите Enter.
В открывшемся списке служб найдите службу с именем «Агент сервера 1С:Предприятия 8.3» (название может незначительно отличаться в зависимости от установленной версии платформы). Нажмите по ней правой кнопкой мыши и выберите пункт «Остановить».
Снова нажмите сочетание клавиш Win + R, введите regedit и нажмите Enter для запуска редактора реестра.
Перейдите по следующему пути:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)
Примечание: Если вы используете 32-разрядную версию сервера или другую версию платформы, имя конечной ветки может иметь вид 1C:Enterprise 8.3 Server Agent или содержать конкретный номер релиза.
В правой части окна редактора реестра найдите строковый параметр с именем ImagePath. Этот параметр указывает операционной системе, какой исполняемый файл и с какими ключами необходимо запустить при старте службы.
Дважды кликните по параметру ImagePath, чтобы открыть окно редактирования значения. По умолчанию значение строки выглядит примерно следующим образом:
"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. Обратите внимание, что параметр должен быть добавлен обязательно через пробел. Итоговая строка должна принять следующий вид:
"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
Нажмите кнопку «ОК» для сохранения изменений в реестре.
Вернитесь в оснастку «Службы» (services.msc), выделите службу «Агент сервера 1С:Предприятия 8.3» и нажмите кнопку «Запустить». Если все действия выполнены верно, служба успешно запустится уже в режиме отладки.
---
В операционных системах семейства Linux параметры запуска демона (службы) сервера 1С:Предприятия хранятся в специальных конфигурационных файлах. Способ редактирования зависит от используемого дистрибутива Linux.
Посмотрим, как выполнить настройку по шагам:
Откройте терминал и запустите текстовый редактор с правами суперпользователя для редактирования конфигурационного файла службы:
sudo nano /etc/sysconfig/srv1cv83
Найдите в файле переменную SRV1CV8_DEBUG. По умолчанию она может быть закомментирована символом решетки # или иметь значение 0. Приведите строку к следующему виду:
SRV1CV8_DEBUG=1
Сохраните изменения в файле (в редакторе nano для этого используется комбинация клавиш Ctrl + O, затем подтвердите клавишей Enter, а для выхода нажмите Ctrl + X).
В дистрибутивах этого семейства конфигурационный файл располагается по другому пути. Откройте его для редактирования:
sudo nano /etc/default/srv1cv83
Аналогично предыдущему шагу найдите строку с переменной SRV1CV8_DEBUG и установите ей значение:
SRV1CV8_DEBUG=1
Сохраните изменения и закройте текстовый редактор.
После изменения конфигурационных файлов необходимо перезапустить службу сервера 1С, чтобы новые параметры конфигурации вступили в силу. Выполните в терминале команду:
sudo systemctl restart srv1cv83
Если в вашей системе не используется systemctl, перезапуск можно выполнить классическим способом:
sudo service srv1cv83 restart
---
Начиная с версии платформы 8.3.7, разработчикам доступно два протокола взаимодействия отладчика Конфигуратора и исполняемых процессов сервера:
Используется по умолчанию при обычном указании ключа -debug. При таком режиме отладки Конфигуратор и рабочие процессы сервера взаимодействуют напрямую по внутренним динамическим портам TCP. Этот вариант отлично подходит для простых конфигураций локальной сети, когда сервер приложений и клиент находятся в одном сегменте сети и между ними нет сложных правил маршрутизации или сетевых экранов.
Для его активации служба сервера запускается с параметром -debug -http. В этом режиме взаимодействие происходит через специальное промежуточное звено — локальный сервер отладки (исполняемый файл dbgs.exe под Windows или соответствующий бинарный файл под Linux). По умолчанию сервер отладки слушает порт 1550.
Этот способ незаменим, когда:
Важное правило совместимости: выбранный протокол отладки на сервере должен строго соответствовать настройкам отладки в самом Конфигураторе. Проанализируем, где это настраивается в клиенте 1С:
Откройте Конфигуратор, перейдите в меню Сервис — Параметры и выберите вкладку «Отладка». В группе параметров «Способ отладки» выберите соответствующий переключатель:
-debug.-debug -http. В этом случае в поле «Адрес отладчика» укажите адрес вашего сервера отладки (например, http://localhost:1550, если сервер установлен на вашем локальном компьютере).---
Даже при корректно настроенном сервере и прописанном ключе -debug отладка может не срабатывать, если запущенный сеанс пользователя автоматически не связывается со средой разработки. Разберем по шагам, как настроить автоматический перехват управления:
Тонкий клиент (для работы в управляемом приложении).Толстый клиент (для обычных форм).Фоновые задания (крайне важно, так как многие серверные процедуры вызываются асинхронно в фоновом режиме).Внешнее соединение (если вылавливаются ошибки интеграционных веб-служб или COM-соединений).---
Довольно частая ситуация: параметры прописаны, конфигурация верна, но точки останова на сервере по-прежнему игнорируются. Если клиент и сервер 1С находятся на одной машине, разработчики нередко считают, что сетевые ограничения на них не влияют. Однако локальный брандмауэр Windows (Windows Firewall) или сторонний антивирус все равно могут блокировать межпроцессный сетевой трафик.
Проанализируем сетевые требования для успешной работы отладчика:
По умолчанию рабочие процессы 1С (rphost.exe) динамически занимают сетевые порты из диапазона от 1560 до 1591. Конфигуратор пытается подключиться к этим портам. Брандмауэр должен разрешать любые входящие и исходящие соединения по этим портам.
Рекомендуется создать в брандмауэре Windows два правила (для входящих и исходящих подключений), разрешающие трафик по диапазону портов TCP 1560-1591.
Вся отладочная информация транслируется через выделенный порт сервера отладки (по умолчанию порт 1550). Убедитесь, что этот порт открыт для подключения. Проверить доступность порта на сервере можно с помощью утилиты PowerShell на клиентском компьютере:
Test-NetConnection -ComputerName ИМЯ_СЕРВЕРА -Port 1550
Иногда брандмауэр автоматически блокирует сетевую активность процессов ragent.exe, rmngr.exe или rphost.exe. Рекомендуется зайти в дополнительные параметры брандмауэра и добавить данные исполняемые файлы (которые лежат в каталоге установки платформы bin) в список исключений сетевого экрана.
---
Если отладка серверного кода так и не заработала, последовательно проверьте следующие пункты:
ragent.exe. Добавьте колонку «Командная строка» и убедитесь, что в параметрах запуска процесса действительно присутствует ключ -debug.Следуя этой подробной инструкции, вы сможете легко локализовать и решить проблему с отладкой серверных процедур, существенно ускорив процесс поиска и исправления ошибок в кодовой базе ваших прикладных решений.