Публикация 1С на веб-сервере: Apache, IIS и default.vrd

Дата: 05.10.2026 03:14:57
веб-сервер
публикация базы
Apache
IIS
default.vrd
веб-клиент
тонкий клиент
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

Публикация 1С на веб-сервере подключает информационную базу к Apache или IIS через модуль расширения платформы. После неё база открывается в браузере, тонкий клиент ходит по http(s) без открытых портов кластера, а сайт и CRM вызывают HTTP-сервисы, web-сервисы и OData. Ниже — установка, публикация из конфигуратора и через webinst, default.vrd, HTTPS через nginx, проверка кодом и ошибки 403, 404, 500.

Зачем публиковать базу и что это даёт

  • Веб-клиент — работа из браузера без установки платформы, в том числе с Linux и macOS.
  • Тонкий клиент 1С через веб-сервер — обычный клиент, подключённый по http(s): наружу открыт порт 80 или 443 вместо портов кластера, VPN не обязателен. Это и называют публикацией тонкого клиента.
  • Интеграции — HTTP-сервисы, web-сервисы и OData для сайта, мобильных приложений и внешних систем работают только через публикацию.
Что нужноЧто отметить при публикацииАдрес
Веб-клиент, тонкий и мобильный клиент«Публиковать доступ для клиентских приложений»http://srv/trade/
HTTP-сервисызакладка «HTTP-сервисы»http://srv/trade/hs/<корневой URL>/…
Web-сервисызакладка «Web-сервисы»http://srv/trade/ws/<имя файла публикации>?wsdl
OData«Публиковать стандартный интерфейс OData»http://srv/trade/odata/standard.odata/

Как выбрать способ интеграции — в статье «API 1С: как подключиться к базе извне».

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

Веб-сервер передаёт запросы к каталогу публикации модулю расширения 1С: для Apache 2.4 это wsap24.dll (на Linux — wsap24.so), для IIS — wsisapi.dll. Модуль читает default.vrd и подключается к базе по строке соединения из него:

  • клиент-серверная база — модуль работает как клиент кластера: его версия должна совпадать с сервером 1С до номера сборки, а веб-серверу нужен доступ к портам кластера (см. «Установка сервера 1С 8.3»);
  • файловая база — модуль сам открывает 1Cv8.1CD в процессе веб-сервера, и учётной записи веб-сервера нужны права на запись в каталог базы.

Разрядность платформы и веб-сервера должна совпадать. После обновления платформы публикацию обновляют: в настройках веб-сервера прописан путь к модулю конкретной версии.

Apache или IIS

Apache 2.4IIS
ОСWindows и Linuxтолько Windows
Настройкитекстовый httpd.conf, удобно для скриптовдиспетчер IIS и web.config
Флажок аутентификации ОС при публикациинетесть, у webinst — ключ -osauth
Версии платформыодна на экземпляр Apacheу каждой публикации свой обработчик
Коды ответа HTTP-сервисовтолько стандартныепроизвольные

На Linux выбора нет — Apache. На Windows Apache проще переносить и автоматизировать, а IIS берут, когда нужен вход по доменной учётной записи или разные версии платформы на одном сервере.

Пошаговая настройка IIS — компоненты, разрядность пула, права IIS_IUSRS и разбор ошибок 500, 404 и 405 — в отдельной статье «Публикация 1С на IIS».

Что установить и какие права выдать

Платформа — с компонентом «Модули расширения веб-сервера». Без него публикация остановится на сообщении «Не установлены модули расширения веб-сервера…».

Apache 2.4 на Windows обычно берут 64-битной сборкой с Apache Lounge и регистрируют службой (httpd -k install), на Linux ставят пакет apache2 или httpd. При разной разрядности Apache и платформы конфигуратор откажет: «Невозможна публикация… при различной разрядности платформы…».

IIS — в компонентах Windows включите «Расширения ISAPI» и «Фильтры ISAPI». Публикация создаёт приложение в Default Web Site, обработчик «1C Web-service Extension» с wsisapi.dll и разрешение в «Ограничениях ISAPI и CGI». Сам %SystemDrive%\Inetpub\wwwroot каталогом публикации быть не может.

Веб-серверУчётная записьПрава
Apache на Windowsслужба, «Локальная система»хватает для локального диска; для сетевой папки — доменная учётная запись
Apache на Linuxwww-data или apacheчтение каталога публикации, запись в каталог файловой базы
IISIUSR и группа IIS_IUSRSчтение каталога публикации и bin платформы, «Изменение» на каталог файловой базы

