Публикация базы 1С не открывается в браузере: диагностика от кластера до логов IIS

· 10 мин

Содержание

Проверить публикацию 1С на сервере проще всего с конца цепочки: откройте в браузере адрес http://<веб-сервер>/<имя_публикации>/. Если загрузился веб-клиент и спросил пользователя — публикация работает. Если нет, код ответа подскажет, где обрыв: 404 — у веб-сервера нет нужного каталога или обработчика, 500 — не загрузился модуль расширения 1С, текст ошибки 1С на странице — веб-сервер в порядке, а проблема на стороне кластера или базы.

Цепочка всегда одна: браузер → IIS или Apache → модуль веб-расширения 1С → файл default.vrd → сервер 1С или каталог файловой базы. Диагностика идёт по звеньям, и на каждом есть своя быстрая проверка. Ниже порядок, которым пользуются администраторы, когда публикация «вроде сделана, но не открывается».

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

Публикация — это не одна галочка, а четыре вещи сразу. Пока не убедитесь, что все они на месте, искать ошибку дальше бессмысленно.

  • 📁 Каталог публикации с файлом default.vrd. Для IIS по умолчанию это папка внутри C:\inetpub\wwwroot\, например C:\inetpub\wwwroot\buh\.
  • 🧩 Модуль веб-расширения из каталога платформы: wsisapi.dll для IIS, wsap24.dll для Apache 2.4 на Windows, wsap24.so на Linux.
  • 🔗 Обработчик в настройках веб-сервера, который направляет запросы в этот модуль.
  • 🗄️ Строка подключения к базе внутри default.vrd.

Откройте 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="/buh"
       ib="Srvr=&quot;srv1c&quot;;Ref=&quot;buh&quot;;">
</point>

