Ситуации, когда после аварийного отключения питания или системного сбоя на сервере 1С:Предприятие перестает работать отладка, встречаются довольно часто. Даже если служба ragent запущена и пользователи могут работать в базе, конфигуратор может «не видеть» предметы отладки. В этой статье мы подробно разберем, как восстановить работоспособность этого механизма, проанализируем настройки сервера и рассмотрим неочевидные причины блокировки соединений.
Разберем ситуацию, которая часто возникает в доменной среде. Если сервер 1С и контроллер домена (DC) перезагружаются одновременно (например, после восстановления питания), может возникнуть конфликт очередности. Рассмотрим причину: если служба 1C:Enterprise 8.3 Server Agent стартует раньше, чем поднимется сетевой стек и произойдет авторизация в контроллере домена, механизмы межпроцессного взаимодействия могут инициализироваться некорректно.
Выясним, как это лечится. В простейшем случае помогает обычная перезагрузка сервера приложений уже после того, как контроллер домена полностью вошел в рабочий режим. Если же вы хотите автоматизировать этот процесс, проанализируем настройки службы: в свойствах службы 1С на вкладке «Зависимости» можно указать зависимости от сетевых служб или настроить «Отложенный запуск» (Delayed Start), чтобы дать серверу время на установку всех необходимых связей.
Проверим самое очевидное, но критически важное условие — наличие ключа -debug в параметрах запуска службы. Без этого флага сервер 1С принципиально не будет предоставлять информацию для отладчика. Посмотрим, как должна выглядеть правильная строка запуска в реестре Windows. Путь к ветке реестра обычно следующий:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent
Проанализируем пример корректной строки запуска для версии платформы 8.3.24 (для работы со сложными структурами рекомендуем Analyzer 1C — веб-инструмент для анализа зависимостей):
"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -srvc -agent -regport 1641 -port 1640 -range 1560:1591 -d "C:\srvinfo" -pingperiod 3000 -pingtimeout 15000 -debug
Обратим внимание на наличие параметра -debug в самом конце. Если его там нет, необходимо отредактировать значение ImagePath, добавить ключ и перезапустить службу 1С. Важно помнить, что при обновлении платформы или переустановке службы этот ключ может «слететь», поэтому его проверку нужно проводить в первую очередь.
Рассмотрим ситуацию со стороны клиентского места. Иногда отладка работает, но конфигуратор просто не подцепляет сеансы автоматически. Перейдем в меню «Отладка» — «Подключение». Выясним, установлены ли флажки в окне «Автоматическое подключение». Нам необходимо убедиться, что выбраны пункты:
Даже если ранее вы никогда не меняли эти настройки, после сбоя конфигурационного файла пользователя (v8user.cache) эти параметры могли вернуться к значениям по умолчанию. Проставим эти галки или используйте помощник отладки для быстрой настройки среды.
Проанализируем сетевой аспект. Отладчик 1С и предметы отладки при поиске друг друга активно используют IP-адрес 127.0.0.1 и имя localhost. Для устойчивой работы службы транспорта данных необходимо четко определить их соответствие. Разберем, как это сделать вручную. Откроем файл C:\Windows\system32\drivers\etc\hosts от имени администратора и добавим (или раскомментируем) следующую строку:
127.0.0.1 localhost
Это гарантирует, что внутренние запросы платформы на локальный адрес будут обрабатываться мгновенно и без участия DNS-сервера, который после сбоя может работать некорректно.
Начиная с версии 8.3.7, платформа поддерживает два протокола отладки: TCP и HTTP. В последних версиях (например, 8.3.24) HTTP-отладка становится стандартом. Выясним, в чем ее особенность. Для ее работы одного ключа -debug недостаточно. Рассмотрим дополнительные шаги:
conf.cfg в папке bin\conf. В нем может быть установлен параметр DebuggerReselectStrategy, определяющий способ выбора отладчика.dbgs.exe (отладочный сервер) запущен. Он может запускаться как отдельная служба или внутри процесса ragent.1550-1560. Если ваш брандмауэр блокирует эти порты, отладка не подключится, даже если основной диапазон портов 1С (1540-1591) открыт.Аварийное завершение работы (падение серверов) часто приводит к повреждению временных файлов. В папке данных сервера (по умолчанию C:\srvinfo) накапливается информация о сессиях, которая может препятствовать новым подключениям. Рассмотрим процедуру безопасной очистки:
1C:Enterprise 8.3 Server Agent.C:\srvinfo\reg_1541 (номер порта может отличаться).snaccxt. Именно здесь хранится информация о текущих сеансах отладки.Этот метод часто помогает, когда «зависает» старая отладочная сессия, и сервер считает, что предмет отладки все еще занят другим конфигуратором.
Посмотрим на проблему с точки зрения протоколов. Часто отладка перестает работать из-за того, что Windows пытается использовать IPv6 для обращения к localhost, в то время как сервер 1С ожидает IPv4. Проанализируем настройки сетевого адаптера: если вы не используете IPv6 в своей инфраструктуре, попробуйте временно отключить его в свойствах сетевого подключения или установите приоритет IPv4 над IPv6 через реестр. Это исключит ситуацию, когда конфигуратор «стучится» по адресу ::1, а сервер слушает только 127.0.0.1.
Если на вашем сервере установлено несколько сетевых карт или есть виртуальные адаптеры (например, от VPN), сервер 1С может начать «слушать» отладку не на том IP-адресе, к которому обращается конфигуратор. Выясним, как закрепить конкретный адрес. В строке запуска ragent можно использовать ключ -se для явного указания сетевого интерфейса. Рассмотрим пример:
-se 192.168.1.10
Это жестко привяжет службу к указанному адресу, что минимизирует сетевые ошибки при поиске предметов отладки в сложной сетевой топологии.