При работе с клиент-серверной архитектурой 1С:Предприятие разработчики часто сталкиваются с ситуацией, когда установленные точки останова в серверных процедурах просто не срабатывают. Код выполняется, но отладчик игнорирует попытки остановиться на нужной строке.
Причина проста: по умолчанию режим отладки на сервере 1С 8.3 отключен. Платформа позволяет контролировать только те процедуры, которые выполняются на стороне клиента. Всё, что происходит на сервере приложений, остаётся за пределами видимости отладчика.
Зачем нужна серверная отладка
Разработка конфигураций без возможности отследить серверный код превращается в лотерею. Вы пишете функции, обрабатываете данные в транзакциях, но не видите, что именно происходит в момент выполнения.
Отладка на сервере позволяет:
- Отслеживать значения переменных в серверных процедурах;
- Анализировать последовательность вызовов через стек;
- Выявлять узкие места в производительности;
- Находить логические ошибки до переноса на продуктивную систему.
Без включённого режима debug проверить работу серверного кода можно только через журнал регистрации или добавление временных сообщений. Оба способа требуют лишнего времени и усилий.
Подготовка к включению отладки
Перед началом процедуры убедитесь, что у вас есть права администратора сервера. Изменения будут вноситься в системный реестр Windows, поэтому доступ нужен полный.
Важный момент: перед включением отладки попросите всех пользователей сохранить данные и завершить работу в информационной базе. Изменения требуют перезапуска службы сервера 1С, что приведет к разрыву активных соединений. Несохранённые данные могут быть потеряны.
Режим отладки снижает производительность сервера приложений. Платформа тратит дополнительные ресурсы на поддержку механизмов отладки, даже если в данный момент никто не использует отладчик. По этой причине на продуктивных серверах с большим количеством пользователей debug лучше не включать постоянно.
Многие компании используют отдельный тестовый сервер для разработки и отладки. Это правильный подход, который позволяет не влиять на работу основной системы.
Пошаговая инструкция включения debug
Процесс включения режима отладки на сервере 1С 8.3 состоит из нескольких этапов. Действуйте аккуратно, особенно при работе с реестром.
Шаг 1. Остановка службы
Зайдите на сервер, где установлена платформа 1С:Предприятие. Откройте оснастку управления службами Windows. Быстрый способ — нажать Win + R
и ввести команду services.msc.
В списке служб найдите «Агент сервера 1С:Предприятия 8.3». Название может незначительно отличаться в зависимости от разрядности платформы. Для 64-битной версии служба называется «1C:Enterprise 8.3 Server Agent (x86-64)».
Кликните правой кнопкой по службе и выберите «Остановить». Дождитесь полной остановки. Можно открыть диспетчер задач и убедиться, что процессы ragent.exe и rphost.exe завершены.
Шаг 2. Редактирование реестра
Нажмите Win + R и введите команду regedit. Откроется редактор реестра Windows.
В левой панели разверните дерево и перейдите по пути:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent
Для 64-битной версии путь может выглядеть так:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)
В некоторых системах вместо CurrentControlSet используется ControlSet001. Если не нашли по первому пути — проверьте альтернативный вариант.
Шаг 3. Изменение параметра ImagePath
В правой части окна редактора найдите параметр с именем ImagePath. Это строковый параметр, который содержит путь запуска службы и все её аргументы.
Дважды кликните по параметру ImagePath. Откроется окно редактирования.
Текущее значение выглядит примерно так:
"C:\Program Files\1cv8\8.3.22.2106\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.2106\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Будьте внимательны: не удалите случайно другие параметры и не измените кавычки. Добавляйте -debug
именно в конец, после всех существующих аргументов. Хотя параметр технически можно разместить в любом месте после пути к ragent.exe, рекомендуется добавлять его в конец для единообразия и удобства.
Нажмите ОК и закройте редактор реестра.
Шаг 4. Запуск службы
Вернитесь в оснастку управления службами. Найдите «Агент сервера 1С:Предприятия 8.3» и запустите её через контекстное меню.
Проверьте, что служба успешно запустилась. Если возникла ошибка запуска — вернитесь к редактору реестра и проверьте правильность внесённых изменений. Часто проблема возникает из-за лишних или отсутствующих кавычек.
Можно открыть свойства службы и посмотреть поле «Исполняемый файл»
на вкладке «Общие». Там должен отображаться параметр -debug в конце строки.
Настройка брандмауэра Windows
После включения debug на сервере 1С часто возникает ситуация, когда отладчик всё равно не подключается. Точки останова по-прежнему не срабатывают, хотя в реестре всё настроено правильно.
Причина кроется в брандмауэре Windows.
Платформа 1С использует диапазон портов 1560-1591 для обмена данными в процессе отладки. Когда вы запускаете отладку с клиентской машины, сервер инициирует обратное соединение к вашему компьютеру. Это входящее подключение блокируется файерволом на клиентской стороне.
Настройка портов на сервере
Откройте брандмауэр Windows на сервере приложений. Нажмите Win + R, введите firewall.cpl и нажмите Enter.
Перейдите в раздел «Дополнительные параметры». Откроется оснастка «Брандмауэр Windows в режиме повышенной безопасности».
В левой панели выберите «Правила для входящих подключений». В правой части нажмите «Создать правило».
Выберите тип правила «Для порта» и нажмите «Далее».
Укажите протокол TCP и введите следующие порты через запятую:
1540, 1541, 1560-1591
Порт 1540 используется для агента сервера при подключении через консоль администрирования. Порт 1541 нужен для менеджера кластера серверов. Диапазон 1560-1591 — это рабочие процессы и отладка.
Выберите действие «Разрешить подключение» и примените правило ко всем профилям (доменный, частный, публичный).
Задайте понятное имя правилу, например «1С: Отладка и работа сервера».
Настройка портов на клиенте
На компьютере разработчика откройте брандмауэр аналогичным способом.
Создайте правило для входящих подключений по протоколу TCP для диапазона портов 1560-1591. Также добавьте поддержку UDP для этого же диапазона, если планируете использовать режим отладки через UDP-протокол.
Многие забывают про настройку клиентской машины, хотя именно здесь чаще всего кроется проблема. Сервер пытается подключиться к отладчику на вашем компьютере, но брандмауэр блокирует входящее соединение.
Проверка работы отладки
После всех настроек пора проверить, работает ли режим debug на сервере 1С 8.3.
Запустите конфигуратор базы данных. Перейдите в меню «Отладка» и выберите «Начать отладку». Платформа запустит сеанс в режиме предприятия. Рекомендуется использовать тонкий клиент, если именно так работают ваши пользователи.
Откройте любой серверный модуль. Найдите процедуру с контекстом &НаСервере или &НаСервереБезКонтекста. Установите точку останова на одной из строк кода внутри процедуры.
Выполните действие в интерфейсе, которое вызовет эту процедуру.
Если всё настроено верно — выполнение кода остановится на точке останова. Вы увидите текущую строку, подсвеченную жёлтым цветом. В нижней части окна появится статистика по количеству вызовов.
Теперь можно использовать инструменты отладчика:
- F11 — войти в функцию или процедуру;
- F10 — перешагнуть через функцию;
- Shift + F11 — выйти из текущей функции;
- F5 — продолжить выполнение до следующей точки останова.
Наведите курсор мыши на любую переменную в коде — всплывёт подсказка с её текущим значением.
Инструменты отладчика 1С
После включения отладки на сервере становятся доступны все возможности встроенного отладчика платформы.
Табло и вычислить выражение
Откройте меню «Отладка» и выберите «Табло». Это окно позволяет добавлять переменные для постоянного наблюдения. Введите имя переменной, и система будет отображать её значение на каждом шаге отладки.
Функция «Вычислить выражение» даёт возможность выполнить произвольный код прямо во время остановки. Можно проверить значение сложного выражения или даже изменить содержимое переменной для тестирования альтернативного сценария.
Стек вызовов
Стек вызовов показывает последовательность выполнения процедур и функций, которая привела к текущей точке кода.
Откройте «Отладка → Стек вызовов». Вы увидите список процедур снизу вверх: от точки входа в программу до текущей строки. Двойной клик по любому элементу стека переместит курсор в соответствующую строку кода.
Это особенно полезно при анализе сложных алгоритмов с множественными вложенными вызовами.
Условные точки останова
Обычная точка останова срабатывает каждый раз, когда выполнение доходит до неё. В циклах с сотнями итераций это неудобно.
Кликните правой кнопкой по точке останова и выберите «Свойства точки останова». Здесь можно задать условие: останавливаться только когда выполняется определённое выражение.
Например, условие Счетчик > 50
заставит отладчик остановиться только когда переменная Счетчик превысит значение 50.
Также доступна настройка останова по количеству попаданий. Укажите число, и точка сработает только на N-ном проходе через эту строку.
Отладка через HTTP-соединение
Если сервер 1С работает через веб-сервер IIS или Apache, стандартный режим отладки через TCP может не работать. В этом случае используется отладка по протоколу HTTP.
Добавьте в строку запуска службы дополнительный параметр -http:
"C:\Program Files\1cv8\8.3.22.2106\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http
После перезапуска службы в конфигураторе перейдите в «Отладка → Подключение». Установите галочку «Искать предметы отладки на удалённом компьютере» и укажите IP-адрес или имя сервера.
Платформа найдёт доступные предметы отладки и подключится к серверу по HTTP-протоколу.
Отладка на сервере Linux
Для серверов под управлением Linux процедура включения debug отличается от Windows. Изменения вносятся в конфигурационный файл службы.
Остановите сервер 1С командой:
sudo service srv1cv83 stop
Откройте файл /etc/init.d/srv1cv83
в текстовом редакторе с правами суперпользователя:
sudo nano /etc/init.d/srv1cv83
Найдите закомментированную строку #SRV1CV8_DEBUG=
и раскомментируйте её, установив значение 1:
SRV1CV8_DEBUG=1
Для RPM-систем (CentOS, RHEL, Fedora) правки вносятся не в сам скрипт, а в конфигурационный файл /etc/sysconfig/srv1cv83.
Начиная с версии платформы 8.3.22.1750 параметры указываются в systemd-юните. Откройте файл службы:
sudo nano /opt/1cv8/x86_64/8.3.22.1750/srv1cv8-8.3.22.1750@.service
Добавьте строку в секцию [Service]:
Environment=SRV1CV8_DEBUG=-debug
Сохраните изменения и перезапустите службу:
sudo systemctl daemon-reloadsudo service srv1cv83 start
Частые проблемы и их решение
Точки останова не срабатывают
Если вы включили debug в реестре, перезапустили службу, но точки останова всё равно не работают — проверьте брандмауэр. Проблема в 90% случаев связана с заблокированными портами на клиентской машине.
Временно отключите брандмауэр Windows на компьютере разработчика. Если отладка заработала — дело в файерволе. Создайте правило для портов 1560-1591.
Служба не запускается после изменений
Ошибка запуска службы после добавления -debug
указывает на синтаксическую ошибку в параметре ImagePath.
Откройте реестр и проверьте:
- Сохранены ли кавычки вокруг пути к ragent.exe
- Есть ли пробел перед
-debug - Не добавились ли лишние символы
В версиях платформы до 8.3.9 порядок параметров мог иметь значение. Если служба не запускается — попробуйте переместить -debug ближе к началу строки, сразу после пути к исполняемому файлу.
Отладка работает медленно
Режим debug снижает производительность сервера. Если отладка стала работать слишком медленно — возможно, сервер перегружен или не хватает оперативной памяти.
Закройте все лишние сеансы отладки. Платформа создаёт отдельные процессы для каждого подключённого отладчика, что увеличивает потребление ресурсов.
Рассмотрите возможность использования отдельного сервера для разработки. Это позволит отлаживать код без влияния на работу пользователей.
Не видны предметы отладки
При попытке подключиться к серверу список доступных предметов отладки пуст.
Убедитесь, что:
- Служба сервера 1С запущена с параметром
-debug - Диапазон портов в настройках отладчика соответствует реальному (по умолчанию 1560-1591)
- Между клиентом и сервером нет сетевых ограничений
В конфигураторе откройте «Отладка → Подключение → Настройка». Проверьте указанный диапазон портов. Если на сервере используются нестандартные порты — укажите их здесь.
Отключение режима отладки
После завершения разработки режим debug рекомендуется отключить. Это освободит системные ресурсы и повысит производительность сервера.
Процедура обратная включению:
- Остановите службу «Агент сервера 1С:Предприятия 8.3».
- Откройте редактор реестра.
- Найдите параметр ImagePath в соответствующей ветке.
- Удалите
-debugиз конца строки. - Сохраните изменения и запустите службу.
Для Linux — закомментируйте или удалите строку SRV1CV8_DEBUG=1 из конфигурационного файла и перезапустите сервер.
Особенности работы в разных версиях
В версии 8.3.8 и некоторых более ранних релизах параметр -debug должен был располагаться строго в конце строки ImagePath. Размещение его в середине приводило к ошибке запуска службы.
Начиная с версии 8.3.10 платформа стала более гибкой к порядку параметров. Вы можете добавлять -debug в любое место после пути к ragent.exe.
В версиях 8.2 путь в реестре отличается:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.2 Server Agent
Для версии 8.1:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent
Сам принцип включения остаётся одинаковым для всех версий платформы.
Рекомендации по использованию
|
Параметр |
Рекомендация |
|
Продуктивный сервер |
Не включать debug постоянно |
|
Тестовый сервер |
Можно держать включённым |
|
Количество пользователей |
При 50+ активных сеансах отладка замедлит работу |
|
Частота использования |
Включать только на время разработки |
|
Альтернатива |
Использовать отдельный сервер для отладки |
Платформа 1С предоставляет мощные инструменты для отладки серверного кода. Правильная настройка debug-режима экономит часы работы разработчика и помогает создавать качественные решения.
Включение отладки на сервере 1С 8.3 — процедура несложная, но требующая внимательности при работе с системным реестром и настройке сетевых портов. Следуйте описанной инструкции, и вы сможете эффективно отлаживать любой код, выполняющийся на стороне сервера приложений.