При администрировании инфраструктуры 1С системные администраторы часто сталкиваются с необходимостью оптимизировать процесс обновления клиентских приложений. Классическая схема, при которой новая версия платформы устанавливается всем пользователям одновременно, подходит далеко не всегда. Например, пользователям управленческих баз частые обновления не требуются, в то время как бухгалтеры и кадровики вынуждены регулярно переходить на новые релизы платформы вслед за обновлениями конфигураций «1С:Бухгалтерия» или «1С:Зарплата и управление персоналом».
Давайте подробно разберем, как решить эту задачу, настроив выборочное обновление платформы «по требованию». Мы проанализируем, почему стандартный параметр AppAutoInstallLastVersion=0 ведет себя не так, как ожидается, выясним причины возникновения ошибок и рассмотрим три практических способа реализации этого сценария.
Рассмотрим стандартный сценарий. Администратор хочет отключить автоматическую установку последнего доступного релиза для большинства пользователей. Для этого в конфигурационном файле 1CEStart.cfg прописывается параметр:
AppAutoInstallLastVersion=0
Согласно официальной документации «1С», этот параметр отключает автоматический поиск и установку новейшей версии платформы при обычном запуске стартера. При этом документация содержит оговорку: «Если на локальном компьютере не установлена версия, которая требуется сервером в клиент-серверном варианте использования или явно указана для информационной базы, то значение параметра AppAutoInstallLastVersion игнорируется и будет выполнена попытка установить новую версию».
Однако на практике администраторы сталкиваются с тем, что обновление полностью блокируется, и при попытке запустить базу пользователь получает критическую ошибку «Не обнаружена установленная версия 1С:Предприятия».
Проанализируем цепочку запуска клиентского приложения, чтобы понять причину такого поведения:
1cestart.exe.AppAutoInstallLastVersion=0, программа запуска не обращается к сетевому каталогу дистрибутивов DistributiveLocation для поиска новых версий. Она сканирует только локальный компьютер..v8i) версия указана неточно (например, Version=8.3), программа запуска выбирает самую свежую из уже установленных локально версий (допустим, старый рабочий релиз 8.3.7.1845) и запускает клиентское приложение 1cv8c.exe.8.3.12.1685».1cestart.exe завершена, клиентское приложение не может самостоятельно инициировать установку из сетевой папки. Клиент «не умеет» читать параметры сетевой установки и разворачивать дистрибутивы. Сессия аварийно завершается с ошибкой несоответствия версий.Таким образом, автоматическая установка «по требованию» при запуске клиента не срабатывает, так как на этапе обращения к серверу программа запуска уже завершила свою работу.
Чтобы заставить программу запуска 1cestart.exe проигнорировать флаг AppAutoInstallLastVersion=0 и принудительно установить требуемый релиз, мы должны передать ей информацию о целевой версии до того, как произойдет запуск клиента и соединение с сервером. Единственный способ сделать это — явно прописать точную версию в свойствах конкретной информационной базы.
Разберем по шагам, как это реализовать:
.v8i), который используется целевой группой пользователей.Version. Вместо общего указания семейства (например, Version=8.3) пропишем точный номер требуемого релиза сервера:
[Бухгалтерия Предприятия]
Connect=Srvr="Server1C";Ref="Buh";
ID=xxxx-xxxx-xxxx
Order=1
Folder=/
Version=8.3.12.1685
1cestart.exe сразу увидит жесткое требование к версии 8.3.12.1685.AppAutoInstallLastVersion=0, обратится к каталогу DistributiveLocation и произведет фоновую установку указанной платформы.Важное примечание: Для успешной реализации этого сценария крайне важно соблюдать требования к структуре сетевого каталога дистрибутивов и правам пользователей.
Во-первых, структура каталога должна быть строго определенной. В сетевой папке, указанной в параметре DistributiveLocation, должна быть создана подпапка, имя которой точно соответствует номеру релиза (например, 8.3.12.1685). Внутри нее должны находиться файлы дистрибутива. При использовании разных разрядностей необходимо организовать структуру вложенных папок, таких как Setup (для 32-битной версии) и Setup64full (для 64-битной версии).
Во-вторых, при использовании классической сетевой установки пользователю на локальном компьютере требуются права локального администратора. Если прав нет, операционная система заблокирует фоновую установку, и стартер выдаст ошибку об отсутствии платформы.
Если явное прописание точных версий в списке баз по каким-то причинам неудобно (например, информационных баз слишком много или списки индивидуальны у каждого пользователя), мы можем пойти по пути разделения конфигурационных файлов 1cescmn.cfg.
Этот метод основан на том, что разные группы пользователей работают с разными общими настройками запуска. Рассмотрим этот подход подробнее:
DistributiveLocation=\\Server\1C_Distr
AppAutoInstallLastVersion=0
1cv8c.exe нужного релиза в папке bin), минуя общий стартер.
1cescmn.cfg, где указываем:
DistributiveLocation=\\Server\1C_Distr
AppAutoInstallLastVersion=1
AppAutoInstallLastVersion, так как по умолчанию его значение равно единице. В этом случае у данной группы пользователей обновление будет проходить в штатном автоматическом режиме при появлении нового релиза в сетевой папке.
Если администрирование прав локальных пользователей вызывает сложности (например, у пользователей нет прав локального администратора на установку программ), идеальным решением является использование веб-сервера (IIS или Apache) для раздачи и автоматического обновления Тонкого клиента.
Этот подход полностью решает проблему прав администратора, так как современные версии платформы умеют устанавливать Тонкий клиент непосредственно в профиль пользователя (папку AppData), не требуя повышенных привилегий в операционной системе.
Проанализируем шаги по настройке этого решения:
conf.cfg) укажем пути к этим дистрибутивам с помощью соответствующих параметров:
PublishDistributiveLocationWindows64=http://mywebserver/distr/tc_x64.zip
PublishDistributiveLocationWindows=http://mywebserver/distr/tc_x32.zip
Выбор конкретного метода зависит от масштаба вашей сети и текущих настроек безопасности. Для небольших офисов отлично подойдет Решение №1. В более сегментированных сетях оптимальным выбором станет разделение конфигурационных файлов (Решение №2). А для крупных распределенных компаний наиболее надежным и современным вариантом является развертывание веб-сервера дистрибутивов (Решение №3).