Публикация 1С:Предприятия через IIS — от ролей Windows до первого входа

· 9 мин

Содержание

Чтобы установить веб-сервер 1С на IIS, нужно три вещи: включить в Windows роль IIS с расширениями ISAPI, поставить из дистрибутива платформы компонент «Модули расширения веб-сервера» и опубликовать базу из Конфигуратора, запущенного от имени администратора. Дальше остаётся согласовать разрядность модуля и пула приложений и выдать права на каталог базы.

Типичная ситуация: бухгалтер уходит на удалёнку, а RDP для неё заводить не хотят. Администратор публикует базу на IIS — и сотрудник работает через браузер или тонкий клиент по адресу вида http://server/buh. Инструкция ниже рассчитана на платформу 8.3 и Windows Server 2016 и новее, на Windows 10/11 шаги те же.

1. Подготовка Windows: какие компоненты IIS включить

IIS по умолчанию не установлен. Модуль 1С работает как ISAPI-расширение, поэтому без двух компонентов публикация не заработает, даже если сам сайт открывается.

На Windows Server — через Диспетчер серверов → Управление → Добавить роли и компоненты → Веб-сервер (IIS). В разделе служб ролей отметьте:

  • ✅ Разработка приложений → Расширения ISAPI
  • ✅ Разработка приложений → Фильтры ISAPI
  • ✅ Средства управления → Консоль управления IIS
  • ✅ Безопасность → Проверка подлинности Windows — только если планируете вход по учётной записи Windows

То же самое быстрее сделать из PowerShell с правами администратора:

Install-WindowsFeature Web-Server, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Mgmt-Console
# по желанию, для входа по доменной учётке:
Install-WindowsFeature Web-Windows-Auth

На Windows 10/11 — Панель управления → Программы → Включение или отключение компонентов Windows → Службы IIS. Внутри разверните Службы Интернета → Компоненты разработки приложений и включите «Расширения ISAPI» и «Фильтры ISAPI».

ASP.NET и CGI для 1С не нужны. Модуль расширения — нативная библиотека, .NET он не использует.

После установки откройте в браузере на сервере http://localhost. Должна появиться стартовая страница IIS. Если её нет — дальше идти рано.

2. Установка модулей расширения веб-сервера 1С

Модуль, через который IIS разговаривает с 1С, — это файл wsisapi.dll в каталоге bin платформы. Он ставится вместе с платформой, но только если отметить нужный компонент.

  1. Запустите setup.exe из дистрибутива платформы (технологической платформы или сервера — компонент есть в обоих).
  2. На шаге выбора компонентов включите «Модули расширения веб-сервера».
  3. Если на этом же компьютере будет работать Конфигуратор для публикации, оставьте отмеченным и «1С:Предприятие» (толстый клиент и Конфигуратор).
  4. Завершите установку.

Главное решение на этом шаге — разрядность. От неё зависит настройка пула в разделе 4.

Что установленоГде лежит модуль«Разрешить 32-разрядные приложения» в пуле
64-разрядная платформаC:\Program Files\1cv8\<версия>\bin\wsisapi.dllFalse
32-разрядная платформаC:\Program Files (x86)\1cv8\<версия>\bin\wsisapi.dllTrue

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

3. Публикация базы 1С на IIS

Через Конфигуратор

  1. Запустите 1С от имени администратора — правой кнопкой по ярлыку. Без этого Конфигуратор не сможет записать файлы в C:\inetpub\wwwroot и изменить настройки IIS.
  2. Откройте нужную базу в режиме Конфигуратора.
  3. Выберите Администрирование → Публикация на веб-сервере.
  4. Заполните поля:
    • Имя — латиницей, без пробелов, например buh. Это часть адреса: http://server/buh.
    • Веб-сервер — Internet Information Services.
    • Каталог — по умолчанию C:\inetpub\wwwroot\buh, менять не обязательно.
  5. Оставьте отмеченным «Публиковать тонкий клиент и веб-клиент». OData, веб-сервисы и HTTP-сервисы включайте, только если они реально нужны интеграциям.
  6. Нажмите «Опубликовать». На вопрос о перезапуске веб-сервера ответьте согласием.

