Разработка и сопровождение интеграций через веб-сервисы — стандартная задача для современного специалиста 1С. Однако часто программисты сталкиваются с тем, что отладка в базе-приемнике не срабатывает: код выполняется, данные создаются, но конфигуратор игнорирует точки остановки. Рассмотрим подробнее, как диагностировать и устранить причины такого поведения, опираясь на практический опыт и технические особенности платформы 8.3.
Первым делом проанализируем сетевую инфраструктуру. В ситуациях, когда база опубликована на веб-сервере (например, IIS), отладчик должен иметь возможность «достучаться» до сеанса, созданного веб-сервисом. Часто отладка одного приложения (например, «Управление торговлей») работает исправно, а другого (например, «Бухгалтерия предприятия») — нет, даже если они на одном физическом сервере.
Выясним причину: каждая версия платформы или каждый отдельный экземпляр службы сервера 1С может использовать свои диапазоны портов. Если в брандмауэре (firewall) открыты порты только для одной версии, отладка другой будет блокироваться. Выполним следующие действия:
1560–1591 для протокола TCP (при использовании классического метода отладки).Для понимания того, видит ли система ваш веб-сервис как объект для отладки, необходимо проанализировать окно подключений. Рассмотрим ситуацию: вы запускаете выполнение кода в базе-источнике, а в базе-приемнике (где опубликован сервис) ничего не происходит.
Разберем по шагам, как проверить наличие предметов отладки в конфигураторе базы-приемника:
Web-сервис.В веб-сервисах сеанс создается в момент вызова метода и завершается сразу после возврата ответа. Поймать такой короткий сеанс вручную практически невозможно. Поэтому крайне важно правильно настроить автоматическое подключение. Проанализируем настройки конфигуратора:
Сервер и Web-сервисы.localhost требуется указать конкретный IP-адрес или FQDN сервера, особенно если работа ведется в распределенной сети.Одной из самых неочевидных проблем является отсутствие разрешения на отладку в самом файле публикации веб-сервиса. Даже если на сервере 1С включен режим -debug, веб-сервер IIS может блокировать передачу отладочной информации. Рассмотрим структуру файла default.vrd, который обычно находится в каталоге публикации на IIS.
Для включения возможности отладки необходимо отредактировать тег point. Он должен содержать атрибут debug="true". Если используется современный протокол отладки по HTTP, следует добавить адрес сервера отладки. Пример корректной настройки тега:
<point name="MyWebService"
alias="ws1.1cws"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"
debug="true"
debuggerURL="http://имя_вашего_сервера:1550">
После внесения изменений в файл .vrd обязательно выполните команду iisreset в командной строке или перезапустите пул приложений в консоли управления IIS, чтобы изменения вступили в силу.
Начиная с версии 8.3.7, платформа поддерживает отладку по протоколу HTTP. Это более стабильный вариант для веб-сервисов. Выясним, какой протокол используется у вас. Настройка производится в параметрах запуска сервера 1С (флаг -http) и в настройках конфигуратора.
Если вы используете HTTP-отладку, убедитесь, что:
dbgs.exe запущена и слушает порт (по умолчанию 1550).Если используется TCP-отладка, проверьте файл debugcfg.xml в папке bin/conf. Содержимое файла должно явно указывать на сервер отладки:
<config xmlns="http://v8.1c.ru/v8/debugcfg">
<debugportrange low="1560" high="1591" />
</config>
Посмотрим на ситуацию со стороны операционной системы. Веб-сервис выполняется в контексте пользователя, от имени которого запущен пул приложений IIS (например, IUSR или NetworkService). Проанализируем права этого пользователя:
bin.Подводя итог, если отладка веб-сервиса не работает, пройдите по следующему чек-листу:
-debug в строке запуска службы 1C:Enterprise 8.3 Server Agent.default.vrd стоит debug="true".1560-1591 (для TCP) или 1550 (для HTTP).iisreset и перезагрузите службу сервера 1С.Соблюдение этих шагов позволяет диагностировать большинство проблем, связанных с невозможностью подключения к сеансу веб-сервиса для анализа кода.