При настройке интеграции между различными информационными базами 1С, особенно если они используют «Обычное приложение» (как в случае с 1С:Бухгалтерия 2.0 и 1С:Управление торговлей 10.3), разработчики часто сталкиваются с тем, что веб-сервис отказывается работать, выдавая стандартную, но малоинформативную ошибку 404 Not Found. Кажется, что все сделано правильно: база опубликована на Apache, конфигуратор не выдает ошибок, но при обращении к WSDL-описанию сервер сообщает, что ресурс не найден.
В рамках этой статьи мы разберем причины возникновения такой ситуации, проанализируем структуру файлов публикации и выясним, почему простое переименование публикации иногда становится ключом к решению проблемы.
Первым делом при возникновении ошибки 404 необходимо проверить файл дескриптора публикации — default.vrd. Этот XML-файл находится в каталоге, который вы указали при публикации базы в Конфигураторе. Именно он сообщает веб-серверу Apache, какие именно ресурсы (веб-сервисы, HTTP-сервисы, отчеты) доступны для внешней обработки.
Рассмотрим пример проблемного файла, который часто получается при ручной правке или некорректном сохранении настроек в Конфигураторе:
<?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="/allproductlist"
ib="Srvr='SRV1C';Ref='Anbar';"
enable="false">
<ws>
<point name="AllProductList"
alias="allproductlist.1cws"
enable="true"/>
</ws>
</point>
Проанализируем этот код. Обратите внимание на атрибут enable="false" в корневом теге point. Это критическая ошибка. Если основной узел публикации выключен, то Apache полностью игнорирует все вложенные настройки, включая веб-сервисы, даже если у них самих стоит enable="true". Для исправления ситуации необходимо вручную или через диалог публикации установить значение true для всей точки подключения.
Часто программисты забывают проверить состав публикуемых сервисов. В окне «Публикация на веб-сервере» на закладке «Веб-сервисы» должен быть выполнен ряд условий:
После внесения изменений обязательно нажмите кнопку «Опубликовать». 1С перезапишет файл default.vrd, приведя его структуру в соответствие с вашими настройками.
Веб-сервер Apache крайне чувствителен к регистру символов. Если ваш веб-сервис в метаданных называется AllProductList, а вы пытаетесь обратиться к нему по адресу, где все буквы строчные, вы гарантированно получите ошибку 404.
Рассмотрим правильную структуру строки подключения к WSDL:
http://[адрес_сервера]/[имя_публикации]/ws/[имя_сервиса].1cws?wsdl
Разберем по шагам:
[имя_публикации] — это то имя, которое вы указали в поле «Имя» в окне публикации. В нашем примере это было allproductlist./ws/ — обязательная техническая часть пути для веб-сервисов 1С.[имя_сервиса].1cws — имя вашего веб-сервиса из дерева конфигурации.Если в 1С сервис назван AllProductList, то и в ссылке он должен быть AllProductList.1cws. Попытка использовать allproductlist.1cws (в нижнем регистре) часто приводит к неудаче, особенно если сервер настроен строго.
Выясним причину, по которой переименование публикации помогает решить проблему. Когда вы выполняете публикацию под старым именем (например, allproductlist), Apache может использовать закэшированные или старые записи в своем конфигурационном файле httpd.conf. Кроме того, если в каталоге htdocs веб-сервера уже существует папка с таким же именем, Apache может попытаться найти в ней физический файл вместо того, чтобы передать управление модулю расширения 1С.
При смене имени на новое (например, anbarreport) происходят следующие процессы:
default.vrd, где все флаги enable по умолчанию установлены в значение true.Не стоит забывать о необходимости перезагрузки службы Apache после каждой публикации или изменения файла конфигурации. Хотя 1С пытается подать сигнал серверу о необходимости перечитать настройки, в случае со сложными конфигурациями или использованием нескольких баз (как в нашей ситуации с БП 2.0 и УТ 10.3), надежнее сделать это вручную через оснастку «Службы» или монитор Apache.
Порядок действий для исправления ошибки 404:
Подводя итог, можно сказать, что ошибка 404 чаще всего является следствием невнимательности к деталям: выключенный флаг enable в XML-файле, несоблюдение регистра в URL или конфликт имен в конфигурации Apache. Системный подход к проверке этих параметров позволяет быстро восстановить работоспособность обмена данными.