Для файловой базы в IIS конфигуратор сам проверит права анонимного пользователя. Предупреждение «У пользователя (группы) "…" отсутствуют права на доступ к каталогу информационной базы…» не пропускайте.

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

Конфигуратор публикует только на веб-сервер своего компьютера.

  1. Запустите конфигуратор от имени администратора (на Linux — от root) и откройте «Администрирование → Публикация на веб-сервере…».
  2. На закладке «Основные» задайте имя латиницей — оно войдёт в адрес. Выберите веб-сервер (настройки Apache 2.2 и 2.4 несовместимы) и каталог.
  3. Отметьте «Публиковать доступ для клиентских приложений» и при необходимости «Публиковать стандартный интерфейс OData» (состав интерфейса — в статье «OData 1С: настройка»).
  4. На закладках «Web-сервисы» и «HTTP-сервисы» отметьте сервисы или публикацию по умолчанию, в том числе для расширений.
  5. Нажмите «Опубликовать». После новой публикации на Apache конфигуратор предложит перезапустить веб-сервер — соглашайтесь.

Флажок «Публиковать дистрибутив тонкого клиента» позволит пользователю с другой версией клиента установить нужную прямо с публикации. Кнопки «Сохранить» и «Загрузить» пишут и читают vrd-файл. В httpd.conf появляются строки:

# httpd.conf, Apache 2.4 на Windows. Эти строки добавляют конфигуратор и webinst;
# на Linux модуль лежит в /opt/1cv8/x86_64/<версия>/wsap24.so
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.27.1786/bin/wsap24.dll"

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

# Проверка конфигурации и перезапуск службы (командная строка администратора):
#   httpd -t
#   httpd -k restart

Публикация через webinst: Linux и скрипты

Для Linux, удалённого сервера и скриптов есть утилита webinst из каталога платформы; запуск — от администратора или через sudo. Ключи по справке 8.3.27:

  • -publish (по умолчанию) или -delete; веб-сервер — -apache24, -apache22 или -iis;
  • -wsdir — имя публикации, -dir — каталог (при публикации обязателен), -connstr — строка соединения;
  • -confPath — путь к конфигурации Apache, -osauth — Windows-аутентификация в IIS;
  • -descriptor — готовый vrd: целиком заменяет default.vrd, а -wsdir и -connstr перекрывают его base и ib.
# Windows: командная строка от имени администратора, каталог платформы нужной версии
cd "C:\Program Files\1cv8\8.3.27.1786\bin"
webinst -publish -apache24 -wsdir trade -dir "C:\www\trade" -connstr "Srvr=srv01;Ref=trade;" -confPath "C:\Apache24\conf\httpd.conf"

# Та же база в IIS (сайт Default Web Site), вход по учётной записи Windows
webinst -publish -iis -wsdir trade -dir "C:\inetpub\trade" -connstr "Srvr=srv01;Ref=trade;" -osauth

# Linux (Debian, Ubuntu): файловая база, Apache 2.4 из пакета apache2
cd /opt/1cv8/x86_64/8.3.27.1786
sudo ./webinst -publish -apache24 -wsdir trade -dir /var/www/trade \
    -connstr "File=/srv/1c/trade;" -confPath /etc/apache2/apache2.conf
sudo chown -R www-data:www-data /srv/1c/trade     # файловой базе нужны права веб-сервера
sudo apachectl -t && sudo systemctl restart apache2

# Переопубликовать по готовому vrd: после обновления платформы или ручной правки default.vrd
sudo ./webinst -publish -apache24 -dir /var/www/trade \
    -descriptor /var/www/trade/default.vrd -confPath /etc/apache2/apache2.conf

# Удалить публикацию
sudo ./webinst -delete -apache24 -wsdir trade -confPath /etc/apache2/apache2.conf

