При организации совместной разработки в среде 1С:Предприятие стандартное подключение к хранилищу конфигурации по протоколу TCP часто оказывается неэффективным, особенно при работе распределенной команды через интернет. Высокие требования к стабильности канала связи и задержкам (ping) приводят к частым разрывам сессий и зависаниям Конфигуратора. Решением этой проблемы является публикация хранилища конфигурации на веб-сервере по протоколу HTTP/HTTPS. В качестве веб-сервера чаще всего выбирают надежный и бесплатный Apache.
В этой статье мы подробно, шаг за шагом, разберем процесс публикации хранилища 1С под веб-сервером Apache (как для операционных систем Windows, так и для Linux), проанализируем архитектуру этого решения и научимся исправлять самые распространенные ошибки, такие как HTTP: Not found, HTTP: Forbidden и проблемы с разбором конфигурационных XML-файлов.
Прежде чем переходить к редактированию конфигурационных файлов, давайте разберем, как устроена схема взаимодействия компонентов. Важно понимать, что веб-сервер Apache не работает с файлами базы данных хранилища напрямую. Он выступает в роли посредника (шлюза), который принимает HTTP-запросы от Конфигуратора 1С и перенаправляет их специализированной службе — серверу хранилища конфигураций 1С (приложению crserver).
Связующим звеном между Apache и службой crserver выступает специальный файл описания с расширением .1ccr (например, repository.1ccr). Именно к этому файлу обращается Конфигуратор, а веб-сервер, используя проприетарный модуль расширения 1С (wsap22.dll, wsap24.dll или их аналоги .so для Linux), обрабатывает этот запрос и транслирует его в TCP-команды для службы crserver.
Таким образом, для успешной работы нам необходимо настроить три независимых компонента:
crserver на определенном TCP-порту.repository.1ccr, указывающий на эту службу.Рассмотрим процесс запуска сервера хранилища. Нам необходимо зарегистрировать crserver как системную службу. По умолчанию сервер работает на порту 1542.
Для операционной системы Windows запустим командную строку от имени администратора и выполним следующую команду:
"C:\Program Files\1cv8\8.3.18.1211\bin\crserver.exe" -instsrvc -d "E:\1CDev"
Здесь параметр -d указывает на корневой каталог, в котором будут физически создаваться и храниться наши базы данных (хранилища конфигурации). После выполнения команды откроем оснастку "Службы" (services.msc) и запустим службу 1C:Enterprise 8 Configuration Repository Server.
Перейдем в каталог, который мы указали при регистрации службы (в нашем примере это E:\1CDev). В корне этого каталога создадим текстовый файл с именем repository.1ccr.
Откроем этот файл в текстовом редакторе (рекомендуется использовать Notepad++ для контроля кодировки) и внесем в него следующее XML-содержимое:
<?xml version="1.0" encoding="UTF-8"?>
<repositoryRoot xmlns="http://www.1c.ru/RepositoryRoot">
<repository connectString="tcp://localhost:1542"/>
</repositoryRoot>
Важное предупреждение: Файл должен быть обязательно сохранен в кодировке UTF-8 без BOM (Byte Order Mark). Использование стандартного "Блокнота" Windows может привести к добавлению невидимых спецсимволов BOM в начало файла, из-за чего 1С выдаст ошибку разбора XML. Также убедитесь, что все кавычки в файле являются прямыми машинными кавычками ("), а не типографскими ("умными") кавычками.
Теперь перейдем к конфигурации веб-сервера Apache. Нам необходимо подключить модуль расширения веб-сервера 1С и зарегистрировать обработчик для файлов .1ccr.
Обратим внимание на критически важный нюанс — соответствие разрядности. Разрядность веб-сервера Apache, установленной платформы 1С и используемой DLL-библиотеки модуля расширения должна строго совпадать. Если вы используете 64-битный Apache, вы обязаны прописывать путь к 64-битной версии библиотеки 1С (из каталога Program Files), иначе Apache не запустится.
Откроем конфигурационный файл Apache (обычно расположен по пути C:\Program Files\Apache24\conf\httpd.conf) и добавим в самый конец следующие строки:
# Подключение модуля расширения 1С для Apache 2.4 (64-бит)
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.18.1211/bin/wsap24.dll"
# Регистрация обработчика файлов .1ccr
AddHandler 1cws-process .1ccr
# Настройка виртуального каталога для хранилища
Alias /storage "E:/1CDev/"
<Directory "E:/1CDev/">
AllowOverride None
Options None
DirectorySlash Off
SetHandler 1cws-process
Require all granted
</Directory>
# Подключение модуля расширения 1С для Apache 2.2
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.18.1211/bin/wsap22.dll"
AddHandler 1cws-process .1ccr
Alias /storage "E:/1CDev/"
<Directory "E:/1CDev/">
AllowOverride All
DirectorySlash Off
Options None
SetHandler 1cws-process
Order allow,deny
Allow from all
</Directory>
Проанализируем ключевые параметры в этих директивах:
AddHandler 1cws-process .1ccr — указывает веб-серверу, что файлы с расширением .1ccr должны обрабатываться модулем веб-сервисов 1С. Обратите внимание на наличие обязательного пробела перед точкой.DirectorySlash Off — критически важная директива. По умолчанию Apache автоматически перенаправляет запросы к папкам без косой черты в конце на URL со слэшем (делает редирект 301). Это поведение полностью ломает отправку POST-запросов из Конфигуратора к файлу описания и приводит к ошибкам работы с хранилищем. Данная опция отключает это поведение.Require all granted (для Apache 2.4) или Allow from all (для Apache 2.2) — разрешают доступ к указанному физическому каталогу на сервере.Выясним причину частой ошибки HTTP: Forbidden (403). Она возникает, когда процесс веб-сервера Apache не имеет прав на чтение и изменение файлов в каталоге хранилища.
По умолчанию служба Apache в Windows работает под учетной записью SYSTEM или Network Service (в Linux — под пользователем www-data или apache). Нам необходимо предоставить этой учетной записи полные права на папку с хранилищем (в нашем примере E:\1CDev) и на сам файл repository.1ccr. Права должны включать чтение, запись и изменение содержимого папки.
После настройки всех конфигурационных файлов перезапустим службу веб-сервера Apache. Теперь мы готовы выполнить подключение из Конфигуратора.
Путь к хранилищу при использовании HTTP-протокола должен указываться строго по следующему шаблону:
http://[Имя_или_IP_сервера]/[Имя_виртуального_каталога]/[Имя_файла_описания].1ccr/[Имя_конкретного_хранилища]
Рассмотрим конкретный пример. Если на сервере с IP-адресом 192.168.0.31 мы создали хранилище в подпапке E:\1CDev\hranORIGINAL, то строка подключения в Конфигураторе будет выглядеть так:
http://192.168.0.31/storage/repository.1ccr/hranORIGINAL
Если мы настроили SSL-шифрование на веб-сервере, то протокол в начале строки изменится на безопасный:
https://192.168.0.31/storage/repository.1ccr/hranORIGINAL
Проанализируем ситуацию, когда при попытке подключения Конфигуратор возвращает ошибку отсутствия ресурса. Это может происходить по нескольким причинам:
repository.1ccr) в пути подключения. Типичная ошибка — указывать путь просто как http://server/storage/hranORIGINAL.1cws-process не инициализируется, и веб-сервер выдает 404 ошибку на файл .1ccr. Убедитесь в логах Apache (error.log), что модуль 1С успешно загружен при старте сервера.Если вы столкнулись с ошибкой ограничения доступа, выполним следующие проверки:
Require all granted внутри секции <Directory> в конфигурационном файле Apache 2.4. Старый синтаксис Allow from all в версии 2.4 не работает и вызывает ошибку 403.E:\1CDev.Эта проблема подробно обсуждалась разработчиками на форуме. Если при обращении к хранилищу вы видите ошибку разбора XML-структуры файла repository.1ccr, это свидетельствует о некорректном формате самого конфигурационного файла:
repository.1ccr в текстовом редакторе Notepad++, выберите пункт меню "Кодировки" и преобразуйте файл в "UTF-8 без BOM", после чего сохраните его.Выясним причину этой ошибки. Она возникает в том случае, если в файле конфигурации Apache для каталога хранилища по ошибке зарегистрирован стандартный обработчик публикации баз данных 1c-application (SetHandler 1c-application).
Для публикации хранилища должен использоваться строго специализированный обработчик веб-сервисов 1cws-process. Убедитесь, что в файле httpd.conf прописана строка SetHandler 1cws-process.
Мы подробно разобрали все этапы развертывания хранилища 1С на веб-сервере Apache. Соблюдение этих простых инструкций и понимание архитектуры взаимодействия компонентов позволят вам быстро настроить стабильную среду для совместной работы разработчиков.