При работе с веб-публикациями 1С часто возникает ситуация, когда при попытке опубликовать базу через Конфигуратор система выдает ошибку: «Публикация невозможна из-за 64-бит платформы и 32-бит веб-сервера» (или наоборот). При этом системный администратор точно знает, что и платформа 1С, и веб-сервер Apache имеют одинаковую разрядность (x64). Давайте разберем, почему возникает этот конфликт и как опубликовать базу вручную, если стандартный механизм Конфигуратора дает сбой.
Рассмотрим ситуацию подробнее. Конфигуратор 1С при нажатии кнопки «Опубликовать» выполняет проверку установленного веб-сервера. Проблема заключается в том, что 1С ищет информацию об Apache в реестре Windows. Если вы используете готовые сборки типа XAMPP или просто распаковали Apache из архива без полноценной инstall-процедуры, записи в реестре могут отсутствовать или указывать на старые 32-битные версии программ. В результате 1С «думает», что разрядность не совпадает, и блокирует процесс, даже если фактически библиотеки совместимы.
Проанализируем архитектуру: для работы публикации необходимо, чтобы модуль расширения веб-сервера wsap24.dll (для Apache 2.4) имел ту же разрядность, что и сам процесс httpd.exe. Если вы используете 64-битную платформу 1С, вам обязательно нужен 64-битный Apache.
Прежде чем приступать к ручным правкам, нам необходимо убедиться, что установленный Apache действительно является 64-битным. Для этого воспользуемся командной строкой. Перейдем в каталог bin вашего веб-сервера (например, в XAMPP это C:\xampp\apache\bin) и выполним команду:
httpd.exe -V
Внимательно изучим вывод команды. Нас интересует строка Architecture. Если там указано 64-bit, значит, проблема исключительно в механизме определения разрядности внутри 1С, и мы можем смело переходить к ручной настройке.
Посмотрим, как устроена публикация «изнутри». Каждый экземпляр базы на веб-сервере описывается файлом 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="/MyBaseName"
ib="File="C:\Bases1C\MyDatabase";">
<ws enable="false" pointEnableCommon="false"/>
<standardOdata enable="false" publishExtensions="false"/>
</point>
В этом примере параметр base — это имя виртуального каталога, который будет использоваться в URL (например, http://localhost/MyBaseName), а параметр ib — строка соединения с информационной базой. Создайте текстовый файл, вставьте туда этот код (подставив свои пути), и сохраните его под именем default.vrd в папке, где будут лежать файлы публикации (например, C:\xampp\htdocs\MyBaseName\).
Теперь нам нужно «объяснить» веб-серверу, как обрабатывать запросы к нашей базе. Для этого откроем файл httpd.conf (обычно находится в папке conf веб-сервера). Нам нужно добавить два блока настроек.
Во-первых, убедимся, что загружен модуль 1С. В начале или середине файла должна быть строка, указывающая на 64-битную библиотеку из каталога установленной платформы:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.19.1723/bin/wsap24.dll"
Во-вторых, добавим описание нашей конкретной базы в конец файла httpd.conf. Рассмотрим пример настройки алиаса:
Alias "/MyBaseName" "C:/xampp/htdocs/MyBaseName/"
<Directory "C:/xampp/htdocs/MyBaseName/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/xampp/htdocs/MyBaseName/default.vrd"
</Directory>
Здесь мы связываем URL-путь /MyBaseName с физической папкой на диске и указываем, что обработчиком является модуль 1С (SetHandler 1c-application), а настройки публикации лежат в созданном нами ранее файле default.vrd.
Выясним важный нюанс: веб-сервер запускается от имени определенного пользователя (в Windows это часто LocalSystem или специальный аккаунт службы). Проанализируем права доступа к папке с базой данных (если она файловая) и к папке с файлом default.vrd. Пользователь, от имени которого работает служба Apache, должен иметь полные права (чтение, запись, изменение) на эти каталоги.
После внесения всех изменений необходимо перезапустить службу веб-сервера. Это можно сделать через панель управления XAMPP или через оснастку «Службы» Windows. Если после перезапуска Apache не стартует, проверьте журнал ошибок error.log — скорее всего, в httpd.conf была допущена опечатка в путях.
Рассмотренный нами метод позволяет обойти любые ошибки Конфигуратора, связанные с «неправильным» определением битности. Мы напрямую указываем веб-серверу, какую DLL использовать и где лежат файлы настроек. Это особенно актуально при работе с XAMPP или при наличии нескольких установленных версий платформы 1С на одном сервере, так как Конфигуратор часто путается в реестре Windows (ветки WOW6432Node), пытаясь найти установленный Apache.
Подведем итог: если вы столкнулись с ошибкой разрядности, не спешите переустанавливать платформу. Проверьте реальную битность Apache через -V, создайте default.vrd вручную и пропишите Alias в httpd.conf. Этот подход гарантирует стабильную работу публикации вне зависимости от того, насколько корректно 1С видит окружение системы.