Перезапуск IIS обрывает все текущие сеансы, открытые через этот веб-сервер. Если на нём уже работают люди с другими базами, публикуйте вне рабочего времени.

Без Конфигуратора: утилита webinst

На сервере, где нет клиента 1С или нужно публиковать много баз скриптом, используйте webinst.exe из того же каталога bin:

cd "C:\Program Files\1cv8\8.3.25.1374\bin"
webinst -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"

Для файловой базы строка подключения выглядит так: -connstr "File=D:\Bases\buh;". Номер версии в пути подставьте свой. Снять публикацию — тот же вызов с ключом -delete вместо -publish. Полный список ключей выводит webinst без параметров.

Что появляется в каталоге публикации

В папке публикации создаются два файла:

  • 📄 default.vrd — описание публикации: адрес и строка подключения к базе;
  • 📄 web.config — привязка всех запросов к wsisapi.dll.

Пример 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>

В web.config найдите строку scriptProcessor — там прописан полный путь к wsisapi.dll конкретной версии. Это пригодится при обновлении платформы (см. частые вопросы).

4. Пул приложений IIS: разрядность, .NET и учётная запись

Публикация из Конфигуратора кладёт приложение в пул DefaultAppPool. Для одной базы этого хватает. Если баз несколько или на сервере стоят разные версии платформы, заведите отдельный пул.

  1. Откройте Диспетчер служб IIS (команда inetmgr).
  2. В разделе «Пулы приложений» создайте пул, например 1C_buh.
  3. Версия среды CLR .NET — «Без управляемого кода». Модулю 1С .NET не нужен, а лишний загруженный CLR только тратит память.
  4. Режим управляемого конвейера — «Встроенный».
  5. Откройте «Дополнительные параметры» пула и выставьте «Разрешить 32-разрядные приложения» по таблице из раздела 2.
  6. Привяжите публикацию к пулу: в дереве сайтов выберите buh → «Основные настройки» → «Пул приложений».

Удостоверение пула. По умолчанию это ApplicationPoolIdentity — виртуальная учётная запись, входящая в группу IIS_IUSRS. Для файловой базы на локальном диске этого достаточно. Для файловой базы в сетевой папке задайте пулу доменного пользователя с правами на эту папку: виртуальная учётка по сети ходит от имени компьютера, и настраивать права так неудобно.

Два приложения с модулями разных версий платформы в одном пуле не уживутся: процесс w3wp.exe загружает одну wsisapi.dll. Разносите их по разным пулам.

5. Права доступа и аутентификация пользователей

Здесь ломается больше всего публикаций. Процесс IIS работает от имени пула, и ему нужен доступ к нескольким местам на диске.

ОбъектКому датьПрава
Каталог публикации C:\inetpub\wwwroot\buhIIS_IUSRSЧтение и выполнение
Каталог платформы ...\1cv8\<версия>\binIIS_IUSRSЧтение и выполнение
Каталог файловой базы (где лежит 1Cv8.1CD)IIS_IUSRS или учётка пулаИзменение
Каталог программных лицензий C:\ProgramData\1C\licensesIIS_IUSRSЧтение

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

Как пользователь входит в 1С

Вход по логину и паролю 1С. В IIS для приложения оставьте включённой только «Анонимную проверку подлинности». Пользователь видит обычное окно входа 1С. Это самый простой вариант для внешних сотрудников.

Вход по учётной записи Windows. Нужен компонент «Проверка подлинности Windows» из раздела 1.

  1. В IIS для приложения buh откройте «Проверка подлинности».
  2. Включите «Проверку подлинности Windows», анонимную отключите.
  3. В 1С в карточке пользователя (Администрирование → Настройки пользователей и прав → Пользователи) отметьте вход по аутентификации операционной системы и укажите учётку в формате \\DOMAIN\ivanov.

