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

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

В процессе разработки на платформе 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда механизмы отладки ведут себя нестабильно. Особенно остро эта проблема проявляется при работе в терминальном режиме с большим количеством информационных баз, развернутых на клиент-серверном варианте. Типичный симптом: в Конфигураторе видны подключенные предметы отладки (и клиентское приложение, и сервер), однако точка останова, установленная в серверном модуле, упорно игнорируется системой. При этом на одной базе отладка может работать безупречно, а на соседней — полностью отсутствовать.

В данной статье мы подробно разберем, почему «отваливается» серверная отладка, и рассмотрим пошаговые инструкции по восстановлению работоспособности этого важного инструмента разработчика.

Способ 1. Принудительное переподключение сеансов сервера

Проанализируем наиболее простое и эффективное решение, которое часто помогает в случаях, когда связь между Конфигуратором и рабочим процессом сервера rphost была нарушена или инициализирована некорректно. Иногда Конфигуратор «думает», что он подключен к серверу, но фактической передачи отладочной информации не происходит.

Разберем алгоритм действий:

  1. Откройте Конфигуратор проблемной информационной базы.
  2. Перейдите в главное меню: Отладка — Подключение....
  3. В открывшемся окне найдите список Доступные предметы отладки и Подключенные предметы отладки.
  4. В списке подключенных предметов выделите все сеансы, имеющие тип Сервер.
  5. Нажмите кнопку Отключить.
  6. После того как список очистится, найдите эти же серверные сеансы в списке доступных предметов и нажмите Подключить.

Как показывает практика, такая «встряска» механизмов подключения позволяет заново инициализировать отладочный канал, и точки останова начинают срабатывать мгновенно.

Способ 2. Настройка автоматического подключения фоновых заданий

Выясним еще одну распространенную причину. Часто серверный код выполняется не в основном сеансе пользователя, а инициируется через ФоновыеЗадания. По умолчанию Конфигуратор не «подхватывает» новые фоновые задания, которые создаются сервером в процессе работы.

Посмотрим на настройки, которые необходимо проверить:

  1. Зайдите в меню Отладка — Подключение....
  2. Нажмите кнопку Настройка....
  3. В появившемся диалоговом окне установите флажок Автоматически подключать фоновые задания.
  4. Также убедитесь, что в списке типов конфигураций выбраны нужные вам варианты (например, Тонкий клиент и Сервер).

Без этой настройки любая процедура, вызванная через ФоновыеЗадания.Выполнить(), будет проходить мимо отладчика, даже если точка останова стоит в правильном месте.

Способ 3. Выбор и настройка протокола отладки (TCP/IP vs HTTP)

Начиная с версии платформы 8.3.7, компания 1С представила новый протокол отладки на основе HTTP. Если на сервере часть баз работает на старом протоколе (TCP/IP), а часть — на новом, или если настройки протоколов в Конфигураторе и на сервере различаются, отладка работать не будет.

Проанализируем ситуацию с портами. При использовании классического протокола TCP/IP сервер 1С динамически выделяет порты из диапазона 1560–1591. Если на сервере запущено более 20-30 информационных баз или работает много разработчиков одновременно, портов из этого диапазона может банально не хватить. В этом случае отладка на «лишних» базах просто не запустится.

Если вы используете протокол HTTP, необходимо убедиться в следующем:

Способ 4. Проверка доступности портов и сетевых экранов (Firewall)

Рассмотрим ситуацию, когда сервер 1С и терминальный сервер разработчика находятся на разных физических или виртуальных машинах. Это критический момент, так как отладка требует «двусторонней» связи.

При отладке по TCP/IP сервер приложений должен иметь возможность инициировать соединение с клиентским компьютером (терминалом) по портам из диапазона 1560–1591. Если между серверами стоит брандмауэр, который блокирует входящие соединения на терминальный сервер, то отладчик «увидит» серверный сеанс, но не сможет передать команду на остановку выполнения кода.

Рекомендация: Попробуйте временно отключить Firewall на обеих машинах для диагностики. Если отладка заработает — необходимо добавить весь диапазон портов 1540, 1541, 1560-1591 в исключения.

Способ 5. Особенности разрешения имен (DNS и файл hosts)

Проанализируем механизм идентификации. Сервер 1С идентифицирует клиентские машины по их именам. Если терминальный сервер называется TERM-SRV, то сервер 1С при попытке начать отладку будет искать именно это имя в сети. Если в вашей сети есть проблемы с DNS или сервер 1С видит терминал под одним IP-адресом, а обратное разрешение имени дает другой результат — отладка не сработает.

Для устранения этой неопределенности выполните следующие действия:

  1. На сервере 1С откройте файл C:\Windows\System32\drivers\etc\hosts.
  2. Добавьте строку с IP-адресом терминального сервера и его сетевым именем.
  3. Повторите аналогичную операцию на терминальном сервере, прописав IP и имя сервера 1С.

Это исключит влияние сетевых задержек и ошибок DNS на процесс поиска предметов отладки.

Способ 6. Очистка кэша и серверных данных

Иногда «избирательность» проблемы (работает в одной базе и не работает в другой) объясняется накопленными ошибками в кэш-файлах. Рассмотрим, что нужно очистить:

Резюме

Если вы столкнулись с тем, что отладка на сервере работает выборочно, в первую очередь примените метод переподключения серверных сеансов в окне «Подключение». Если это не помогает, переходите к проверке настроек фоновых заданий и анализу сетевой доступности портов. Помните, что для стабильной работы в крупной среде (20+ баз) лучше переходить на протокол HTTP-отладки, так как он менее чувствителен к ограничениям по портам и легче настраивается через прокси и сетевые экраны.

← На главную