Настройка бесшовной интеграции между решениями 1С:ERP Управление предприятием и 1С:Документооборот (1С:ДО) — это стандартная задача при построении единого информационного пространства крупного предприятия. Чаще всего обмен данными организуется с помощью веб-сервисов, развернутых на веб-сервере под управлением Internet Information Services (IIS) или Apache. Однако в процессе первоначальной настройки специалисты часто сталкиваются со специфическими ошибками подключения.
В этой статье мы подробно проанализируем природу популярной ошибки интеграции, когда система выдает сообщение об отсутствии локального каталога вида C:\inetpub\wwwroot\... при попытке инициализировать WS-соединение. Мы разберем причины ее возникновения, детально изучим конфигурационные файлы веб-сервера и предложим пошаговый алгоритм решения проблемы.
Рассмотрим типичный сценарий. Администратор успешно настроил публикацию базы 1С:Документооборот на веб-сервере IIS. В целевом каталоге публикации (например, C:\inetpub\wwwroot\docmng) автоматически создались файлы дескриптора виртуального ресурса default.vrd и конфигурации IIS web.config. Проверка запуска базы через браузер (веб-клиент) проходит без замечаний. Однако при попытке настроить интеграцию на стороне 1С:ERP и выполнить авторизацию пользователя система выдает следующую критическую ошибку:
{ОбщийМодульИнтеграцияС1СДокументооборотВызовСервера.Модуль: Ошибка при вызове конструктора WSОпределения}
Определения = Новый WSОпределения(МестоположениеWS + "dm.1cws?wsdl", ...
по причине:
При вызове веб-сервиса произошла ошибка. При создании описания сервиса произошла ошибка. URL сервиса:
file:///C:/inetpub/wwwroot/docmng/ws/dm.1cws?wsdl
по причине:
Каталог не обнаружен 'C:\inetpub\wwwroot\docmng\ws\dm.1cws?wsdl'
Выясним причину такого поведения системы. Когда в настройках интеграции внутри 1С:ERP указывается адрес публикации веб-сервиса, начинающийся с localhost, 127.0.0.1 или некорректного относительного пути, сервер приложений 1С:ERP пытается выполнить данный код на своей стороне. Но если сервер приложений 1С:ERP и веб-сервер IIS с базой 1С:ДО физически разнесены на разные компьютеры (или виртуальные машины), то обращение к локальному хосту (localhost) заставляет систему искать публикацию на самом сервере ERP.
Если на сервере ERP также запущен IIS или файловая структура совпадает частично, то подсистема платформы 1С пытается интерпретировать переданный URL как локальный путь файловой системы Windows. В итоге вместо выполнения HTTP-запроса к удаленному серверу платформа ошибочно преобразует сетевой адрес в локальный путь формата file:///C:/inetpub/..., что неизбежно приводит к ошибке «Каталог не обнаружен».
Давайте разберем пошагово, как правильно локализовать и устранить эту проблему, а также сопутствующие сложности при публикации интеграционных веб-сервисов.
---
Перед тем как вносить изменения в настройки 1С:ERP, нам необходимо убедиться в том, что сам веб-сервис 1С:Документооборота корректно функционирует на стороне IIS и доступен из внешней сети. Для этого выполним простую проверку.
Откроем любой веб-браузер на компьютере, где установлен сервер приложений 1С:ERP (это важно, так как проверять доступность нужно именно с того узла, который будет отправлять запросы), и введем в адресную строку URL-адрес WSDL-описания веб-сервиса:
http://[ИМЯ_СЕРВЕРА_ДО]/docmng/ws/dm.1cws?wsdl
Или, в зависимости от версии конфигурации 1С:ДО, адрес может выглядеть следующим образом:
http://[ИМЯ_СЕРВЕРА_ДО]/docmng/ws/DMService?wsdl
Вместо [ИМЯ_СЕРВЕРА_ДО] необходимо указать:
192.168.1.150).do-server.company.local).Если настройка выполнена верно, в окне браузера должен отобразиться XML-код (схема WSDL), описывающий методы интеграционного веб-сервиса. Если же браузер выдает ошибку «Не удается получить доступ к сайту» или ошибку HTTP 404, то проблема кроется в настройках самого IIS или сетевой доступности (брандмауэр, маршрутизация).
---
После того как мы убедились, что WSDL-описание открывается по сети, перейдем к настройке на стороне учетной системы 1С:ERP:
localhost или локальных имен). Например: http://192.168.1.150/docmng.Использование реального IP-адреса или зарегистрированного доменного имени полностью исключает внутреннее преобразование адреса платформой 1С в локальный формат файловых путей Windows, благодаря чему конструктор WSОпределения успешно инициализирует соединение.
---
Иногда даже при правильном указании сетевого пути соединение установить не удается. В таком случае нам необходимо проанализировать конфигурационный файл публикации default.vrd, расположенный в каталоге на сервере IIS (по умолчанию это C:\inetpub\wwwroot\[ИмяВиртуальногоКаталога]).
Давайте откроем этот файл в любом текстовом редакторе и проверим его структуру. Нам необходимо убедиться, что в блоке описания веб-сервисов (тег <ws>) присутствуют и разрешены к использованию необходимые нам сервисы интеграции. Пример корректно настроенного файла default.vrd выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/docmng"
ib="Srvr="SQL-SERVER";Ref="docmng";">
<ws>
<point name="dm" alias="dm.1cws" enable="true"/>
<point name="DMService" alias="DMService.1cws" enable="true"/>
</ws>
</point>
Обратим особое внимание на атрибут enable="true". Если этот параметр установлен в значение false или строка с описанием веб-сервиса отсутствует вовсе, то при попытке обращения по адресу WSDL сервер IIS будет возвращать ошибку HTTP 404. При публикации базы из конфигуратора 1С обязательно убедитесь, что на вкладке «Веб-сервисы» установлены флажки напротив сервисов dm и DMService.
---
При развертывании веб-сервисов 1С на IIS системные администраторы часто сталкиваются со скрытыми техническими нюансами, которые могут заблокировать работу веб-сервисов даже после исправления адреса подключения. Разберем основные из них:
DefaultAppPool), откроем его «Дополнительные параметры» и установим свойство «Разрешены 32-разрядные приложения» (Enable 32-Bit Applications) в значение True.IIS_IUSRS или NetworkService), должны быть полные права на чтение и выполнение содержимого папки публикации C:\inetpub\wwwroot\[ИмяБазы], включая доступ к файлам default.vrd и web.config.---
Архитектурные требования к интеграции существенно различаются в зависимости от редакции 1С:Документооборота, которую мы используем:
dm.1cws. Опубликовывать саму базу 1С:ERP на веб-сервере в данном сценарии не требуется.---
Если мы разрабатываем собственную интеграцию или хотим выполнить программную отладку подключения к веб-сервису из кода 1С, рекомендуется использовать безопасную конструкцию инициализации подключения с перехватом возможных исключений. Рассмотрим пример кода на языке 1С, который можно использовать во внешней обработке для тестирования канала связи:
// Определим параметры подключения к веб-сервису ДО
АдресПодключения = "http://192.168.1.150/docmng/ws/dm.1cws?wsdl";
ИмяПользователяWeb = "IntegrationUser";
ПарольПользователяWeb = "SecurePassword123";
// Создадим объект для определения веб-сервиса
Попытка
// Инициализация WS-определений по сетевому адресу
Определения = Новый WSОпределения(АдресПодключения, ИмяПользователяWeb, ПарольПользователяWeb);
// Создание прокси для обращения к методам сервиса
Прокси = Новый WSПрокси(Определения, "http://www.1c.ru/dm", "DMService", "DMServiceSoap");
Прокси.Пользователь = ИмяПользователяWeb;
Прокси.Пароль = ПарольПользователяWeb;
Сообщить("Успешное подключение! Веб-сервис 1С:Документооборот доступен.");
Исключение
ИнформацияОбОшибке = ОписаниеОшибки();
// Запишем детальную информацию в Журнал регистрации для анализа администратором
ЗаписьЖурналаРегистрации("Интеграция.Подключение",
УровеньЖурналаРегистрации.Ошибка, , ,
"Не удалось создать WS-соединение: " + ИнформацияОбОшибке);
ВызватьИсключение "Ошибка интеграции: проверьте сетевую доступность веб-сервиса.";
КонецПопытки;
Использование данной конструкции в обработчиках интеграции позволяет избежать аварийного завершения работы сеанса пользователя и предоставляет детальный лог ошибки системным администраторам через Журнал регистрации 1С.
---
Подводя итоги нашего анализа, отметим, что ошибка «Каталог не обнаружен» при интеграции 1С:ERP и 1С:ДО практически всегда вызвана указанием локального адреса подключения (localhost) при работе систем на разных физических серверах. Использование внешнего статического IP-адреса или DNS-имени сервера IIS полностью решает данную проблему. Также при настройке всегда следует обращать внимание на соответствие разрядности платформы 1С и пула приложений IIS, корректность структуры файла default.vrd и особенности двухсторонней публикации, требуемые современными редакциями 1С:Документооборота 3.0.