Часто возникает ситуация, когда у разработчика или администратора есть доступ к информационной базе 1С через тонкий клиент, известны имя сервера приложений и имя базы в кластере, но необходимо настроить интеграцию через веб-сервисы. Казалось бы, данные для подключения уже на руках, однако при попытке обращения к веб-сервису возникают сложности. Разберемся подробно, почему параметров обычного подключения недостаточно и как правильно сформировать адрес для обращения к веб-сервису.
Для начала проанализируем разницу в протоколах доступа. Когда мы подключаемся через тонкий клиент в клиент-серверном варианте, наше приложение взаимодействует напрямую с сервером приложений 1С:Предприятие (обычно по проприетарному протоколу через TCP-порты 1540, 1541 и далее). В этом случае нам действительно достаточно знать адрес сервера и имя базы в кластере.
Однако веб-сервисы (SOAP) и HTTP-сервисы (REST) работают по протоколам HTTP или HTTPS через веб-сервер (например, IIS или Apache). Веб-сервер выступает в роли посредника, который принимает внешние запросы и перенаправляет их модулю расширения 1С. Таким образом, знание параметров сервера приложений 1С не дает нам информации о том, на каком веб-сервере опубликована база и под каким псевдонимом.
Чтобы успешно обратиться к сервису, нам необходимо собрать полную строку адреса. Рассмотрим стандартную структуру URL для веб-сервиса 1С:
http://[ИмяВебСервера]/[ИмяПубликации]/ws/[ИмяСервиса]?wsdl
Разберем каждый элемент этой цепочки по шагам:
Если подрядчики или коллеги предоставили доступ к базе, но забыли дать адрес сервиса, мы можем выяснить его самостоятельно несколькими способами. Проанализируем их подробнее.
Способ 1: Использование Конфигуратора
Если у вас есть права администратора, выполним следующие действия:
ИмяПубликации для URL) и «Веб-сервер».Способ 2: Проверка файла публикации (default.vrd)
Рассмотрим ситуацию, когда доступа в Конфигуратор нет, но есть доступ к файловой системе сервера. Настройки каждой публикации хранятся в специальном XML-файле default.vrd. Выясним, где его искать:
C:\inetpub\wwwroot\[ИмяПубликации].httpd.conf.Внутри этого файла мы найдем строку соединения с базой данных и перечень разрешенных сервисов. Пример структуры файла:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/MyBaseName"
ib="Srvr="MainServer";Ref="TradeDB";">
<ws>
<service name="ExchangeData" alias="Exchange.1cws" enable="true"/>
</ws>
</point>
В данном примере base="/MyBaseName" говорит нам об имени публикации, а service name="ExchangeData" подтверждает наличие веб-сервиса.
Выяснив адрес, мы можем столкнуться с ошибкой доступа. Проанализируем требования к безопасности при обращении к веб-сервисам:
Подведем итог: знание имени сервера приложений и базы данных позволяет нам работать через тонкий клиент, но для веб-сервисов требуются дополнительные метаданные. Запрос точного URL-адреса, имени публикации и имени сервиса у разработчиков является абсолютно обоснованным и профессиональным вопросом.
Если вы пытаетесь «угадать» адрес в частном порядке, попробуйте стандартную схему, где в качестве имени хоста выступает адрес сервера приложений, а в качестве имени публикации — имя базы в кластере. Однако помните, что в промышленной эксплуатации архитектура часто сложнее: веб-сервер может находиться в демилитаризованной зоне (DMZ), использовать HTTPS на нестандартном порту и иметь сложные правила перенаправления трафика. Для быстрой проверки сформированного адреса и отправки пробных запросов можно использовать инструмент для тестирования API непосредственно в 1С.