Обновление опубликованной базы 1С без сбоев веб-доступа: IIS и Apache

· 9 мин

Содержание

Базу 1С, опубликованную на веб-сервере, обновляют не через браузер, а через Конфигуратор или пакетный запуск 1cv8.exe DESIGNER, подключаясь к самой информационной базе напрямую. Веб-сервер в этой процедуре нужно правильно «отпустить» перед обновлением и проверить после: снять веб-сеансы, а при смене платформы — переключить веб-расширение на новую версию.

Чаще всего проблемы возникают не с самим обновлением конфигурации, а с публикацией: старая версия модуля в IIS, занятый файл базы процессом Apache, кэш браузера у пользователей. Ниже порядок, который закрывает все эти точки.

Подготовка: что выяснить о базе и веб-сервере до обновления

Перед работой ответьте себе на пять вопросов. От ответов зависит, сколько займёт окно обслуживания и что придётся перезапускать.

  • 🗂️ Тип базы. Файловая (File="D:\Bases\buh") или клиент-серверная (Srvr="srv1c";Ref="buh"). Строка подключения лежит в файле default.vrd каталога публикации, атрибут ib.
  • 🌐 Веб-сервер. IIS или Apache 2.4, Windows или Linux. От этого зависит, что перезапускать: пул приложений или службу.
  • 🔢 Версия платформы. Посмотрите, из какого каталога bin загружается модуль расширения. Для клиент-серверной базы его версия обязана совпадать с версией сервера 1С.
  • 📦 Что обновляем. Только релиз конфигурации или ещё и платформу. Новый релиз типовой конфигурации может требовать платформу с номером не ниже указанного в описании обновления.
  • 🧩 Хранилище и расширения. Подключена ли база к хранилищу конфигурации, есть ли расширения .cfe и доработки на поддержке.

Сделайте резервную копию. Для клиент-серверной базы — средствами СУБД (бэкап MS SQL или PostgreSQL), для файловой — копией каталога с 1Cv8.1CD при остановленном веб-сервере или выгрузкой .dt из Конфигуратора.

Не начинайте обновление без проверенной резервной копии. Обновление конфигурации базы данных меняет структуру таблиц, и откатить его без бэкапа нельзя.

Согласуйте окно. Для бухгалтерии разумно вечер или выходной, не последние дни сдачи отчётности.

Как работает публикация и зачем нужно веб-расширение

Браузер пользователя обращается к веб-серверу, а тот передаёт запросы модулю веб-расширения 1С. Модуль, в свою очередь, работает с базой: открывает файл 1Cv8.1CD или соединяется с кластером серверов 1С.

Веб-серверМодуль расширенияГде прописан
IISwsisapi.dllсопоставление обработчиков сайта или приложения
Apache 2.4 (Windows)wsap24.dllhttpd.conf, директива LoadModule
Apache 2.4 (Linux)wsap24.soконфигурация Apache, директива LoadModule

Модуль лежит в каталоге bin конкретной версии платформы, например C:\Program Files\1cv8\8.3.xx.xxxx\bin\. Отсюда главное следствие: после обновления платформы публикация продолжает ссылаться на старый каталог, пока вы её не переделаете.

Типичный фрагмент httpd.conf после публикации выглядит так:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.xx.xxxx/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>

Публикуют базу двумя способами:

  1. Из Конфигуратора: Администрирование → Публикация на веб-сервере. Конфигуратор для этого запускают от имени администратора Windows, иначе он не сможет записать настройки IIS или httpd.conf.
  2. Утилитой webinst из каталога bin нужной версии платформы:
webinst -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"
webinst -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"

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

Пошаговое обновление базы 1С, опубликованной через IIS или Apache

Шаг 1. Заблокируйте начало новых сеансов

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

В типовых конфигурациях на БСП то же самое делает команда «Блокировка работы пользователей» в разделе Администрирование → Обслуживание.

Шаг 2. Завершите веб-сеансы

