Работа с веб-сервисами в 1С — это мощный инструмент интеграции, однако процесс их публикации на веб-сервере (особенно на Apache) часто сопровождается техническими сложностями. Типичная ситуация: вы успешно настроили и использовали веб-сервис, но после публикации второй базы или нового сервиса первый внезапно перестает работать, выдавая ошибку «403 Forbidden». Рассмотрим подробно, почему это происходит и как восстановить работоспособность системы.
Когда при выполнении программного кода на стороне клиента (или другой базы 1С) вы видите сообщение об ошибке работы с Интернет (403), это означает, что веб-сервер Apache принял запрос, но отказался его выполнять из-за ограничений прав доступа. Проанализируем типичный фрагмент кода, на котором происходит сбой:
Определение = Новый WSОпределения("http://localhost/ConsolidationBase/ws/wsreport.1cws?wsdl", "webadmin", "admin");
Ошибка возникает на этапе создания WSОпределения. Основная причина кроется не в самом коде 1С, а в том, как веб-сервер интерпретирует виртуальный каталог ConsolidationBase. Если ранее всё работало, а после публикации другого сервиса доступ «отвалился», значит, произошли изменения в конфигурационных файлах Apache или файлах дескриптора публикации 1С.
Первым делом проанализируем файл httpd.conf, который находится в папке conf вашего установленного Apache. При каждой публикации веб-сервиса через Конфигуратор 1С (Администрирование — Публикация на веб-сервере), программа вносит правки в этот файл. Разберем основные зоны риска:
wsap24.dll). Если вы публикуете базы из разных версий платформы, 1С может попытаться прописать загрузку разных версий модуля. Apache может загрузить только один модуль расширения. Проверьте, чтобы в файле не было нескольких конфликтующих строк LoadModule _1cws_module.Base, а вторая как Base_New, некорректная настройка маршрутизации в Apache может привести к тому, что запросы к одной базе будут ошибочно направляться по правилам другой, вызывая отказ в доступе.Выясним причину ошибки, исходя из версии вашего веб-сервера. В современных версиях Apache (2.4 и выше) существенно изменился синтаксис управления доступом. Если в блоке настроек вашей директории прописаны старые команды, сервер выдаст 403.
Найдите в httpd.conf блок, соответствующий вашей базе, и убедитесь, что он выглядит примерно так:
<Directory "C:/inetpub/wwwroot/ConsolidationBase">
AllowOverride None
Options None
Require all granted
ManagedPipelineMode Integrated
</Directory>
Обратите внимание на строку Require all granted. Если вместо нее вы видите Allow from all, это признак устаревшего синтаксиса, который может игнорироваться сервером, что и приводит к ошибке Forbidden.
Каждая публикация 1С сопровождается созданием файла default.vrd. Это XML-файл, который содержит описание всех доступных веб-сервисов для конкретной базы. Разберем, что могло пойти не так при добавлении второго сервиса:
default.vrd точка подключения описана как WSReport, а в коде вы обращаетесь к wsreport, сервер может вернуть ошибку доступа.default.vrd. В нем должен присутствовать блок <ws>, описывающий ваш сервис:
<ws>
<point name="wsreport" alias="wsreport.1cws"/>
</ws>
Как показывает практика (и сообщения опытных разработчиков), самый быстрый и надежный способ решить проблему «внезапной» ошибки 403 после новой публикации — это полная перепубликация. Рассмотрим последовательность действий:
C:/inetpub/wwwroot/ConsolidationBase).Даже если вы установили «Full Control» для папки, выясним нюанс: под каким пользователем запущена служба Apache? Обычно это Local System или специально созданная учетная запись.
Проверьте следующие моменты:
wsap*.dll).Мы выяснили, что ошибка 403 чаще всего является следствием некорректного обновления конфигурационных файлов веб-сервера при множественных публикациях. Для стабильной работы рекомендуем всегда проверять файл httpd.conf на предмет дубликатов модулей 1С и использовать явное указание прав доступа Require all granted. Перепубликация с очисткой каталога — наиболее действенный метод, позволяющий устранить программные ошибки записи файлов default.vrd и httpd.conf.