Файл default.vrd: веб-клиент, OData, HTTP- и web-сервисы

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="/trade"
		ib="Srvr=&quot;srv01&quot;;Ref=&quot;trade&quot;;">
	<ws enable="true"
			pointEnableCommon="true"
			publishExtensionsByDefault="true"/>
	<httpServices publishByDefault="true"
			publishExtensionsByDefault="true">
		<service name="ОбменССайтом"
				rootUrl="site"
				enable="true"
				reuseSessions="autouse"
				sessionMaxAge="20"
				poolSize="10"
				poolTimeout="5"/>
	</httpServices>
	<standardOdata enable="true"
			reuseSessions="autouse"
			sessionMaxAge="20"
			poolSize="10"
			poolTimeout="5"/>
	<debug enable="true"
			protocol="http"
			url="http://srv01:1550"/>
</point>
ЭлементЧто задаёт
point: base, ibимя публикации в адресе и строку соединения File=… или Srvr=…;Ref=…
wsweb-сервисы: enable — публиковать ли их, pointEnableCommon — сервисы без явной настройки, publishExtensionsByDefault — из расширений
httpServicespublishByDefault — все HTTP-сервисы конфигурации, publishExtensionsByDefault — из расширений, service — настройки одного сервиса
standardOdataстандартный интерфейс OData
reuseSessions, sessionMaxAge, poolSize, poolTimeoutповторное использование сеансов: вызов берёт сеанс из пула, а не открывает новый
debugотладка клиентов, работающих через публикацию (см. «Отладка на сервере 1С»); на рабочей базе выключайте

После правки перезапустите Apache или пул приложений IIS. Имя и пароль 1С в строке ib (Usr, Pwd) лучше не хранить: файл прочитает любой, у кого есть доступ к каталогу.

Файловая база или сервер 1С за веб-сервером

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

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

HTTPS через обратный прокси nginx

Сертификат удобнее держать не в Apache (mod_ssl) или IIS, а на nginx перед ними: Let's Encrypt продлевается сам, наружу открыт только 443, а Apache слушает внутренний адрес (Listen 127.0.0.1:8080). Правила:

  • путь на прокси и на веб-сервере один и тот же (/trade), иначе сломаются адреса веб-клиента;
  • передавайте Host и X-Forwarded-Proto: по ним код 1С соберёт внешний адрес;
  • поднимите таймауты и размер запроса: умолчаний nginx (60 секунд и 1 МБ) не хватит длинному отчёту и загрузке файла.
# /etc/nginx/conf.d/1c.conf: HTTPS снаружи, Apache с публикацией /trade на 127.0.0.1:8080
server {
    listen 80;
    server_name 1c.example.ru;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name 1c.example.ru;

    ssl_certificate     /etc/letsencrypt/live/1c.example.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/1c.example.ru/privkey.pem;

    client_max_body_size 200m;                  # файлы из веб-клиента, большие POST в сервисы

    location /trade/ {
        proxy_pass http://127.0.0.1:8080;       # без URI: путь /trade/... уходит как есть
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect http://$host/ https://$host/;
        proxy_read_timeout 600s;                # длинные отчёты и обмены
        proxy_send_timeout 600s;
    }
}

Проверка: браузер, тонкий клиент и код 1С

  1. Браузер: по адресу http://srv/trade/ открывается веб-клиент с окном входа.
  2. Тонкий клиент по http: «Добавить» → «Добавление в список существующей информационной базы» → «На веб-сервере», в поле «Адрес информационной базы» — http://srv/trade. В списке баз это строка Connect=ws="http://srv/trade";, из командной строки — ключ /WS: 1cv8c.exe /WS "https://1c.example.ru/trade".
  3. Сервисы проверьте разом с сервера 1С: функция ниже обходит корень публикации, OData, HTTP-сервис и WSDL web-сервисов и расшифровывает коды ответа.