Пользователи браузера — такие же сеансы 1С, как и тонкий клиент. Блокировка не выгоняет тех, кто уже работает, поэтому их нужно завершить.

  • 🖥️ IIS: остановите пул приложений, в котором работает публикация (Диспетчер служб IIS → Пулы приложений → Остановить).
  • 🐧 Apache: остановите службу (net stop Apache2.4 в Windows, systemctl stop apache2 или httpd в Linux).

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

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

Шаг 3. Обновите конфигурацию

Откройте базу в Конфигураторе с кодом разрешения (параметр /UC). Дальше обычный порядок для типовой конфигурации на поддержке:

  1. Конфигурация → Поддержка → Обновить конфигурацию, укажите файл 1Cv8.cfu или .cf.
  2. Пройдите сравнение и объединение, если есть доработки.
  3. Конфигурация → Обновить конфигурацию базы данных (F7). Здесь меняется структура таблиц, и нужен монопольный доступ.
  4. Если релиз промежуточный и нужна цепочка — повторите для каждого релиза по порядку.

То же самое в пакетном режиме удобно ставить в планировщик:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /N"Администратор" /P"пароль" /UC"upd2026" /UpdateCfg "D:\upd\1Cv8.cfu" /UpdateDBCfg /DisableStartupDialogs /Out "D:\upd\log.txt"

Для файловой базы вместо /S"srv1c\buh" укажите /F"D:\Bases\buh". Лог в /Out проверяйте всегда: при ошибке пакетный запуск просто завершится.

Шаг 4. Выполните обработчики обновления

Запустите базу в режиме «1С:Предприятие» тонким клиентом под администратором. Типовые конфигурации при первом входе после обновления выполняют обработчики обновления данных. Дождитесь их окончания до того, как пустите пользователей.

Шаг 5. Верните доступ

Запустите пул IIS или службу Apache, снимите блокировку сеансов в консоли кластера. Откройте публикацию в браузере сами и проверьте, что в окне «О программе» показан новый номер релиза.

Перед тем как открыть доступ
Выполнено: 0 / 5

Если обновилась платформа: переключаем веб-расширение

Это главный подводный камень. Конфигурацию обновили, платформу на сервере тоже, а публикация продолжает загружать wsisapi.dll или wsap24.dll из старого каталога. Для клиент-серверной базы веб-клиент перестаёт подключаться из-за несовпадения версий.

Порядок такой:

  1. Установите на веб-сервер платформу новой версии с компонентом «Модули расширения веб-сервера». Разрядность должна совпадать с разрядностью веб-сервера.
  2. Переопубликуйте базу Конфигуратором новой версии (от имени администратора) или webinst из нового каталога bin. Каталог публикации и default.vrd можно оставить прежними.
  3. IIS: проверьте в сопоставлении обработчиков путь к wsisapi.dll и список «Ограничения ISAPI и CGI» на уровне сервера: новая библиотека должна быть разрешена. Если пул работает с 32-разрядной платформой, в его дополнительных параметрах включено «Разрешить 32-разрядные приложения»; для 64-разрядной — выключено.
  4. Apache: проверьте строку LoadModule в httpd.conf. Если опубликовано несколько баз, модуль загружается один раз на весь сервер, поэтому все они переедут на новую версию одновременно.
  5. Перезапустите пул или службу.

Не удаляйте старую версию платформы, пока не убедились, что все публикации переключены. Удалённый каталог при живой ссылке в IIS даёт ошибку 500 на всех базах сразу.

Хранилище конфигурации и веб-публикация

Если база разработки подключена к хранилищу, обновление типового релиза делают в ней, а не в рабочей базе:

  1. Захватите корень конфигурации в хранилище.
  2. Выполните обновление из поставки и объединение.
  3. Поместите изменения в хранилище.
  4. В рабочей базе получите изменения или загрузите собранный .cf, затем выполните «Обновить конфигурацию базы данных».

Рабочую базу, к которой ходят пользователи через браузер, лучше вообще не держать подключённой к хранилищу. Изменения в неё приходят файлом конфигурации в окно обслуживания, а не случайным «обновить из хранилища » в рабочее время.

