Решение задач 1С:Предприятие 8 на примерах

Веб-сервер 1С: публикация базы на Apache и IIS через Конфигуратор и webinst

Интеграция и веб-сервисыОпубликовано

Веб-клиент, тонкий клиент через интернет, веб-сервисы, HTTP-сервисы и OData работают только через опубликованную базу. Разбираем, какой веб-сервер выбрать для 1С, что установить перед публикацией, как опубликовать базу из Конфигуратора и командой webinst на Windows и Linux, что меняется в httpd.conf и default.vrd, как настроить права и HTTPS и почему после обновления платформы публикация перестаёт работать.

Зачем 1С нужен веб-сервер

Веб-сервер для 1С — это посредник между HTTP-клиентом и информационной базой. Сам по себе Apache или IIS ничего не знает о 1С: работу выполняет модуль расширения веб-сервера, который входит в дистрибутив платформы. Он принимает запросы, передаёт их серверу 1С:Предприятия (или открывает файловую базу) и возвращает ответ. Публикация базы 1С на веб-сервере нужна в нескольких случаях:

  • работа в веб-клиенте из браузера без установки платформы;
  • подключение тонкого и мобильного клиента по HTTP или HTTPS, когда прямого доступа к кластеру нет;
  • вызов веб-сервисов (SOAP), HTTP-сервисов и стандартного интерфейса OData из внешних систем.

После публикации у базы появляется адрес вида http://сервер/имя_публикации, а сервисы получают типовые пути:

Что опубликованоАдрес
Веб-клиент и тонкий клиентhttp://srv01/trade
Веб-сервисhttp://srv01/trade/ws/ИмяСервиса?wsdl
HTTP-сервисhttp://srv01/trade/hs/КорневойURL/...
ODatahttp://srv01/trade/odata/standard.odata/

Если пользователи работают только в локальной сети и у них есть доступ к портам кластера, веб-сервер не обязателен. Устройство кластера и его порты описаны в статье про сервер 1С:Предприятия.

Что установить перед публикацией

Нужны три вещи: сам веб-сервер, модуль расширения 1С и платформа той же версии, что и сервер 1С. В установщике платформы для Windows отметьте компонент «Модули расширения веб-сервера». На Linux модуль ставится отдельным компонентом или пакетом (в установщике setup-full-...run это компонент ws). Разрядность модуля должна совпадать с разрядностью веб-сервера: 64-разрядный Apache загружает только 64-разрядный модуль.

Веб-серверФайл модуляКлюч webinst
Apache 2.4, Windowswsap24.dll-apache24
Apache 2.4, Linuxwsap24.so-apache24
Apache 2.2 (устаревший)wsap22.dll / wsap22.so-apache22
IISwsisapi.dll-iis

IIS 1С: подготовка Windows

Компоненты IIS по умолчанию не установлены. В Windows 10/11 откройте «Включение и отключение компонентов Windows» (appwiz.cpl) и отметьте «Службы IIS» → «Службы Интернета» → «Компоненты разработки приложений» → «Расширения ISAPI» и «Фильтры ISAPI», а также «Консоль управления IIS». В Windows Server то же делается в «Диспетчере серверов»: роль «Веб-сервер (IIS)», в службах роли — ISAPI Extensions и ISAPI Filters. Такой набор приводит методика 1С по настройке IIS.

Apache для 1С

На Linux Apache ставится из репозитория дистрибутива: пакет apache2 в Debian и Ubuntu, httpd в RHEL-совместимых системах и РЕД ОС. Для Windows официального установщика нет — обычно берут готовую сборку Apache 2.4 нужной разрядности, распаковывают её (например, в C:\Apache24) и регистрируют службу командой httpd.exe -k install. Перед публикацией убедитесь, что Apache запускается и отдаёт стартовую страницу.

Публикация базы 1С на веб-сервере из Конфигуратора

