Files
cc-1c-skills/docs/web-spec.md
T
Nick Shirokov 96b400ddb9 chore(web): change default port from 8080 to 8081
8080 is too commonly used (Tomcat, Jenkins, dev servers).
8081 is less likely to conflict in dev environments.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 16:40:33 +03:00

5.6 KiB
Raw Blame History

Веб-публикация 1С — техническая спецификация

Описание артефактов, необходимых для публикации информационной базы 1С через Apache HTTP Server.

default.vrd

Дескриптор виртуального ресурса. XML-файл, описывающий подключение к информационной базе.

Формат

<?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="/appname"
       ib="connection-string">
</point>

Атрибут base

URL-путь публикации. Должен начинаться с /, совпадает с Alias в httpd.conf.

Атрибут ib

Строка подключения к информационной базе.

Файловая база:

File=&quot;C:\Bases\MyDB&quot;;

Серверная база:

Srvr=&quot;server01&quot;;Ref=&quot;MyDB&quot;;

С авторизацией:

File=&quot;C:\Bases\MyDB&quot;;Usr=&quot;Admin&quot;;Pwd=&quot;123&quot;;

Кавычки внутри значения ib экранируются как &quot; (XML-сущность).

Расположение

{ApachePath}/publish/{AppName}/default.vrd

httpd.conf для 1С

LoadModule

Apache загружает модуль расширения 1С:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1691/bin/wsap24.dll"
  • Модуль wsap24.dll — 64-разрядный, требует x64-версию Apache
  • Путь использует forward slashes

Listen

Listen 8081

Порт для веб-клиента. По умолчанию 8081 (стандартный 80 может быть занят).

Alias + Directory

Для каждой публикации добавляется блок:

Alias "/appname" "C:/path/to/apache/publish/appname"
<Directory "C:/path/to/apache/publish/appname">
    AllowOverride All
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/path/to/apache/publish/appname/default.vrd"
</Directory>
  • Alias — URL-путь → физический каталог
  • SetHandler 1c-application — делегирование обработки запросов модулю wsap24
  • ManagedApplicationDescriptor — путь к default.vrd

Маркерный подход

Скрипты используют маркерные комментарии для идемпотентного управления блоками:

# --- 1C: global ---
Listen 8081
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1691/bin/wsap24.dll"
# --- End: global ---

# --- 1C Publication: mydb ---
Alias "/mydb" "C:/tools/apache24/publish/mydb"
<Directory "C:/tools/apache24/publish/mydb">
    AllowOverride All
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/tools/apache24/publish/mydb/default.vrd"
</Directory>
# --- End: mydb ---

При повторном запуске блок между маркерами заменяется целиком.

wsap24.dll

Модуль расширения Apache для 1С:Предприятие 8.3.

  • Расположение: {V8Path}/wsap24.dll (в каталоге bin платформы)
  • Архитектура: x64 (Apache тоже должен быть x64)
  • Имя модуля: _1cws_module

Portable Apache

Дистрибутив

Apache Lounge — Windows-сборка Apache HTTP Server (x64):

  • Сайт: https://www.apachelounge.com/download/
  • Прямая ссылка (2.4.62, VS17): https://www.apachelounge.com/download/VS17/binaries/httpd-2.4.62-240904-win64-VS17.zip
  • Внутри ZIP: каталог Apache24/ с полной структурой

Структура после установки

tools/apache24/
├── bin/
│   ├── httpd.exe
│   └── ...
├── conf/
│   ├── httpd.conf
│   └── ...
├── logs/
│   ├── error.log
│   └── access.log
├── modules/
│   └── ...
└── publish/
    └── {appname}/
        └── default.vrd

Пост-распаковка

  1. Expand-Archive распаковывает ZIP во временный каталог
  2. Содержимое Apache24/ перемещается в {ApachePath}
  3. В httpd.conf патчится ServerRoot:
Define SRVROOT "C:/path/to/apache24"
ServerRoot "${SRVROOT}"

Путь SRVROOT — абсолютный, с forward slashes.

Запуск

httpd.exe                  # foreground (для отладки)
httpd.exe -k start         # фоновый запуск (не работает без установки сервиса)

Portable Apache запускается напрямую через Start-Process httpd.exe без установки Windows-сервиса.

Остановка

httpd.exe -k stop           # graceful shutdown (требует сервис)
Stop-Process -Name httpd    # принудительная остановка (portable)

Перезагрузка

httpd.exe -k restart        # graceful restart (требует сервис)

Для portable варианта: остановка + запуск.