Переход на операционную систему Windows 10 часто преподносит сюрпризы разработчикам и системным администраторам 1С. Одна из наиболее распространенных и неприятных проблем после такого обновления — внезапный отказ работы отладки в процедурах и функциях, выполняющихся на стороне сервера (директива &НаСервере), в то время как отладка на клиенте (например, в обработчике ПриОткрытии) продолжает функционировать в штатном режиме.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем неочевидные системные факторы и рассмотрим пошаговые инструкции по восстановлению полноценной отладки в среде 1С:Предприятие.
Рассмотрим весьма прозаичную, но крайне коварную ситуацию, с которой часто сталкиваются администраторы. Служба сервера 1С:Предприятия (ragent.exe) для доступа к сетевым и доменным ресурсам часто настраивается на запуск от имени специальной доменной или локальной учетной записи (например, USR1CV8).
Если в политиках безопасности Windows настроен ограниченный срок действия паролей, в определенный момент пароль этой учетной записи истекает. При этом операционная система может вести себя непредсказуемо:
Решение проблемы:
Необходимо проверить состояние учетной записи, под которой запущена служба 1С. Для этого выполним следующие действия:
services.msc) и найдем службу «Агент сервера 1С:Предприятия».lusrmgr.msc) или обратимся к администратору домена Active Directory. Нам нужно убедиться, что для учетной записи службы не установлен флаг «Потребовать смену пароля при следующем входе в систему», а сам пароль актуален и не просрочен.Параметры запуска службы агента обычно выглядят следующим образом:
"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 жестко привязываются к правам этой учетной записи.
При миграции на Windows 10 брандмауэр системы (Windows Defender Firewall) начинает работать в разы строже. По умолчанию он блокирует любые нетипичные входящие подключения.
Проанализируем сетевой механизм классической TCP/IP-отладки 1С. Когда вы устанавливаете точку останова на сервере:
rphost.exe должен сам инициировать обратное сетевое подключение к конфигуратору на компьютере разработчика.1560:1591).Если на компьютере разработчика брандмауэр Windows 10 активен, он заблокирует это входящее подключение от сервера к конфигуратору. В результате отладка &НаКлиенте работает (так как инициатором выступает сам конфигуратор), а &НаСервере игнорируется.
Решение проблемы по шагам:
1cv8.exe или 1cv8c.exe). Их необходимо найти и удалить либо перевести в статус «Разрешить».1560-1591), а также для портов 1540 и 1541.В операционной системе Windows 10 стек IPv6 обладает более высоким приоритетом перед стандартным IPv4. Если имя вашего компьютера или сервера отладки разрешается системой в адрес IPv6 (например, локальная петля ::1), это может нарушить сетевое взаимодействие платформы 1С.
Рабочие процессы сервера 1С зачастую настроены на прослушивание портов IPv4. В результате конфигуратор пытается подключиться к отладчику по IPv6, а сервер ждет подключения по IPv4, либо наоборот. Связь не устанавливается, и точки останова на сервере пролетают без остановки.
Как решить эту проблему:
Выясним причину путем жесткого сопоставления сетевых имен в системном файле hosts. Разберем этот шаг:
C:\Windows\System32\drivers\etc\ и откроем файл hosts.
192.168.1.105 my-1c-server
127.0.0.1 localhost
Это исключит попытки операционной системы использовать IPv6-адресацию для этих сетевых узлов.
Рассмотрим редкий, но зафиксированный в практике баг платформы 1С:Предприятие, чувствительный к регистру символов.
Если в списке информационных баз на компьютере разработчика имя базы написано в одном формате (например, trade_db), а в консоли администрирования кластера серверов 1С она зарегистрирована как Trade_DB, это приведет к частичному отказу механизма отладки. Клиентское приложение запустится без проблем, но при передаче контекста серверу менеджер кластера не сможет сопоставить сеанс отладки из-за несовпадения имени информационной базы. Точки останова на сервере будут игнорироваться.
Решение: Убедитесь, что имя базы в вашем списке подключений совпадает с именем в консоли кластера символ в символ, включая регистр букв.
На рабочих станциях под управлением Windows 10 разработчики часто используют виртуальные машины (Hyper-V, VirtualBox) или подключаются к корпоративным сетям через VPN. Эти технологии создают в системе виртуальные сетевые карты.
При запуске конфигуратора служба отладки может привязаться к первому попавшемуся IP-адресу, который принадлежит виртуальному адаптеру (например, сети VirtualBox 192.168.56.1). Физический сервер 1С, находящийся в локальной сети, физически не сможет отправить пакеты по этому адресу, так как он не маршрутизируется во внешней сети.
Решение:
comcntrcfg.xml для явного указания IP-адреса отладки (параметр debuggerURL).Начиная с версии 8.3.14, платформа 1С поддерживает альтернативный и гораздо более стабильный протокол отладки по HTTP. Его главное преимущество заключается в том, что все сетевые запросы проходят через единую службу публикации dbgs.
При использовании HTTP-отладки серверу больше не нужно инициировать обратные TCP-соединения к компьютеру разработчика. Все запросы исходят исключительно от клиента, что полностью снимает проблемы с блокировками входящего трафика брандмауэром Windows 10 или сложностями с несколькими сетевыми адаптерами.
Разберем по шагам, как переключить сервер на HTTP-отладку:
-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
Использование HTTP-отладки решает большинство сетевых проблем раз и навсегда, обеспечивая стабильную работу точек останова на сервере в любых сетевых инфраструктурах под управлением Windows 10.