Многие программисты 1С хотя бы раз сталкивались с невероятно раздражающей ситуацией: вы работаете в файловой базе, вносите изменения в код, нажимаете кнопку запуска отладки (клавиша F5), запускается сеанс 1С:Предприятия, но он абсолютно никак не привязан к Конфигуратору. Кнопка запуска отладки не меняет свой внешний вид, список подключенных предметов отладки остается пустым, а точки останова упорно игнорируются. При этом повторные попытки запустить отладку из Конфигуратора ни к чему не приводят. Проанализируем эту ситуацию и разберем по шагам все возможные причины и методы решения этой проблемы, начиная от самых банальных и заканчивая глубокими системными конфликтами в операционной системе Windows.
В первую очередь всегда нужно исключать самые простые причины. Выясним причину возможной блокировки на уровне самого сеанса 1С:Предприятия. Зачастую в параметрах пользователя или информационной базы может быть принудительно отключена возможность отладки.
Сервис, затем выберите Параметры.Системные.Отладка в текущем сеансе. Там должно быть установлено значение Разрешено.Начинать отладку при запуске, чтобы после перезапуска сеанс автоматически пытался связаться с Конфигуратором.Если галочки слетают после перезапуска или не сохраняются, это первый признак того, что отладчик физически не может "достучаться" до Конфигуратора по сети.
Рассмотрим подробнее очень частый сценарий, который вызывает подобное поведение. Если ваша файловая база изначально крутилась на сервере 1С:Предприятия, а затем была выгружена в формате .dt и развернута локально для доработок, настройки отладчика могут сыграть с вами злую шутку. База "помнит", что раньше предметы отладки находились на другом сервере.
Проанализируем ситуацию: при первом запуске развернутой базы отладчик может сработать, но все последующие запуски будут проходить "вхолостую". Чтобы это исправить, выполним следующие действия:
Отладка -> Подключение.Искать предметы отладки на удаленном компьютере, и там прописан IP-адрес или имя вашего боевого сервера.Автоматическое подключение в этом же окне.В большинстве случаев после применения этих настроек предметы отладки мгновенно появляются в списке, и точки останова начинают срабатывать корректно.
Если настройки внутри 1С корректны, пора спускаться на уровень операционной системы. Платформа 1С использует для связи отладчика и предприятия сетевые протоколы. По умолчанию это порты в диапазоне от 1560 до 1591 по протоколу TCP. Если порт занят, отладка не запустится.
Часто порты занимают "фантомные" (зависшие) процессы самой 1С. Когда вы закрываете зависшее окно предприятия крестиком, процесс 1cv8.exe или 1cv8c.exe может остаться висеть в оперативной памяти в фоновом режиме, продолжая удерживать порт отладки. Проанализируем это:
Подробности (или "Процессы" в старых версиях Windows).1cv8.exe, но при этом у вас открыт только один Конфигуратор, смело завершайте все остальные процессы принудительно (кнопка "Снять задачу").Часто системные администраторы уверяют, что "антивирус удален" или "брандмауэр полностью отключен". Но рассмотрим ситуацию глубже. Комплексные решения безопасности (такие как Kaspersky Endpoint Security, ESET, Dr.Web) при установке внедряют в ядро Windows свои собственные сетевые фильтры (NDIS-драйверы). При простом отключении антивируса или даже его удалении через "Установку и удаление программ", эти фильтры могут остаться в системе.
Они продолжают перехватывать и блокировать трафик на локальных портах 127.0.0.1. Что нужно сделать совместно с вашим системным администратором:
Разберем крайне интересную причину, которая стала решением проблемы в анализируемой ситуации. Порты 1560-1591 не являются эксклюзивными для платформы 1С. Любая другая программа может решить использовать их для своих нужд.
Посмотрим на пример из логов Технологического журнала 1С при конфликте портов:
30:25.862000-0,EXCP,1,process=1cv8,ClientID=0,Exception=NetDataExchangeException,Descr='server_addr=any:1560 descr=10048(0x00002740): Обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт). line=261 file=src\DataExchangeServerImpl.cpp'
30:30.199000-0,EXCP,3,process=1cv8,Usr=Админ,ClientID=3,Exception=NetDataExchangeException,Descr='server_addr=tcp://127.0.0.1:1562 descr=127.0.0.1:1562:10060(0x0000274C): Попытка установить соединение была безуспешной...
Ошибка 10048 явно говорит о том, что адрес уже используется другой программой. На практике таким ПО может оказаться корпоративный софт, например Palo Alto Terminal Agent (предназначенный для идентификации пользователей на шлюзе), который использует порты из того же диапазона. Или другие службы мониторинга.
Чтобы проверить, кто именно занимает порт, запустите командную строку и выполните команду netstat -nao | find "1560". Вы получите идентификатор процесса (PID), занимающего порт. Найдите этот PID в Диспетчере задач и завершите мешающую службу.
Ошибка 10060 (таймаут соединения) из приведенного выше лога часто указывает на путаницу между протоколами IPv4 и IPv6 внутри Windows. 1С может пытаться отправить пакет для отладки на адрес localhost, который Windows переводит в адрес IPv6 (::1), в то время как отладчик 1С слушает адрес IPv4 (127.0.0.1).
Рассмотрим, как жестко зафиксировать маршрутизацию локального трафика:
C:\Windows\System32\drivers\etc\.hosts и откройте его с помощью Блокнота (обязательно от имени администратора).127.0.0.1 localhost. Если перед ней стоит символ решетки #, удалите его (раскомментируйте строку).::1 localhost. Если перед ней нет решетки, обязательно поставьте ее, чтобы закомментировать использование IPv6 для локалхоста.Начиная с версии платформы 1С:Предприятие 8.3.7, разработчики добавили возможность использовать для отладки протокол HTTP вместо проблемного TCP/IP. Протокол HTTP гораздо лучше переносит особенности сетевых экранов, маршрутизации и не так чувствителен к блокировке нестандартных портов.
Проанализируем шаги по переходу на новый механизм:
Сервис -> Параметры -> вкладка Отладка.dbgs.exe (сервер отладки), который возьмет на себя функцию посредника между базой и Конфигуратором. В большинстве "тяжелых" случаев именно смена протокола решает проблему мгновенно.Если в сети вашей компании строго регламентирован доступ в интернет, у вас может быть настроен глобальный системный прокси-сервер (в свойствах обозревателя или настройках сети Windows). Особенность работы прокси заключается в том, что он может "заворачивать" на себя даже локальный трафик, идущий по адресам 127.0.0.1 или localhost. В результате пакеты отладчика отправляются на корпоративный сервер безопасности и, естественно, теряются.
Откройте "Панель управления" -> "Свойства браузера" -> вкладка "Подключения" -> "Настройка сети". Убедитесь, что установлена галочка Не использовать прокси-сервер для локальных адресов. Также полезно нажать кнопку "Дополнительно" и в поле "Не использовать прокси-сервер для адресов, начинающихся с:" вручную вписать 127.0.0.1; localhost.
Используя этот комплексный подход и методично исключая одну причину за другой, мы сможем восстановить нормальную работу отладчика 1С даже в самой сложной и запутанной сетевой инфраструктуре. Начинайте проверку с настроек Конфигуратора, переходите к очистке процессов и завершайте анализом портов и сетевых экранов.