При публикации наружу без VPN не оставляйте пользователей 1С без пароля. Анонимный доступ в IIS плюс пустой пароль в базе — это открытая бухгалтерия для любого, кто узнал адрес.

6. Порты, HTTPS и проверка подключения

По умолчанию сайт IIS слушает порт 80. Если он занят другим приложением или нужен нестандартный, поменяйте привязку: Сайты → Default Web Site → Привязки → измените порт, например на 8080. Адрес станет http://server:8080/buh.

Не забудьте открыть порт в брандмауэре Windows:

New-NetFirewallRule -DisplayName "IIS 1C" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow

Для доступа из интернета нужен HTTPS. Пароли 1С по HTTP идут открытым текстом.

  1. Получите сертификат: коммерческий или бесплатный (например, через клиент ACME для Windows).
  2. В «Привязках» добавьте тип https, порт 443 и выберите сертификат.
  3. Пробросьте на маршрутизаторе только 443, а 80 наружу не открывайте.

Если веб-сервер и кластер 1С стоят на разных машинах, между ними тоже должны быть открыты порты: 1540 (агент), 1541 (менеджер кластера) и диапазон рабочих процессов, который задаётся в свойствах рабочего сервера (по умолчанию 1560–1591).

Как проверить, что всё работает:

  • 🌐 Откройте http://server/buh в браузере — должно появиться окно входа веб-клиента.
  • 🖥 В тонком клиенте добавьте базу: нажмите «Добавить», выберите добавление существующей базы, тип расположения «На веб-сервере» и укажите тот же адрес.
  • 📱 Проверьте с другого компьютера и, если планируется, снаружи сети.
Перед тем как отдать адрес пользователям
Выполнено: 0 / 6

7. Ошибки веб-сервера 1С на IIS и где смотреть логи

Ошибки IIS приходят с подкодом — по нему причину видно сразу. Подкод показывается на странице ошибки, если открыть адрес прямо на сервере: для локальных запросов IIS выводит подробности.

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

Где смотреть подробности:

  • 📂 Журналы IIS — C:\inetpub\logs\LogFiles\W3SVC1. Там видны код ответа и подкод по каждому запросу.
  • 🔍 «Трассировка неудачных запросов» в диспетчере IIS — включается для кодов 400–599 и показывает, на каком модуле запрос упал.
  • 🪟 Журнал событий Windows, раздел «Приложение» — туда пишут падения w3wp.exe и ошибки загрузки модуля.
  • 🧾 Технологический журнал 1С через файл logcfg.xml — когда IIS отдаёт 200, а 1С внутри выдаёт ошибку.

Перезапуск пула или iisreset оборвёт сеансы всех, кто работает через этот веб-сервер. Сначала предупредите пользователей или делайте это вечером.

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

После обновления платформы публикация перестала работать. Почему?
В web.config прописан путь к wsisapi.dll старой версии. Опубликуйте базу заново из Конфигуратора новой версии или исправьте путь в строке scriptProcessor и перезапустите пул.
Можно ли опубликовать несколько баз на одном IIS?
Да. Каждая база — отдельное приложение со своим именем: /buh, /zup, /ut. Если базы работают на разных версиях платформы, разнесите их по разным пулам приложений.
Что выбрать для 1С — IIS или Apache?
На Windows IIS удобнее: ставится штатно и публикуется из Конфигуратора в пару кликов. Apache выбирают на Linux или когда он уже обслуживает другие сайты. Функционально для пользователя разницы нет.
Нужна ли отдельная лицензия на веб-сервер?
Отдельной лицензии на сам IIS-модуль нет. Каждое подключение через веб-клиент или тонкий клиент по HTTP занимает клиентскую лицензию так же, как обычный вход в базу.
Почему через веб-клиент 1С медленнее, чем через тонкий клиент?
Веб-клиент выполняет клиентский код в браузере и сильнее зависит от его производительности. Для ежедневной работы через публикацию лучше тонкий клиент в режиме «На веб-сервере»: он работает по тому же HTTP, но быстрее.