ADG Оставить заявку
Блог Интеграции 4 мин чтения

1С 8.2 через IIS: публикуем базу для тонкого клиента

Переводим бухгалтерию клиента с файлового режима 1С 8.2 на тонкий клиент через IIS. Публикация базы, настройка прав в Active Directory и первые грабли.

Контекст момента

1С:Предприятие 8.2 с тонким клиентом и веб-клиентом - массовый переход предприятий с файлового режима на клиент-сервер в 2011-2012

Звонок пришёл от бухгалтера, которая привыкла работать из дома по пятницам, а с переходом на клиент-серверный вариант 1С 8.2 это неожиданно сломалось. Раньше база лежала на шаре, она подключалась по VPN, открывала папку - и работала. Теперь на сервере стоит SQL Server, база клиент-серверная, VPN есть, а 1С через него не пробрасывается без пляски с бубном. IT-директор клиента слышал про тонкий клиент и веб-клиент - мол, можно через браузер. Нас попросили разобраться.

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

Как это устроено

1С 8.2 умеет публиковать информационную базу как веб-приложение прямо из конфигуратора. На выходе - виртуальный каталог для IIS или Apache с набором файлов, через которые клиент общается с сервером 1С:Предприятия по HTTP. Сервер 1С при этом остаётся отдельным сервисом и работает с СУБД напрямую - HTTP-слой только принимает запросы и пересылает их внутрь.

Схема получилась такой: тонкий клиент на ноутбуке бухгалтера -> HTTPS через IIS на сервере Windows -> сервер 1С:Предприятия -> SQL Server. Всё на одном сервере, что упрощает жизнь, пока нагрузка невысокая.

Публикация через конфигуратор

Запускаем конфигуратор с правами администратора, открываем базу, идём в «Администрирование - Публикация на веб-сервере». Там задаём имя виртуального каталога (назвали buh), выбираем IIS, указываем путь - и жмём «Опубликовать». Конфигуратор сам создаёт виртуальный каталог в IIS и кладёт туда default.vrd с описанием подключения к базе.

После этого в браузере по адресу http://сервер/buh/ должен открываться веб-клиент. У нас первый раз не открылся - в IIS не был включён модуль isapi_wsgi, а точнее, не хватало компонента «CGI» в роли веб-сервера. Добавили через «Диспетчер серверов» - «Роли» - «Веб-сервер (IIS)» - «Добавить службы роли». После этого заработало.

На HTTPS перешли сразу: подняли самоподписанный сертификат на IIS, в default.vrd прописали allowHiddenIPConnections=false. Для внутреннего использования самоподписанный сертификат терпим, хотя бухгалтеру пришлось один раз нажать «Продолжить» в браузере и добавить исключение. Для внешнего доступа - нужен нормальный сертификат, но это отдельная история.

Права в Active Directory

Здесь ожидаемо началось самое интересное. Сервер 1С запущен под служебной учётной записью srv-1c, опубликованный пул приложений в IIS - тоже под ней. Пользователи базы - обычные доменные учётки из Active Directory. При открытии тонкого клиента 1С спрашивает логин и пароль - это логин пользователя в самой базе 1С, не доменный. Но аутентификация на уровне IIS нам тоже нужна: мы закрыли виртуальный каталог от анонимного доступа и включили Windows-аутентификацию.

Получился двойной вход: сначала IIS проверяет, что ты доменный пользователь из группы 1C_Users в AD, потом 1С спрашивает имя пользователя базы. Немного избыточно, зато сервис не торчит открытым для всех. Настройка группы в AD - стандартная: создали группу, добавили нужных пользователей, в IIS на виртуальный каталог buh - «Ограничения авторизации» - «Разрешить доступ» - «Указанным пользователям и группам» - добавили DOMAIN\1C_Users.

Один нюанс: служебная учётка srv-1c должна иметь право «Log on as a service» и доступ к папке с временными файлами 1С - по умолчанию это C:\Users\srv-1c\AppData\Local\1C. Если пул приложений IIS тоже крутится под ней, с правами путаться не придётся. Если под другой - добавляешь её в ACL папки вручную.

Что получили

Тонкий клиент на ноутбуке бухгалтера поднялся за десять минут - скачали установщик тонкого клиента с сервера, запустили, указали адрес публикации https://сервер/buh/. Работает через обычный браузер VPN-туннеля провайдера, никакого дополнительного VPN не нужно - HTTPS сам по себе достаточно безопасен для такого трафика.

Полный клиент 1С по-прежнему стоит у администратора базы для конфигуратора. Все остальные - на тонком. Нагрузка на сервер при пяти одновременных пользователях визуально не изменилась.

Пара вещей, которые мы ещё не трогали: производительность под нагрузкой (клиент небольшой, вряд ли это станет узким местом), и публикация нескольких баз - там просто несколько виртуальных каталогов, ничего принципиально нового. Если понадобится, добавим.

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

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.