При развертывании инфраструктуры 1С через веб-сервер специалисты часто сталкиваются с ситуацией, когда, казалось бы, успешная публикация базы в конфигураторе приводит к ошибке HTTP: Not found (404) при попытке входа. Особенно остро эта проблема проявляется в современных конфигурациях на платформе 8.3, использующих сложные внутренние механизмы взаимодействия. В данной статье мы подробно разберем, почему возникает эта ошибка, как ее исправить с помощью настроек публикации и как правильно организовать структуру каталогов на сервере Apache.
Рассмотрим типичную ситуацию: сервер работает под управлением Apache 2.2, используется платформа 1С:Предприятие 8.3.18.1289 (x64) и СУБД MS SQL 2019. При попытке обращения к базе по адресу http://server/transbuh/ сервер возвращает JSON-ответ с исключением {http://v8.1c.ru/8.2/virtual-resource-system}Exception и кодом 404.
Проанализируем этот стек ошибки. Упоминание virtual-resource-system говорит о том, что запрос дошел до модуля расширения веб-сервера 1С, но система виртуальных ресурсов не смогла сопоставить URL запроса с доступными ресурсами внутри опубликованной базы. Ошибка 404 в данном контексте означает, что веб-сервер «видит» публикацию, но модуль 1С не разрешает доступ к конкретному запрашиваемому пути или сервису.
Основная причина возникновения такой ошибки в новых версиях 1С заключается в том, что современные конфигурации (такие как Бухгалтерия предприятия 3.0 или ЗУП 3.1) активно используют внутренние HTTP-сервисы для выполнения базовых операций: проверки контрагентов, работы с расширениями, отрисовки некоторых элементов интерфейса. Если при публикации эти сервисы не разрешены, платформа может выдать 404 даже при попытке простого открытия клиентского приложения.
Разберем по шагам, как правильно выполнить публикацию:
transbuh) и тип веб-сервера (Apache 2.2).После включения этих опций платформа вносит изменения в файл default.vrd. Выясним причину успеха: в файле появляется раздел <httpServices>, который выглядит примерно так:
<httpServices publishByDefault="true">
<service name="MobileAppEnt" alias="MobileAppEnt"/>
</httpServices>
Без этой секции модуль 1c_module блокирует любые запросы, не относящиеся к стандартному веб-клиенту, что и вызывает ошибку 404 Not Found при попытке обращения к внутренним ресурсам системы.
Часто возникает вопрос: почему публикация отлично работает в корневом каталоге веб-сервера (например, C:\Apache22\htdocs\transbuh\), но выдает ошибку при попытке использовать более глубокую вложенность (например, C:\Apache22\htdocs\SOMETHING\transbuh\)?
Разберем ситуацию с точки зрения настройки Apache. Когда мы публикуем базу, 1С автоматически изменяет файл httpd.conf, добавляя туда директиву Alias. Рассмотрим пример:
Alias "/transbuh" "C:/Apache22/htdocs/transbuh/"
<Directory "C:/Apache22/htdocs/transbuh/">
AllowOverride None
Options None
Order allow,deny
Allow from all
SetHandler v8-application
ManagedApplicationDescriptor "C:/Apache22/htdocs/transbuh/default.vrd"
</Directory>
Если вы хотите использовать вложенный URL вида server/SOMETHING/transbuh, необходимо учитывать следующие правила:
httpd.conf. В таких случаях конфигурацию Apache приходится править вручную, указывая Alias "/SOMETHING/transbuh".Apache, нет прав на папку SOMETHING, он не сможет достучаться до вложенной папки transbuh.httpd.conf применяются иерархически. Если в родительской папке определены специфические правила обработки запросов или ограничения доступа, они могут конфликтовать с модулем 1c_module.Рассмотрим еще несколько важных моментов, которые помогут избежать ошибок при публикации:
Разрядность компонентов: Поскольку используется 1С x64, модуль веб-сервера (wsap22.dll или wsap24.dll) также является 64-битным. Важно убедиться, что сам Apache собран под архитектуру x64. Использование 32-битного веб-сервера с 64-битным модулем 1С невозможно. Для развертывания подходящей версии веб-сервера можно использовать скрипт автоматической установки Apache HTTP Server.
Расположение каталога публикации: Проанализируем практику системного администрирования. Крайне не рекомендуется создавать папки с default.vrd внутри стандартного каталога htdocs веб-сервера. Лучшей практикой считается создание отдельного корневого каталога (например, C:\inetpub\wwwroot\1c_bases\) и публикация каждой базы в свою подпапку там. Это разделяет статические файлы веб-сервера и конфигурационные файлы 1С, упрощая управление правами доступа NTFS.
Регистр имен: Помните, что для большинства веб-серверов пути /TransBuh/ и /transbuh/ — это разные ресурсы. Всегда придерживайтесь нижнего регистра при именовании публикаций, чтобы избежать путаницы при подключении пользователей.
Таким образом, для стабильной работы публикации 1С на веб-сервере необходимо не только правильно указать физические пути, но и обеспечить корректную регистрацию HTTP-сервисов в файле default.vrd, а также внимательно следить за соответствием виртуальных алиасов в конфигурации Apache.