При разработке мобильных приложений или интеграции различных информационных систем на базе 1С программисты часто сталкиваются с тем, что web-сервис, который вчера еще работал или был настроен предшественником, внезапно перестает отвечать. Самая частая проблема в такой ситуации — ошибка «Код ответа сервера: 404 (Not Found)» при попытке инициализации WSОпределения. Это означает, что веб-сервер (Apache или IIS) не может найти ресурс по указанному адресу.
В данной статье мы подробно разберем, как правильно сформировать путь к сервису, проверим настройки публикации и выясним, какие нюансы необходимо учесть для успешного подключения мобильного устройства к основной базе 1С.
Первым делом проанализируем строку подключения, которую мы используем в коде 1С. Стандартный путь к описанию web-сервиса (WSDL) выглядит следующим образом:
http://[IP-адрес или ИмяСервера]/[ИмяПубликации]/ws/[ИмяСервиса].1cws?wsdl
Разберем типичную ошибку из практики. Если в коде прописано:
Адрес = "http://localhost/WebServer/ws/ws1.1cws?wsdl";
Определения = Новый WSОпределения(Адрес);
Здесь WebServer — это часто просто заглушка или имя, оставшееся от примеров из документации. Выясним причину ошибки: если при публикации базы в диалоговом окне «Публикация на веб-сервере» в поле «Имя» было указано, например, copyUT, то и в адресе должно стоять именно оно. Рассмотрим правильный вариант:
Адрес = "http://localhost/copyUT/ws/ws1.1cws?wsdl";
Важное замечание: использование localhost допустимо только в том случае, если код выполняется непосредственно на том же сервере, где установлен веб-сервер. Если же мы подключаемся с мобильного телефона, localhost будет указывать на само мобильное устройство, где веб-сервера 1С, естественно, нет. В этом случае вместо него нужно прописать статический IP-адрес сервера в локальной сети или его внешний IP.
Прежде чем отлаживать код в 1С, проверим доступность сервиса через обычный браузер. Это поможет нам исключить ошибки в программном коде и сосредоточиться на настройках сервера. Вставим наш сформированный URL в адресную строку браузера.
<definitions>) — значит, WSDL-описание доступно и проблема кроется в параметрах подключения в коде.Иногда имя базы указано верно, но сервис все равно недоступен. Разберем ситуацию, когда публикация была выполнена не полностью. Все настройки взаимодействия 1С с веб-сервером хранятся в специальном файле default.vrd, который находится в каталоге публикации на сервере.
Убедимся, что в этом файле прописаны наши сервисы. Откроем его любым текстовым редактором и проверим наличие секции <ws>. Если вы хотите публиковать все имеющиеся в конфигурации web-сервисы, убедитесь, что в теге <publish> установлен соответствующий признак:
<standardURLs>
<res>true</res>
<ws publishByDefault="true" />
</standardURLs>
Если автоматическая публикация отключена, каждый сервис должен быть прописан вручную. Проанализируем пример точечной публикации:
<ws>
<service name="МойВебСервис" alias="ws1.1cws" />
</ws>
Как только мы избавились от ошибки 404, система может потребовать авторизацию. Посмотрим на пример кода, который позволяет передать учетные данные программно, чтобы мобильное приложение не запрашивало их у пользователя каждый раз при обращении к серверу:
ИмяПользователя = "WSUser";
Пароль = "ComplexPassword123";
Таймаут = 30; // Секунды
Попытка
Определения = Новый WSОпределения(Адрес, ИмяПользователя, Пароль, Таймаут);
// Далее создаем прокси и вызываем методы
Прокси = Новый WSПрокси(Определения, "http://www.my-namespace.org", "MyService", "MyServiceSoap");
Прокси.Пользователь = ИмяПользователя;
Прокси.Пароль = Пароль;
Исключение
Сообщить("Ошибка подключения: " + ОписаниеОшибки());
КонецПопытки;
Рекомендация: создайте в 1С отдельного пользователя специально для работы веб-сервисов. У этого пользователя должна быть роль, в которой разрешено право Использование Side-by-side и даны права на конкретный используемый Web-сервис.
Выясним технические причины, по которым публикация может вести себя нестабильно на сервере Apache 2.4:
SYSTEM или Network Service), должен иметь права на чтение содержимого папки bin платформы 1С и права на чтение/запись в каталог, где лежит файловая база данных (если база не клиент-серверная).LoadModule _1cws_module "C:/Program Files/1cv8/8.3.x.x/bin/wsap24.dll".Если мы разрабатываем мобильное приложение, важно помнить о сетевых экранах. Проанализируем ситуацию: на самом сервере всё открывается, а с телефона — нет.
Во-первых, проверим Brandmauer (Firewall) Windows. По умолчанию порт 80 (HTTP) может быть закрыт для входящих соединений. Необходимо создать разрешающее правило для входящего трафика по этому порту.
Во-вторых, современные мобильные платформы (Android и iOS) крайне неохотно работают с незащищенным протоколом http. Рассмотрим шаги для обеспечения стабильной работы:
https с SSL-сертификатом (можно использовать бесплатный Let's Encrypt).Таким образом, решение проблемы 404 сводится к внимательной проверке имени публикации, корректной настройке веб-сервера и обеспечению прав доступа для пользователя 1С. Следуя этим шагам, мы сможем построить надежную систему обмена данными между мобильными устройствами и центральной базой.