Почему не работает отладка на сервере 1С после перехода на Windows 10 и как это исправить?

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

Переход на операционную систему Windows 10 часто преподносит сюрпризы разработчикам и системным администраторам 1С. Одна из наиболее распространенных и неприятных проблем после такого обновления — внезапный отказ работы отладки в процедурах и функциях, выполняющихся на стороне сервера (директива &НаСервере), в то время как отладка на клиенте (например, в обработчике ПриОткрытии) продолжает функционировать в штатном режиме.

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

Причина 1. Просроченный пароль учетной записи службы 1С (Решение с форума)

Рассмотрим весьма прозаичную, но крайне коварную ситуацию, с которой часто сталкиваются администраторы. Служба сервера 1С:Предприятия (ragent.exe) для доступа к сетевым и доменным ресурсам часто настраивается на запуск от имени специальной доменной или локальной учетной записи (например, USR1CV8).

Если в политиках безопасности Windows настроен ограниченный срок действия паролей, в определенный момент пароль этой учетной записи истекает. При этом операционная система может вести себя непредсказуемо:

  1. Служба 1С запускается и продолжает работать, используя кэшированные данные авторизации или за счет того, что процесс уже был инициализирован.
  2. Часть системных функций платформы продолжает выполняться, создавая иллюзию полной работоспособности.
  3. Однако при попытке инициализации отладочного соединения серверный процесс не может получить доступ к необходимым сетевым сокетам или подсистемам безопасности (таким как DCOM или сетевые интерфейсы локальной машины). Из-за этого серверная часть отладки полностью блокируется.

Решение проблемы:

Необходимо проверить состояние учетной записи, под которой запущена служба 1С. Для этого выполним следующие действия:

  1. Откроем оснастку «Службы» (services.msc) и найдем службу «Агент сервера 1С:Предприятия».
  2. Перейдем в свойства службы на вкладку «Вход в систему» и проверим, от какого пользователя она запускается.
  3. Откроем консоль управления «Локальные пользователи и группы» (lusrmgr.msc) или обратимся к администратору домена Active Directory. Нам нужно убедиться, что для учетной записи службы не установлен флаг «Потребовать смену пароля при следующем входе в систему», а сам пароль актуален и не просрочен.
  4. Обновим пароль в свойствах службы 1С и выполним перезапуск службы.

Параметры запуска службы агента обычно выглядят следующим образом:


"C:\Program Files\1cv8\8.3.16.1063\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\srvinfo" /debug

Если доменная учетная запись заблокирована или скомпрометирована, могут также наблюдаться проблемы при интеграции через COM-соединения (COMConnector), так как параметры DCOM жестко привязываются к правам этой учетной записи.

Причина 2. Блокировка портов встроенным брандмауэром Windows 10

При миграции на Windows 10 брандмауэр системы (Windows Defender Firewall) начинает работать в разы строже. По умолчанию он блокирует любые нетипичные входящие подключения.

Проанализируем сетевой механизм классической TCP/IP-отладки 1С. Когда вы устанавливаете точку останова на сервере:

  1. Конфигуратор подключается к менеджеру кластера 1С.
  2. Но при передаче управления на сервер рабочий процесс rphost.exe должен сам инициировать обратное сетевое подключение к конфигуратору на компьютере разработчика.
  3. Связь устанавливается по динамическим портам из диапазона, указанного при запуске службы (например, 1560:1591).

Если на компьютере разработчика брандмауэр Windows 10 активен, он заблокирует это входящее подключение от сервера к конфигуратору. В результате отладка &НаКлиенте работает (так как инициатором выступает сам конфигуратор), а &НаСервере игнорируется.

Решение проблемы по шагам:

  1. Откроем «Монитор брандмауэра защитника Windows в режиме повышенной безопасности».
  2. Проверим список «Правила для входящих подключений». Часто при обновлении Windows 10 автоматически создаются скрытые запрещающие правила для исполняемых файлов 1С (1cv8.exe или 1cv8c.exe). Их необходимо найти и удалить либо перевести в статус «Разрешить».
  3. Создадим явное разрешающее правило для входящих подключений по TCP-портам диапазона отладки (по умолчанию это 1560-1591), а также для портов 1540 и 1541.

Причина 3. Приоритет протокола IPv6 над IPv4

