При разработке и сопровождении конфигураций многие программисты сталкиваются со специфической проблемой: при работе через удаленный рабочий стол (терминальное окно RDP) 1С запускается в режиме конфигуратора, устанавливаются точки останова, но система по ним не останавливается. При этом старые сеансы не закрываются, а конфигуратор "не видит" запущенное приложение предприятия. Проанализируем ситуацию и подробно разберем, как восстановить корректную работу отладчика.
Первое, что мы рассмотрим — это сетевые ограничения и порты. В терминальном сервере работает множество пользователей одновременно, что часто приводит к конфликтам портов. По умолчанию конфигуратор 1С использует диапазон портов для отладки 1560-1591.
Если несколько разработчиков запустят свои конфигураторы на одном сервере, стандартный диапазон будет занят. Отладчик просто не сможет подключиться. Разберем по шагам, что нужно сделать:
1600-1650 для одного, 1651-1700 для другого).netstat -a -n Найдем в списке порты из нашего диапазона и убедимся, что они имеют статус LISTENING.Выясним причину, почему точки останова могут игнорироваться, если база клиент-серверная (SQL). Часто код выполняется на сервере 1С:Предприятия, а по умолчанию сервер 1С запускается без поддержки отладки из соображений безопасности и производительности.
Для отладки серверных процедур нам необходимо включить режим отладки на самом сервере приложений:
regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent.ImagePath. В его значении находится строка запуска службы.-debug.Если нет возможности перезапускать рабочий сервер с ключом отладки (так как это влияет на производительность и множество пользователей), развернем тестовую копию базы в файловом варианте или на выделенном тестовом сервере.
Рассмотрим настройки самого конфигуратора. Часто отладчик игнорирует запуск нового сеанса из-за некорректных внутренних параметров.
Проверим настройки подключения:
Если стандартный протокол по TCP/IP (через сокеты) в условиях терминала работает нестабильно, поменяем протокол отладки на HTTP. В современных версиях платформы это позволяет легко обходить ограничения брандмауэров. Зайдем в Сервис — Параметры — закладка Отладка и переключим Протокол отладки на HTTP.
Проанализируем специфику Windows Server. Пользовательские сеансы RDP жестко изолированы друг от друга. Если вы запустили конфигуратор, затем свернули окно, переподключились к серверу (создав новый RDP-сеанс с другим ID) и попытались запустить 1С в режиме предприятия — отладка работать не будет. Конфигуратор и клиентское приложение должны работать строго внутри одной терминальной сессии.
Если вы столкнулись с зависшими сеансами, которые не удается закрыть из конфигуратора, попробуем следующие шаги:
localhost может резолвиться некорректно. В окне подключения предметов отладки вручную впишем локальный IPv4-адрес сервера или 127.0.0.1 и нажмем "Искать".%AppData%\1C\1cv8 и %LocalAppData%\1C\1cv8.Применив описанные методы, начиная от настройки индивидуальных портов и заканчивая правильным запуском службы с параметром -debug, мы сможем восстановить стабильную отладку кода 1С в любом терминальном окружении.