Само хранилище тоже можно опубликовать на веб-сервере, чтобы разработчики подключались по HTTP, без доступа к сетевой папке или к серверу хранилища на порту 1542. В каталоге публикации хранилища создаётся файл с расширением .1ccr, а адрес подключения в Конфигураторе выглядит как http://сервер/имя_публикации/имя_файла.1ccr. При обновлении платформы эта публикация переключается так же, как и публикация базы: модуль расширения должен быть той же версии, что и сервер хранилища.

Производительность и кэширование после обновления

После обновления самое частое обращение пользователей: «интерфейс старый» или «форма не открывается». Причина обычно в кэше браузера, который держит скрипты прежней версии веб-клиента. Помогает обновление страницы с очисткой кэша (Ctrl+F5) или очистка данных сайта в браузере.

Параметры, которые стоит пересмотреть заодно:

ГдеЧто настроитьЗачем
Пул IISотключить «Время простоя» (по умолчанию 20 минут)пул не останавливается ночью, первый вход утром без задержки
Пул IISплановую переработку (по умолчанию 1740 минут) перенести на ночьчтобы перезапуск не обрывал сеансы днём
IISвключить сжатие динамического содержимогоменьше трафика для удалённых сотрудников
Apachemod_deflate, KeepAlive Onсжатие и повторное использование соединений
default.vrdreuseSessions, sessionMaxAge, poolSize у веб-сервисов и ODataпул сеансов для интеграций вместо нового сеанса на каждый запрос

Пример default.vrd клиент-серверной базы с включённым стандартным OData:

<?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;;">
    <ws pointEnableCommon="true"/>
    <standardOdata enable="true" reuseSessions="autouse" sessionMaxAge="20" poolSize="10"/>
</point>

Переопубликация из Конфигуратора может перезаписать ручные правки default.vrd. Сохраните копию файла до шага с переопубликацией и сверьте после.

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

Диагностика: где смотреть логи и что означают ошибки

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

  • 🌐 Журнал веб-сервера. IIS пишет в C:\inetpub\logs\LogFiles, там видны код ответа и подкод (500.0, 404.3 и т. п.). Apache — logs\error.log в своём каталоге.
  • 🪟 Журнал событий Windows, раздел «Приложение»: падения рабочего процесса w3wp.exe и ошибки загрузки модулей.
  • 📒 Журнал регистрации базы: Администрирование → Обслуживание → Журнал регистрации. Видно, кто и когда входил, ошибки обработчиков обновления.
  • 🔬 Технологический журнал: файл logcfg.xml в каталоге bin\conf платформы. Включайте его на время поиска проблемы с фильтром по событиям EXCP, иначе логи быстро займут диск.
Диагностика: выберите симптом

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

Можно ли обновить базу, не останавливая веб-сервер?
Для клиент-серверной базы можно, если завершить все сеансы через консоль кластера. Для файловой — нет: процесс веб-сервера держит файл базы, и монопольный доступ без остановки пула или службы не получить.
Нужно ли переопубликовывать базу после обновления релиза конфигурации?
Нет. Публикация зависит от версии платформы, а не конфигурации. Переопубликовывать нужно только после смены платформы.
Можно ли держать на одном Apache базы на разных версиях платформы?
На одном экземпляре Apache модуль wsap24 загружается один раз, поэтому все публикации работают на одной версии. Для разных версий нужны отдельные экземпляры веб-сервера на разных портах.
Почему после обновления не работают HTTP-сервисы, хотя веб-клиент открывается?
Проверьте в default.vrd, что сервисы опубликованы, и сравните публикацию с копией файла до обновления. Переопубликация могла сбросить ручные настройки.
Сколько обычно занимает окно обслуживания?
Для одного релиза бухгалтерской конфигурации на базе в несколько гигабайт — ориентировочно 30–60 минут вместе с бэкапом и обработчиками обновления. Цепочка релизов и большая база увеличивают время в разы.