// Обработка или общий модуль с флагом «Сервер». Сервер 1С сам обращается к публикации
// и расшифровывает коды ответа. Пример вызова:
// Таблица = ПроверитьПубликацию("https://1c.example.ru/trade", "diag/whoami", ИмяПользователя, Пароль);
Функция ПроверитьПубликацию(Знач АдресПубликации, Знач ПутьHTTPСервиса = "",
	Знач Пользователь = "", Знач Пароль = "") Экспорт

	Адрес = РазобратьАдресПубликации(АдресПубликации);

	Результат = Новый ТаблицаЗначений;
	Результат.Колонки.Добавить("Назначение", Новый ОписаниеТипов("Строка"));
	Результат.Колонки.Добавить("Адрес", Новый ОписаниеТипов("Строка"));
	Результат.Колонки.Добавить("КодСостояния", Новый ОписаниеТипов("Число"));
	Результат.Колонки.Добавить("Вывод", Новый ОписаниеТипов("Строка"));

	ДобавитьТочку(Результат, "Веб-клиент и тонкий клиент", Адрес.Путь + "/");
	ДобавитьТочку(Результат, "Стандартный интерфейс OData", Адрес.Путь + "/odata/standard.odata/");
	Если ЗначениеЗаполнено(ПутьHTTPСервиса) Тогда
		ДобавитьТочку(Результат, "HTTP-сервис", Адрес.Путь + "/hs/" + ПутьHTTPСервиса);
	КонецЕсли;
	Для Каждого Сервис Из Метаданные.WebСервисы Цикл
		ДобавитьТочку(Результат, "Web-сервис " + Сервис.Имя,
			Адрес.Путь + "/ws/" + Сервис.ИмяФайлаПубликации + "?wsdl");
	КонецЦикла;

	// Сертификат сервера не проверяем: задача — найти, где ломается публикация.
	// Для рабочего обмена передайте Новый СертификатыУдостоверяющихЦентровОС()
	ЗащищенноеСоединение = ?(Адрес.HTTPS, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
	Соединение = Новый HTTPСоединение(Адрес.Хост, Адрес.Порт, Пользователь, Пароль, , 30, ЗащищенноеСоединение);

	Для Каждого Точка Из Результат Цикл
		Попытка
			Ответ = Соединение.Получить(Новый HTTPЗапрос(Точка.Адрес));
			Точка.КодСостояния = Ответ.КодСостояния;
			Точка.Вывод = РасшифровкаКодаОтвета(Ответ.КодСостояния);
		Исключение
			// DNS, закрытый порт, TLS: запрос не дошёл даже до веб-сервера
			Точка.Вывод = "Нет ответа: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
		КонецПопытки;
	КонецЦикла;

	Возврат Результат;

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

Процедура ДобавитьТочку(Таблица, Назначение, Адрес)

	Точка = Таблица.Добавить();
	Точка.Назначение = Назначение;
	Точка.Адрес = Адрес;

КонецПроцедуры

// "https://1c.example.ru:8443/trade/" -> HTTPS = Истина, Хост, Порт = 8443, Путь = "/trade"
Функция РазобратьАдресПубликации(Знач АдресПубликации)

	Результат = Новый Структура("HTTPS, Хост, Порт, Путь", Ложь, "", 0, "");
	Адрес = СокрЛП(АдресПубликации);

	Если СтрНачинаетсяС(НРег(Адрес), "https://") Тогда
		Результат.HTTPS = Истина;
		Адрес = Сред(Адрес, 9);
	ИначеЕсли СтрНачинаетсяС(НРег(Адрес), "http://") Тогда
		Адрес = Сред(Адрес, 8);
	КонецЕсли;

	Позиция = СтрНайти(Адрес, "/");
	ХостИПорт = ?(Позиция = 0, Адрес, Лев(Адрес, Позиция - 1));
	Путь = ?(Позиция = 0, "", Сред(Адрес, Позиция));
	Пока СтрЗаканчиваетсяНа(Путь, "/") Цикл
		Путь = Лев(Путь, СтрДлина(Путь) - 1);
	КонецЦикла;
	Результат.Путь = Путь;

	Позиция = СтрНайти(ХостИПорт, ":");
	Если Позиция = 0 Тогда
		Результат.Хост = ХостИПорт;
		Результат.Порт = ?(Результат.HTTPS, 443, 80);
	Иначе
		Результат.Хост = Лев(ХостИПорт, Позиция - 1);
		Результат.Порт = Число(Сред(ХостИПорт, Позиция + 1));
	КонецЕсли;

	Возврат Результат;

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

// Подсказка по коду ответа: куда смотреть в первую очередь
Функция РасшифровкаКодаОтвета(КодСостояния)

	Если КодСостояния >= 200 И КодСостояния < 400 Тогда
		Возврат "Отвечает";
	ИначеЕсли КодСостояния = 401 Тогда
		Возврат "Публикация работает: 1С просит пользователя или пароль неверный";
	ИначеЕсли КодСостояния = 403 Тогда
		Возврат "Запрет веб-сервера: Require all granted, права на каталог публикации";
	ИначеЕсли КодСостояния = 404 Тогда
		Возврат "Не опубликовано: имя публикации, default.vrd, корневой URL или шаблон";
	ИначеЕсли КодСостояния = 405 Тогда
		Возврат "Адрес есть, но метод GET для него не описан";
	ИначеЕсли КодСостояния >= 500 Тогда
		Возврат "Ошибка модуля веб-сервера или кода 1С: текст в теле ответа";
	КонецЕсли;

	Возврат "Код " + Формат(КодСостояния, "ЧГ=0");

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

Каким адресом запрос дошёл до 1С, особенно за прокси, покажет диагностический метод HTTP-сервиса. Как создать сервис — в статье «HTTP-сервис 1С: создание с нуля».

// Модуль HTTP-сервиса «Диагностика»: корневой URL diag, шаблон /whoami,
// метод GET с обработчиком WhoAmIGET. Показывает, каким адресом запрос дошёл до 1С.
Функция WhoAmIGET(Запрос)

	Данные = Новый Структура;
	Данные.Вставить("baseUrl", Запрос.БазовыйURL);
	Данные.Вставить("relativeUrl", Запрос.ОтносительныйURL);
	Данные.Вставить("externalUrl", ВнешнийБазовыйURL(Запрос));
	Данные.Вставить("forwardedFor", ЗначениеЗаголовка(Запрос.Заголовки, "X-Forwarded-For"));
	Данные.Вставить("user", ИмяПользователя());
	Данные.Вставить("configuration", Метаданные.Имя + " " + Метаданные.Версия);
	Данные.Вставить("serverTime", XMLСтрока(ТекущаяДатаСеанса()));

	Запись = Новый ЗаписьJSON;
	Запись.УстановитьСтроку();
	ЗаписатьJSON(Запись, Данные);

	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
	Ответ.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
	Возврат Ответ;

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

// Адрес сервиса глазами клиента. За nginx с HTTPS БазовыйURL начинается с http://:
// до Apache запрос шёл по http, настоящую схему передаёт заголовок X-Forwarded-Proto.
Функция ВнешнийБазовыйURL(Запрос)

	Адрес = Запрос.БазовыйURL;
	Схема = НРег(ЗначениеЗаголовка(Запрос.Заголовки, "X-Forwarded-Proto"));
	Если Схема = "https" И СтрНачинаетсяС(НРег(Адрес), "http://") Тогда
		Адрес = "https://" + Сред(Адрес, 8);
	КонецЕсли;
	Возврат Адрес;

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

// Имена HTTP-заголовков не зависят от регистра, а ключи соответствия — зависят
Функция ЗначениеЗаголовка(Заголовки, Имя)

	Для Каждого Заголовок Из Заголовки Цикл
		Если НРег(Заголовок.Ключ) = НРег(Имя) Тогда
			Возврат Заголовок.Значение;
		КонецЕсли;
	КонецЦикла;
	Возврат "";

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

Ссылки на объекты через публикацию

После публикации обычно просят ссылку на документ для письма или мессенджера, которая откроется в браузере. Её собирают из адреса базы и навигационной ссылки объекта через #:

// Модуль формы документа или справочника. Ссылка, по которой объект откроется
// в браузере или в тонком клиенте, подключённом через ту же публикацию.
&НаКлиенте
Процедура ПоказатьСсылкуДляБраузера(Ссылка)

	АдресПубликации = АдресПубликацииКлиента();
	Если ПустаяСтрока(АдресПубликации) Тогда
		ПоказатьПредупреждение(, "База открыта без веб-сервера: адрес публикации неизвестен");
		Возврат;
	КонецЕсли;

	Сообщить(ВнешняяСсылка(Ссылка, АдресПубликации));

КонецПроцедуры

// Адрес публикации, через которую работает текущий сеанс, или пустая строка.
// Без веб-сервера платформа вернёт e1c://filev/... (файловая база) или e1c://server/...
&НаКлиенте
Функция АдресПубликацииКлиента()

	Адрес = ПолучитьНавигационнуюСсылкуИнформационнойБазы();
	Если СтрНачинаетсяС(НРег(Адрес), "http://") Или СтрНачинаетсяС(НРег(Адрес), "https://") Тогда
		Возврат Адрес;
	КонецЕсли;
	Возврат "";

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

// Такую функцию удобно держать в общем модуле с флагами «Клиент» и «Сервер». В регламентном
// задании ПолучитьНавигационнуюСсылкуИнформационнойБазы() пустая, адрес передают параметром
// (в конфигурациях на БСП он хранится в константе АдресПубликацииИнформационнойБазыВИнтернете).
&НаКлиентеНаСервереБезКонтекста
Функция ВнешняяСсылка(Ссылка, Знач АдресПубликации)

	Если Не СтрЗаканчиваетсяНа(АдресПубликации, "/") Тогда
		АдресПубликации = АдресПубликации + "/";
	КонецЕсли;
	Возврат АдресПубликации + "#" + ПолучитьНавигационнуюСсылку(Ссылка);

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

В конфигурациях на БСП адрес хранят в настройках: в УТ 11.4 это панель «Общие настройки», группа «Публикация информационной базы», поле «Адрес в Интернете». Из кода его читает ОбщегоНазначения.АдресПубликацииИнформационнойБазыВИнтернете().

Разбор ключевых строк

  • Новый HTTPСоединение(Адрес.Хост, …) — хост без протокола, HTTPS включает ЗащищенноеСоединениеOpenSSL; без списка удостоверяющих центров сертификат сервера не проверяется.
  • 401 — обычно хороший знак: публикация отвечает и просит пользователя. 404 со страницей Apache или IIS — запрос до 1С не дошёл.
  • Сервис.ИмяФайлаПубликации — из него собирается адрес WSDL.
  • Запрос.БазовыйURL за nginx начинается с http://; внешний адрес восстанавливают по X-Forwarded-Proto, а имена заголовков сравнивают без учёта регистра.
  • ПолучитьНавигационнуюСсылкуИнформационнойБазы() даёт http(s)://… только через веб-сервер, при прямом подключении — e1c://…, в фоновых заданиях — пустую строку.

Типичные ошибки

  • Ошибка загрузки модуля веб-расширения, Apache не стартует. Запустите httpd -t. «Cannot load …/wsap24.dll into server: %1 не является приложением Win32» — разная разрядность Apache и модуля; «Не найден указанный модуль» — LoadModule ссылается на удалённую версию платформы. Переопубликуйте базу из конфигуратора нужной версии; на Linux сообщение с именем .so-библиотеки означает нехватку зависимостей.
  • «Веб-серверы не обнаружены!» — Apache не зарегистрирован службой или у IIS не хватает компонентов. Запасной путь — webinst с -confPath.
  • 403 Forbidden. В error.log Apache «AH01630: client denied by server configuration» — нет Require all granted или путь Directory не совпадает с Alias. «search permissions are missing» — у www-data нет прав на каталог (на RHEL проверьте и SELinux). В IIS не хватает прав IUSR или IIS_IUSRS.
  • 404 Not Found. Страница веб-сервера — неверное имя публикации (в Apache важен регистр) или Apache не перезапущен; в IIS код 404.2 — wsisapi.dll не разрешён в «Ограничениях ISAPI и CGI». Ответ 404 на /hs/… или /ws/… — сервис не опубликован, для расширения нет publishExtensionsByDefault, не совпал корневой URL или шаблон, не обновлена конфигурация базы данных.
  • 500 Internal Server Error. IIS с кодом 0x800700c1 — 32-битный wsisapi.dll в 64-битном пуле: поставьте 64-битную платформу или включите у пула «Разрешить 32-разрядные приложения». Если в ответе текст 1С: «Несоответствие версий клиента и сервера 1С:Предприятия» — модуль веб-сервера другой версии, чем кластер; «Информационная база не обнаружена!» — неверный Ref в ib. У HTTP-сервиса 500 — необработанное исключение в обработчике, смотрите журнал регистрации.

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

Можно ли обойтись без Apache и IIS?

Для разработки и тестов — да: автономный сервер ibsrv сам принимает HTTP-запросы. Для рабочей публикации с HTTPS и ограничением доступа привычнее веб-сервер.

Чем веб-клиент отличается от тонкого клиента через веб-сервер?

Веб-клиенту не нужна установка, но для файлов, внешних компонент и оборудования нужно расширение браузера. Тонкий клиент работает почти как при прямом подключении, но требует платформу версии сервера.

Как закрыть публикацию от посторонних?

Снаружи — только HTTPS. Пути интеграций (/trade/hs/, /trade/odata/) ограничьте по IP в nginx, для сервисов заведите пользователя 1С с минимальной ролью — см. настройку прав доступа в 1С.

Когда проще заказать

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

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.