Самый простой способ — диалог в Конфигураторе. Конфигуратор нужно запустить от имени администратора Windows, иначе ему не хватит прав на запись в конфигурацию веб-сервера.

  1. Откройте базу в Конфигураторе и выберите «Администрирование → Публикация на веб-сервере».
  2. В поле «Имя» укажите имя публикации — оно станет частью адреса (trade → http://srv01/trade). Используйте латиницу без пробелов.
  3. Выберите веб-сервер из списка (Apache 2.4 или Internet Information Services) и каталог публикации — в нём будет создан файл default.vrd.
  4. На закладке «Основные» отметьте, что публиковать: доступ для клиентских приложений, стандартный интерфейс OData, а на отдельных закладках — нужные веб-сервисы и HTTP-сервисы.
  5. Нажмите «Опубликовать». Для Apache диалог предложит перезапустить веб-сервер — согласитесь.

Для IIS публикация всегда выполняется в «Default Web Site» и пул приложений по умолчанию. Если нужны другой сайт или отдельный пул, перенастройте их в диспетчере IIS после публикации. Повторная публикация с тем же именем обновляет настройки, кнопка «Отключить» удаляет публикацию.

Утилита webinst: публикация из командной строки

Утилита webinst лежит в каталоге bin платформы (на Linux — в каталоге установки, например /opt/1cv8/x86_64/8.3.27.xxxx). Она делает то же, что диалог, но её удобно использовать в скриптах, на сервере без графического интерфейса и на Linux. Основные параметры:

ПараметрНазначение
-publish / -deleteОпубликовать базу или удалить публикацию
-iis, -apache22, -apache24Тип веб-сервера
-wsdirИмя публикации (виртуальный каталог)
-dirФизический каталог публикации с файлом default.vrd
-connstrСтрока соединения с базой
-confpathПуть к конфигурационному файлу Apache
-descriptorГотовый файл default.vrd, из которого берутся настройки
-osauthАутентификация средствами ОС на стороне IIS

Примеры для разных случаев. Командную строку на Windows открывайте от имени администратора, на Linux выполняйте команды через sudo:

rem Apache 2.4 на Windows, клиент-серверная база
webinst.exe -publish -apache24 -wsdir trade -dir "C:\Apache24\htdocs\trade" ^
  -connstr "Srvr=srv01;Ref=trade;" -confpath "C:\Apache24\conf\httpd.conf"

rem IIS, файловая база
webinst.exe -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "File=""D:\Bases\Buh"";"

rem Удаление публикации
webinst.exe -delete -apache24 -wsdir trade -dir "C:\Apache24\htdocs\trade" -confpath "C:\Apache24\conf\httpd.conf"
# Apache 2.4 на Linux (Debian/Ubuntu)
cd /opt/1cv8/x86_64/8.3.27.xxxx
sudo ./webinst -publish -apache24 -wsdir trade -dir /var/www/trade \
  -connstr "Srvr=srv01;Ref=trade;" -confpath /etc/apache2/apache2.conf
sudo apachectl -t && sudo systemctl restart apache2

В RHEL-совместимых системах конфигурация Apache обычно лежит в /etc/httpd/conf/httpd.conf, а служба называется httpd. Путь к конфигурационному файлу лучше передавать явно, чтобы утилита не изменила другой экземпляр Apache.

Что меняется после публикации: httpd.conf и default.vrd

Для Apache утилита дописывает в конфигурацию загрузку модуля и блок каталога публикации. Обратите внимание: в путь к модулю входит номер версии платформы.

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.27.xxxx/bin/wsap24.dll"

# 1c publication
Alias "/trade" "C:/Apache24/htdocs/trade/"
<Directory "C:/Apache24/htdocs/trade/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/Apache24/htdocs/trade/default.vrd"
</Directory>

Настройки самой публикации хранятся в default.vrd в каталоге публикации. Атрибут base — адрес публикации, ib — строка соединения; вложенные элементы управляют веб-сервисами, HTTP-сервисами и OData. Упрощённый пример:

<?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="/trade"
       ib="Srvr=&quot;srv01&quot;;Ref=&quot;trade&quot;;">
    <ws pointEnableCommon="true"/>
    <httpServices publishByDefault="true"/>
    <standardOdata enable="false"/>
</point>

Файл можно править вручную, например чтобы отключить OData или опубликовать только один HTTP-сервис. После правки перезапустите Apache или пул приложений IIS. Перед изменениями сохраните копию файла.

Права доступа и аутентификация

Для файловой базы учётная запись, от имени которой работает веб-сервер, должна иметь права на чтение и запись в каталог базы: на Linux это пользователь www-data или apache, в IIS — удостоверение пула приложений (группа IIS_IUSRS). Без этого публикация откроется, но вход в базу завершится ошибкой доступа к файлу. Для клиент-серверной базы права на файлы не нужны: модуль обращается к кластеру по сети, поэтому с веб-сервера должны быть доступны порты кластера.

Пользователь входит в базу под учётной записью 1С. Чтобы внешняя система вызывала сервисы без формы входа, задайте пользователя в настройках публикации или передавайте логин и пароль в заголовке запроса — подробнее в статье про авторизацию при обращении к веб-сервису.

HTTPS и доступ из интернета

Публиковать базу в интернет по обычному HTTP нельзя: логины, пароли и данные передаются открытым текстом. Методика 1С прямо не рекомендует такую схему. Варианты защиты:

  • IIS — импортируйте сертификат в «Сертификаты сервера» и добавьте сайту привязку https на порт 443.
  • Apache — включите mod_ssl, добавьте Listen 443 и виртуальный хост с директивами SSLCertificateFile и SSLCertificateKeyFile.
  • Обратный прокси (например, nginx) — принимает HTTPS снаружи и передаёт запросы внутреннему Apache или IIS.

Дополнительно ограничьте доступ по IP-адресам или через VPN и не публикуйте наружу OData и сервисы, которые нужны только внутри сети.

Проверка публикации из 1С

Простейшая проверка — открыть адрес публикации в браузере. Работу HTTP-сервиса удобно проверить из другой базы кодом на встроенном языке. Пример на сервере предполагает опубликованный HTTP-сервис с корневым URL api и шаблоном /ping:

&НаСервере
Функция ПроверитьПубликацию()

    Соединение = Новый HTTPСоединение("srv01", 80, "ИнтеграцияAPI", "пароль", , 15);
    Запрос = Новый HTTPЗапрос("/trade/hs/api/ping");
    Запрос.Заголовки.Вставить("Accept", "application/json");

    Попытка
        Ответ = Соединение.Получить(Запрос);
    Исключение
        Возврат "Нет соединения: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
    КонецПопытки;

    Если Ответ.КодСостояния = 200 Тогда
        Возврат "OK: " + Ответ.ПолучитьТелоКакСтроку();
    ИначеЕсли Ответ.КодСостояния = 401 Тогда
        Возврат "Ошибка аутентификации: проверьте пользователя и права";
    ИначеЕсли Ответ.КодСостояния = 404 Тогда
        Возврат "Не найдено: проверьте имя публикации и корневой URL сервиса";
    Иначе
        Возврат "Код ответа " + Ответ.КодСостояния;
    КонецЕсли;

КонецФункции

Для HTTPS передайте седьмым параметром конструктора объект Новый ЗащищенноеСоединениеOpenSSL() и укажите порт 443. Как разбирать JSON-ответ, показано в статье про HTTP-запросы из 1С.

Альтернатива: автономный сервер

Для небольших задач вместо связки «Apache или IIS плюс кластер» можно использовать автономный сервер ibsrv. В нём есть встроенный веб-сервер, через который работают тонкий клиент и веб-клиент. HTTPS он сам не обслуживает, поэтому для доступа из интернета его ставят за обратный прокси. Для рабочей базы с десятками пользователей привычнее полноценный кластер и отдельный веб-сервер.

Типичные ошибки при публикации 1С на Apache и IIS

СимптомПричина и решение
Apache не запускается после публикацииНе совпадает разрядность модуля и Apache или путь в LoadModule указывает на удалённую версию платформы. Проверьте синтаксис командой httpd -t (apachectl -t) и исправьте путь.
После обновления платформы перестал работать веб-клиентМодуль остался от старой версии. Опубликуйте базу заново утилитой webinst новой версии или поправьте путь к модулю. Версии модуля и сервера 1С должны совпадать.
Ошибка 404 по адресу публикацииИмя в адресе не совпадает с -wsdir, публикация сделана в другой экземпляр Apache или в IIS не зарегистрирован обработчик.
IIS: ошибка 500 или модуль не загружаетсяВ 64-разрядном IIS установлен 32-разрядный модуль. Либо поставьте 64-разрядный, либо создайте отдельный пул с параметром «Разрешены 32-разрядные приложения».
Ошибка доступа к файлу базыУ учётной записи веб-сервера нет прав на каталог файловой базы.
Linux: ошибка загрузки компоненты backbas в веб-клиентеВстречается на новых релизах в RHEL-подобных системах из-за ограничения MemoryDenyWriteExecute в юните systemd или SELinux. Добавьте в override юнита MemoryDenyWriteExecute=no и настройте контексты SELinux.

Актуальность для новых версий

Порядок публикации — диалог «Публикация на веб-сервере» и утилита webinst — одинаков во всех релизах 8.3. Модуль wsap24 для Apache 2.4 и модуль для IIS поставляются с платформой, а путь к модулю в конфигурации Apache содержит номер версии, поэтому после каждого обновления платформы публикацию нужно проверять. Список параметров webinst и особенности для вашего релиза уточняйте в «Руководстве администратора» на ИТС: там же есть документация по ветке 8.5.

Частые вопросы

Какой веб-сервер лучше для 1С: Apache или IIS?

Функционально они равноценны. IIS удобен на Windows Server, где он уже есть в составе системы. Apache 2.4 подходит и для Windows, и для Linux, а на Linux это основной вариант. Выбирайте сервер, который ваша команда умеет обслуживать, и следите за совпадением разрядности модуля и веб-сервера.

Где находится утилита webinst?

В Windows — в каталоге bin установленной версии платформы, например C:\Program Files\1cv8\8.3.27.xxxx\bin. В Linux — в каталоге установки платформы, например /opt/1cv8/x86_64/8.3.27.xxxx. Используйте webinst той же версии, что и сервер 1С.

Почему после обновления платформы не открывается веб-клиент?

В конфигурации веб-сервера остался путь к модулю старой версии или модуль не совпадает с версией сервера. Опубликуйте базу заново утилитой webinst новой версии или исправьте путь в директиве LoadModule и перезапустите веб-сервер.

Можно ли опубликовать файловую базу на веб-сервере?

Можно: в строке соединения укажите File с путём к каталогу базы. Учётной записи веб-сервера нужны права на чтение и запись в этот каталог. Для многопользовательской работы через интернет надёжнее клиент-серверный вариант.

Нужно ли открывать порты кластера 1С наружу при веб-публикации?

Нет. Пользователи подключаются к веб-серверу по HTTP или HTTPS, а веб-сервер обращается к кластеру по внутренней сети. Наружу публикуют только порт веб-сервера, желательно 443 с HTTPS.

Обмены в 1С: план обмена, регистрация и выгрузка изменений

Интеграция и веб-сервисы

Разбираем, какие бывают обмены в 1С и как построить свой обмен на плане обмена: регистрация изменений, выгрузка, загрузка и подтверждение получения сообщений.

XML в 1С программно: запись, чтение, DOM и выгрузка данных

Интеграция и веб-сервисы

Готовые примеры работы с XML на встроенном языке 1С: запись и чтение, DOM с XPath, преобразование XML в структуру, выгрузка справочника и разбор ошибок парсинга.

Работа с JSON в 1С: чтение, запись, даты и типичные ошибки

Интеграция и веб-сервисы

Практическое руководство по JSON в 1С: чтение строки и файла, Структура против Соответствия, запись массивов, даты, сериализация через XDTO и разбор частых ошибок.

HTTP-запросы из 1С к REST API: GET, POST и JSON

Интеграция и веб-сервисы

Готовые примеры GET и POST запросов из 1С к REST API по HTTPS: заголовки, токены, JSON, прокси, отправка файлов и универсальная функция-обёртка с логированием.