В операционной системе Windows 10 стек IPv6 обладает более высоким приоритетом перед стандартным IPv4. Если имя вашего компьютера или сервера отладки разрешается системой в адрес IPv6 (например, локальная петля ::1), это может нарушить сетевое взаимодействие платформы 1С.

Рабочие процессы сервера 1С зачастую настроены на прослушивание портов IPv4. В результате конфигуратор пытается подключиться к отладчику по IPv6, а сервер ждет подключения по IPv4, либо наоборот. Связь не устанавливается, и точки останова на сервере пролетают без остановки.

Как решить эту проблему:

Выясним причину путем жесткого сопоставления сетевых имен в системном файле hosts. Разберем этот шаг:

  1. Откроем текстовый редактор от имени Администратора.
  2. Перейдем по пути C:\Windows\System32\drivers\etc\ и откроем файл hosts.
  3. Пропишем соответствие имени сервера его физическому IPv4-адресу, например:

192.168.1.105   my-1c-server
127.0.0.1       localhost

Это исключит попытки операционной системы использовать IPv6-адресацию для этих сетевых узлов.

Причина 4. Разночтения в регистре символов имени информационной базы

Рассмотрим редкий, но зафиксированный в практике баг платформы 1С:Предприятие, чувствительный к регистру символов.

Если в списке информационных баз на компьютере разработчика имя базы написано в одном формате (например, trade_db), а в консоли администрирования кластера серверов 1С она зарегистрирована как Trade_DB, это приведет к частичному отказу механизма отладки. Клиентское приложение запустится без проблем, но при передаче контекста серверу менеджер кластера не сможет сопоставить сеанс отладки из-за несовпадения имени информационной базы. Точки останова на сервере будут игнорироваться.

Решение: Убедитесь, что имя базы в вашем списке подключений совпадает с именем в консоли кластера символ в символ, включая регистр букв.

Причина 5. Несколько сетевых адаптеров и VPN-соединения

На рабочих станциях под управлением Windows 10 разработчики часто используют виртуальные машины (Hyper-V, VirtualBox) или подключаются к корпоративным сетям через VPN. Эти технологии создают в системе виртуальные сетевые карты.

При запуске конфигуратора служба отладки может привязаться к первому попавшемуся IP-адресу, который принадлежит виртуальному адаптеру (например, сети VirtualBox 192.168.56.1). Физический сервер 1С, находящийся в локальной сети, физически не сможет отправить пакеты по этому адресу, так как он не маршрутизируется во внешней сети.

Решение:

  1. Отключим неиспользуемые виртуальные сетевые адаптеры на время разработки.
  2. Настроим сетевые приоритеты адаптеров в Windows 10, чтобы физический сетевой адаптер стоял первым в списке опроса.
  3. При необходимости используем файл настроек comcntrcfg.xml для явного указания IP-адреса отладки (параметр debuggerURL).

Альтернативное решение: Переход на современную HTTP-отладку

Начиная с версии 8.3.14, платформа 1С поддерживает альтернативный и гораздо более стабильный протокол отладки по HTTP. Его главное преимущество заключается в том, что все сетевые запросы проходят через единую службу публикации dbgs.

При использовании HTTP-отладки серверу больше не нужно инициировать обратные TCP-соединения к компьютеру разработчика. Все запросы исходят исключительно от клиента, что полностью снимает проблемы с блокировками входящего трафика брандмауэром Windows 10 или сложностями с несколькими сетевыми адаптерами.

Разберем по шагам, как переключить сервер на HTTP-отладку:

  1. Перенастроим параметры запуска службы сервера 1С, добавив ключ -http к параметру -debug. Команда запуска службы примет вид:

"C:\Program Files\1cv8\8.3.16.1063\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\srvinfo" /debug -http
  1. Перезапустим службу сервера 1С:Предприятия.
  2. В конфигураторе перейдем в меню Сервис — Параметры — Запуск 1С:Предприятия — Отладка.
  3. Установим переключатель «Протокол отладки» в положение «HTTP» и укажем адрес нашего сервера отладки (локальный адрес или адрес сервера 1С, где запущен отладочный сервис).

Использование HTTP-отладки решает большинство сетевых проблем раз и навсегда, обеспечивая стабильную работу точек останова на сервере в любых сетевых инфраструктурах под управлением Windows 10.

← На главную