Как узнать адрес веб-сервиса 1С, если известны только сервер и имя базы

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

Часто возникает ситуация, когда у разработчика или администратора есть доступ к информационной базе 1С через тонкий клиент, известны имя сервера приложений и имя базы в кластере, но необходимо настроить интеграцию через веб-сервисы. Казалось бы, данные для подключения уже на руках, однако при попытке обращения к веб-сервису возникают сложности. Разберемся подробно, почему параметров обычного подключения недостаточно и как правильно сформировать адрес для обращения к веб-сервису.

Почему параметров тонкого клиента недостаточно?

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

Однако веб-сервисы (SOAP) и HTTP-сервисы (REST) работают по протоколам HTTP или HTTPS через веб-сервер (например, IIS или Apache). Веб-сервер выступает в роли посредника, который принимает внешние запросы и перенаправляет их модулю расширения 1С. Таким образом, знание параметров сервера приложений 1С не дает нам информации о том, на каком веб-сервере опубликована база и под каким псевдонимом.

Разбор структуры URL-адреса веб-сервиса

Чтобы успешно обратиться к сервису, нам необходимо собрать полную строку адреса. Рассмотрим стандартную структуру URL для веб-сервиса 1С:

http://[ИмяВебСервера]/[ИмяПубликации]/ws/[ИмяСервиса]?wsdl

Разберем каждый элемент этой цепочки по шагам:

  1. Имя веб-сервера: Это сетевое имя или IP-адрес машины, на которой установлен IIS или Apache. Важно понимать, что веб-сервер может физически находиться на другом компьютере, отличном от сервера приложений 1С или сервера баз данных SQL.
  2. Имя публикации: Это произвольный псевдоним (alias), который задается специалистом в момент выполнения публикации информационной базы. Хотя часто его делают похожим на имя базы в кластере, это совершенно не обязательно. Без точного знания этого имени доступ к базе через веб-протоколы закрыт.
  3. Разделитель /ws/: Статическая часть адреса, указывающая системе, что обращение идет именно к SOAP веб-сервису.
  4. Имя сервиса: Имя объекта метаданных «Web-сервис», как оно прописано в конфигурации 1С.
  5. Параметр ?wsdl: Необходим для получения XML-описания сервиса, которое используется внешними системами для понимания структуры методов и типов данных.

Как найти адрес, если есть доступ к серверу или Конфигуратору

Если подрядчики или коллеги предоставили доступ к базе, но забыли дать адрес сервиса, мы можем выяснить его самостоятельно несколькими способами. Проанализируем их подробнее.

Способ 1: Использование Конфигуратора

Если у вас есть права администратора, выполним следующие действия:

  1. Запустим базу в режиме Конфигуратор.
  2. Перейдем в меню Администрирование — Публикация на веб-сервере.
  3. В открывшемся окне мы увидим список всех существующих публикаций. Здесь будет указано «Имя» (это и есть ИмяПубликации для URL) и «Веб-сервер».
  4. Перейдя на закладку «Web-сервисы», можно убедиться, что нужный нам сервис отмечен галочкой, а значит, он доступен для внешних запросов.

Способ 2: Проверка файла публикации (default.vrd)

Рассмотрим ситуацию, когда доступа в Конфигуратор нет, но есть доступ к файловой системе сервера. Настройки каждой публикации хранятся в специальном XML-файле default.vrd. Выясним, где его искать:

Внутри этого файла мы найдем строку соединения с базой данных и перечень разрешенных сервисов. Пример структуры файла:


<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       base="/MyBaseName"
       ib="Srvr=&quot;MainServer&quot;;Ref=&quot;TradeDB&quot;;">
    <ws>
        <service name="ExchangeData" alias="Exchange.1cws" enable="true"/>
    </ws>
</point>

В данном примере base="/MyBaseName" говорит нам об имени публикации, а service name="ExchangeData" подтверждает наличие веб-сервиса.

Особенности авторизации

Выяснив адрес, мы можем столкнуться с ошибкой доступа. Проанализируем требования к безопасности при обращении к веб-сервисам:

  1. Права доступа: У пользователя, под которым выполняется подключение, в 1С должна быть назначена роль, имеющая право «Использование» для конкретного веб-сервиса.
  2. Тип аутентификации: Веб-сервисы 1С обычно используют Basic Authentication. Это означает, что логин и пароль пользователя 1С передаются в заголовке HTTP-запроса в закодированном виде.
  3. Настройки пользователя: Убедимся, что в карточке пользователя в 1С разрешена аутентификация 1С:Предприятия и не установлены ограничения на программный доступ.

Резюме и практические советы

Подведем итог: знание имени сервера приложений и базы данных позволяет нам работать через тонкий клиент, но для веб-сервисов требуются дополнительные метаданные. Запрос точного URL-адреса, имени публикации и имени сервиса у разработчиков является абсолютно обоснованным и профессиональным вопросом.

Если вы пытаетесь «угадать» адрес в частном порядке, попробуйте стандартную схему, где в качестве имени хоста выступает адрес сервера приложений, а в качестве имени публикации — имя базы в кластере. Однако помните, что в промышленной эксплуатации архитектура часто сложнее: веб-сервер может находиться в демилитаризованной зоне (DMZ), использовать HTTPS на нестандартном порту и иметь сложные правила перенаправления трафика. Для быстрой проверки сформированного адреса и отправки пробных запросов можно использовать инструмент для тестирования API непосредственно в 1С.

← На главную