В процессе автоматизации развертывания информационных баз 1С часто возникает задача не просто опубликовать базу на веб-сервере, но и сразу активировать все необходимые HTTP-сервисы. Это критично при создании систем-менеджеров, которые управляют множеством дочерних баз, или в процессах CI/CD. В данной статье мы подробно разберем, как реализовать этот процесс программно, используя штатные средства платформы и файлы конфигурации.
Основным инструментом для управления публикацией является утилита webinst, которая входит в состав платформы 1С:Предприятие. Она располагается в каталоге bin установленной версии платформы. При автоматизации крайне важно обращаться к конкретной версии платформы, так как параметры могут меняться от релиза к релизу.
Рассмотрим стандартный синтаксис команды для публикации на сервере Apache. Проанализируем основные параметры:
default.vrd.Самый эффективный способ публикации HTTP-сервисов — это использование заранее подготовленного XML-файла с расширением .vrd. Это позволяет избежать ручного перечисления каждого сервиса в командной строке и дает гибкость в настройке параметров сессий и пулов. Рассмотрим структуру такого файла.
Разберем пример секции httpServices, которую необходимо включить в 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="Srvr="MyServer";Ref="MyBase";">
<httpServices publishExtensionsByDefault="true">
<service name="НазваниеСервисаИзКонфигуратора"
rootUrl="api_v1"
enable="true"
reuseSessions="use"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</httpServices>
</point>
Проанализируем важный атрибут: publishExtensionsByDefault="true". Если установить его в значение true, платформа автоматически опубликует все HTTP-сервисы, которые присутствуют в конфигурации, включая те, что будут добавлены в расширениях. Это избавляет от необходимости редактировать файл каждый раз при добавлении нового метода API.
При программной публикации важно правильно настроить параметры работы HTTP-сервисов, чтобы база выдерживала нагрузку. Рассмотрим параметры внутри тега service:
use позволяет повторно использовать существующие сеансы 1С, что значительно ускоряет обработку запросов, так как системе не нужно каждый раз выполнять авторизацию и инициализацию параметров сеанса.Для запуска процесса из кода 1С (например, из базы-менеджера) удобно использовать объект Wscript.Shell. Выясним, как это выглядит на практике. Рассмотрим пример формирования команды:
ПутьКWebInst = "C:\Program Files\1cv8\8.3.22.1709\bin\webinst.exe";
Параметры = " -apache24 -wsdir BaseAlias -dir ""C:\Apache24\htdocs\BaseAlias"" -connstr ""Srvr=Server1C;Ref=BaseName;"" -descriptor ""C:\Templates\my_template.vrd""";
Команда = """" + ПутьКWebInst + """" + Параметры;
Shell = Новый COMОбъект("WScript.Shell");
КодВозврата = Shell.Run(Команда, 0, Истина);
Если КодВозврата <> 0 Тогда
Сообщить("Ошибка при публикации базы!");
КонецЕсли;
Обратите внимание на использование двойных кавычек при формировании пути — это необходимо, если в путях к файлам присутствуют пробелы.
Если ваша инфраструктура работает на Linux, алгоритм остается похожим, но меняются пути и способы взаимодействия с веб-сервером. Утилита webinst в Linux обычно находится по пути /opt/1cv8/x86_64/версия_платформы/webinst. После выполнения программной публикации крайне желательно перезапустить службу веб-сервера для применения изменений:
sudo systemctl reload apache2
Также важно убедиться, что у пользователя, под которым запущен веб-сервер (обычно www-data), есть права доступа к каталогу, указанному в параметре -dir, и к самим файлам платформы 1С.
Часто HTTP-сервисы используются для интеграции с внешними системами, которые не умеют передавать логин и пароль 1С в стандартном окне авторизации. В таких случаях мы можем программно прописать пользователя в файле default.vrd. Для этого в секцию point добавим настройку standardAuthentication:
<standardAuthentication>
<user>WebAPIUser</user>
<password>SecretPassword123</password>
</standardAuthentication>
Важно: При использовании этого метода все запросы к HTTP-сервису будут выполняться от имени указанного пользователя. Убедитесь, что у этого пользователя в базе 1С назначена роль с правами на использование конкретного HTTP-сервиса и соответствующие права на чтение/запись данных.
Программная публикация HTTP-сервисов — это мощный инструмент для автоматизации. Основной секрет успеха заключается в использовании параметра -descriptor и правильной настройке файла default.vrd. Установка флага publishExtensionsByDefault позволяет сделать систему максимально гибкой, а настройка пула соединений — производительной. Не забывайте проверять права доступа к файловой системе и корректность строки соединения с базой данных.