Сверьте три значения:

  1. base совпадает с именем виртуального каталога в адресе (/buh → http://server/buh/).
  2. Srvr — имя или адрес сервера 1С, которое резолвится с веб-сервера, а не с вашего ноутбука.
  3. Ref — имя базы ровно так, как оно зарегистрировано в кластере. Регистр и опечатки здесь частая причина отказа.

Для файловой базы вместо Srvr и Ref будет File=&quot;D:\Bases\Buh&quot;;. Путь должен существовать на самом веб-сервере.

Если публикацию делали через Конфигуратор (Администрирование → Публикация на веб-сервере), запускать его нужно от имени администратора Windows. Без прав мастер может создать каталог, но не прописать обработчик в IIS — снаружи это выглядит как «публикация есть, а адрес отдаёт 404».

Проверка базы и сеансов в консоли кластера

Для клиент-серверной базы откройте консоль администрирования серверов 1С и убедитесь в трёх вещах.

База зарегистрирована. Разверните Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер> → Информационные базы. Имя в списке должно совпадать с Ref из default.vrd.

Начало сеансов не заблокировано. В свойствах информационной базы проверьте флажок блокировки начала сеансов. Если его включили на время обновления и забыли снять, веб-клиент получит отказ так же, как толстый клиент.

Подключение действительно доходит. Откройте базу из браузера и сразу обновите в консоли список Сеансы. В колонке «Приложение» должен появиться сеанс веб-клиента. Для веб-сервисов и HTTP-сервисов там будут отдельные типы приложений.

Появился сеанс — значит, веб-сервер, модуль и строка подключения в порядке. Нет сеанса, а в браузере ошибка 1С — проблема между веб-сервером и кластером.

То же самое можно проверить без консоли, утилитой rac (нужен запущенный сервис ras):

rac cluster list
rac infobase summary list --cluster=<uuid_кластера>
rac session list --cluster=<uuid_кластера>

Первая команда выдаёт идентификатор кластера, вторая — список баз, третья — активные сеансы. Если какой-то параметр не принимается, смотрите rac help для своей версии платформы.

Связь веб-сервера с сервером 1С

Когда IIS и сервер 1С стоят на разных машинах, клиентом для кластера выступает модуль расширения на веб-сервере. Ему нужны те же сетевые пути, что и обычному клиенту:

ПортКомуЧто даёт
1540Агент сервераПервичное подключение
1541Менеджер кластераВыдача рабочего процесса
1560–1591Рабочие процессыОбмен данными сеанса (диапазон задаётся в свойствах рабочего сервера)

Проверка с веб-сервера в PowerShell:

Test-NetConnection srv1c -Port 1540
Test-NetConnection srv1c -Port 1541

Если порт закрыт, ошибка в браузере будет про то, что сервер 1С:Предприятия не обнаружен или соединение не установлено.

Версия платформы на веб-сервере должна совпадать с версией сервера 1С до последней цифры. Модуль wsisapi.dll берётся из каталога установленной платформы, и при несовпадении номера сборки подключение отклоняется с ошибкой о несоответствии версий клиента и сервера. После обновления кластера переопубликуйте базу из новой версии.

Настройки IIS, которые ломают публикацию чаще всего

Откройте Диспетчер служб IIS и пройдите по пунктам ниже. Каждый из них по отдельности способен положить публикацию.

Компоненты роли веб-сервера

Модуль 1С работает как ISAPI-расширение. Если компоненты не установлены, обработчик просто не на что повесить. Проверка в PowerShell на Windows Server:

Get-WindowsFeature Web-ISAPI-Ext, Web-ISAPI-Filter

В колонке Install State должно стоять Installed. Если нет — добавьте их через мастер ролей или Install-WindowsFeature.

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

Выберите виртуальный каталог публикации → Сопоставления обработчиков. Там должна быть запись для пути *, которая ссылается на wsisapi.dll из каталога той же версии платформы, например C:\Program Files\1cv8\8.3.25.1374\bin\wsisapi.dll.

Типичная находка: после обновления платформу старой сборки удалили, а обработчик всё ещё смотрит на её папку. IIS не находит файл и отдаёт 500.

Ограничения ISAPI и CGI

На уровне сервера (не сайта) откройте Ограничения ISAPI и CGI. Путь к wsisapi.dll должен быть в списке со статусом «Разрешено». Если записи нет или она запрещена, IIS отвечает ошибкой 404.2 — запрос до 1С не доходит вовсе.

Пул приложений и разрядность

Это самая коварная настройка. В Пулы приложений → <пул публикации> → Дополнительные параметры найдите Разрешены 32-разрядные приложения (Enable 32-Bit Applications):

Платформа на веб-сервереЗначение параметра
64-разрядная (C:\Program Files\1cv8\)False
32-разрядная (C:\Program Files (x86)\1cv8\)True

При несовпадении в журнале IIS будет 500 с кодом Win32 193 — «не является приложением Win32».

Перезапуск пула или iisreset обрывает все текущие сеансы веб-клиента и запросы к веб-сервисам. Делайте это в нерабочее время или предупредите пользователей.

Права доступа на каталоги и безопасность

Ошибки прав выглядят по-разному: 401, 500 или ошибка 1С «недостаточно прав». Проверяйте по слоям.

Права учётной записи IIS

Рабочий процесс IIS работает под удостоверением пула. По умолчанию это IIS AppPool\<имя пула>, а анонимный доступ идёт через IUSR. Нужны:

  • 📄 Чтение каталога публикации (с default.vrd) — для IIS_IUSRS и IUSR.
  • ⚙️ Чтение и выполнение каталога bin платформы — оттуда грузится wsisapi.dll и библиотеки рядом с ним.
  • 🗄️ Изменение каталога файловой базы — только для файлового варианта. Без него база открывается, но падает на первой записи или сразу на блокировке.

Быстро посмотреть фактические права:

icacls "C:\inetpub\wwwroot\buh"
icacls "D:\Bases\Buh"

Аутентификация на уровне IIS

В разделе Проверка подлинности для каталога публикации обычно включена «Анонимная проверка подлинности»: логин и пароль спрашивает уже сама 1С. Если там стоит только «Проверка подлинности Windows», браузер покажет окно Windows-входа или 401 ещё до формы 1С.

Включайте Windows-аутентификацию в IIS, только если при публикации отмечали вход по учётной записи ОС и у пользователей 1С настроена аутентификация операционной системы.

Права внутри 1С

Если до формы входа дошли, а дальше «нет прав на запуск веб-клиента» или похожее сообщение, смотрите роли пользователя в базе. Для запуска нужен соответствующий режим в ролях, а для HTTP- и веб-сервисов — права на вызов этих сервисов. Пользователь, под которым ходит внешняя система, часто заведён с урезанным профилем.

Какие расширения опубликованы и как их проверить

В мастере публикации отдельными флажками включаются: веб-клиент, тонкий клиент по HTTP, стандартный интерфейс OData, веб-сервисы и HTTP-сервисы. Каждому соответствует свой адрес и своя проверка.

Что опубликованоАдрес для проверкиОжидаемый ответ
Веб-клиентhttp://server/buh/Форма входа 1С
ODatahttp://server/buh/odata/standard.odata/XML со списком сущностей (после ввода логина)
HTTP-сервисhttp://server/buh/hs/<корневой URL>/<шаблон>Ответ обработчика сервиса
Веб-сервис (SOAP)http://server/buh/ws/<имя>?wsdlОписание WSDL

Пустой или почти пустой ответ OData при правильных логине и пароле — не ошибка публикации. Это значит, что в базе не задан состав стандартного интерфейса OData. Его задают отдельно: программно методом УстановитьСоставСтандартногоИнтерфейсаOData() или обработкой настройки OData, которая есть в типовых конфигурациях на БСП.

Если HTTP-сервис отдаёт 404, а веб-клиент открывается, проверьте в default.vrd, что публикация HTTP-сервисов включена и корневой URL сервиса совпадает с адресом. После правки default.vrd пул нужно перезапустить.

Проверка из браузера и из командной строки

Браузер удобен для веб-клиента, но кешируют страницы и запоминают пароли. Для чистой проверки используйте curl прямо на веб-сервере:

curl -I http://localhost/buh/
curl -u Admin:password http://localhost/buh/odata/standard.odata/
curl http://localhost/buh/ws/Exchange?wsdl

Ключ -I показывает только заголовки, по ним сразу видно код ответа.

Логика простая:

  1. С самого веб-сервера через localhost работает, снаружи нет — дело в брандмауэре, привязках сайта (Привязки… в IIS), прокси или DNS.
  2. Не работает и на localhost — проблема в IIS, модуле или кластере.
  3. Работает по HTTP, не работает по HTTPS — смотрите привязку сертификата к порту 443 и то, что сертификат выдан на то имя, по которому заходят.

Для веб-клиента проверьте и поддерживаемый браузер: актуальные Chrome, Edge, Firefox, Safari. Устаревший браузер даёт пустую страницу без внятной ошибки.

Диагностика: выберите симптом

Журналы и логи: где искать причину сбоя

Если код ответа ничего не объяснил, идите в логи. Их четыре уровня, и смотреть стоит в таком порядке.

1. Журнал IIS. Лежит в C:\inetpub\logs\LogFiles\W3SVC<номер сайта>\. В каждой строке есть три поля, которые вместе дают точный диагноз: sc-status (код HTTP), sc-substatus (подкод, например 2 для 404.2) и sc-win32-status. Последнее — код системной ошибки: 5 — отказано в доступе, 126 — модуль не найден, 193 — не та разрядность.

2. Журнал событий Windows. eventvwr.msc → Журналы Windows → Приложение. Сюда пишут сбои рабочего процесса IIS (w3wp.exe) и события самой 1С. Падение w3wp.exe в момент открытия базы — повод проверить разрядность и версию модуля.

3. Журнал регистрации базы. Откройте базу в толстом или тонком клиенте и посмотрите журнал регистрации за время попытки входа. Если там есть событие «Сеанс. Аутентификация (ошибка)» с вашим пользователем, запрос дошёл до базы, и вопрос в логине или ролях.

4. Технологический журнал 1С. Включается файлом logcfg.xml в каталоге conf платформы на веб-сервере и на сервере 1С. Для диагностики подключения достаточно событий исключений и соединений:

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\1C_TechLog" history="2">
    <event><eq property="name" value="EXCP"/></event>
    <event><eq property="name" value="CONN"/></event>
    <property name="all"/>
  </log>
</config>

Параметр history задаёт, сколько часов хранить логи. Каталог должен быть доступен на запись учётной записи, под которой работает процесс: на веб-сервере — удостоверению пула IIS.

Технологический журнал быстро растёт. Включайте его на время проверки и удаляйте logcfg.xml после, иначе диск заполнится за несколько дней.

Для Apache вместо журнала IIS смотрите error.log в каталоге logs веб-сервера. Строка про невозможность загрузить wsap24.dll почти всегда означает другую разрядность Apache или неверный путь в директиве LoadModule.

Если публикация на Apache

Короткая сверка httpd.conf для Apache 2.4 на Windows:

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

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

После правки проверьте синтаксис командой httpd -t и только затем перезапускайте службу Apache. Директива LoadModule для модуля 1С должна быть одна: две строки от разных версий платформы — частая причина падения при старте.

Частые вопросы о проверке публикации

Нужно ли переопубликовывать базу после обновления платформы?
Да, если обработчик ссылается на каталог конкретной сборки. Публикация из новой версии перепишет путь к модулю. Альтернатива — вручную поправить путь в сопоставлении обработчиков и в ограничениях ISAPI.
Занимает ли веб-клиент лицензию?
Да. Сеанс веб-клиента расходует клиентскую лицензию так же, как тонкий клиент. Если лицензии кончились, браузер покажет ошибку получения лицензии — это не проблема публикации.
Можно ли опубликовать на одном IIS базы разных версий платформы?
Можно, если каждую публикацию держать в отдельном пуле приложений. В одном рабочем процессе две разные версии wsisapi.dll вместе не работают.
Почему публикация открывается у администратора, но не у пользователей?
Чаще всего разные пути входа: администратор заходит с самого сервера по localhost, а снаружи режет брандмауэр или DNS-имя ведёт на другой адрес. Второй вариант — у пользователей нет роли с правом запуска веб-клиента.
Как понять, что ошибку отдаёт 1С, а не IIS?
Ошибки IIS — это стандартные страницы с кодом HTTP и подкодом. Ошибка 1С приходит в оформлении веб-клиента или текстом с формулировкой платформы. Второе значит, что веб-сервер и модуль уже отработали.