Как запускать нужную версию 1С при различии версий клиента и сервера (без обновления серверной части)

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Для успешного решения задачи нам потребуется детально проанализировать логику работы стартера 1cestart.exe, конфигурационные файлы системы и параметры баз данных.


Как устроен штатный механизм автоматического выбора версии

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

  1. Пользователь запускает программу через ярлык, который ссылается на общий стартер — C:\Program Files\1cv8\common\1cestart.exe (или аналогичный путь для 32-битной версии).
  2. Стартер анализирует конфигурационные файлы и запускает интерактивное окно выбора баз 1cv8s.exe самой последней из установленных на компьютере версий платформы.
  3. При выборе клиент-серверной информационной базы интерактивный стартер обращается к серверу «1С:Предприятия».
  4. Сервер в ответ на запрос авторизации передает клиенту точный номер своей текущей версии (например, 8.3.15.1778).
  5. Стартер анализирует локально установленные на компьютере пользователя версии платформы:
    • Если на компьютере обнаружена точно такая же версия клиента, стартер закрывает окно выбора баз и прозрачно для пользователя запускает исполняемый файл тонкого или толстого клиента (1cv8c.exe или 1cv8.exe) требуемой старой версии.
    • Если на компьютере пользователя отсутствует нужная версия, система выдает стандартное предупреждение о невозможности подключения из-за различия версий.

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


Почему автоматический выбор версии ломается при обновлении

Если на компьютерах ваших пользователей после обновления стартер упорно пытается запустить самую новую версию платформы и выдает ошибку подключения к старому серверу, проанализируем основные причины этой проблемы.

Причина 1. Полное удаление старой версии платформы при развертывании

Часто при создании пакетов MSI для установки через Active Directory администраторы настраивают политику таким образом, чтобы перед установкой новой версии производилась полная деинсталляция предыдущих версий. В этом случае у стартера физически не остается возможности запустить нужный клиент. Программа не сможет подключиться к серверу, пока серверная часть также не будет обновлена.

Причина 2. Переход на другую разрядность (x32 на x64) и пути поиска

Это одна из самых неочевидных проблем. По умолчанию 32-разрядная и 64-разрядная платформы устанавливаются в разные каталоги на диске:

Стартер ищет установленные версии по путям, указанным в конфигурационном файле 1CEStart.cfg в параметре InstalledLocation. Если при установке новой 64-битной версии конфигурационный файл был перезаписан или создан заново, он может указывать только на один каталог установки. Стартер просто «не видит» старую версию платформы другой разрядности, даже если она осталась на диске.

Причина 3. Жесткое указание версии в свойствах информационной базы

Если в окне запуска для конкретной информационной базы в поле «Версия платформы» вручную прописан конкретный релиз (например, 8.3.15.1869), стартер проигнорирует любые ответы сервера и попытается запустить именно указанную версию. Это же происходит, если параметры баз централизованно распространяются через общий файл .v8i с жестко заданным ключом Version=....

Причина 4. Использование некорректных ярлыков

Пользователи часто закрепляют запущенное приложение в панели задач Windows или создают ярлыки вручную. При этом операционная система может создать ярлык не на общий стартер 1cestart.exe, а непосредственно на исполняемый файл конкретной запущенной версии (например, C:\Program Files\1cv8\8.3.15.1869\bin\1cv8c.exe). При использовании такого ярлыка автоматический выбор версии работать не будет в принципе.


Пошаговое руководство по исправлению и настройке системы

Рассмотрим, как правильно сконфигурировать клиентские рабочие места для бесшовной работы с сервером без ручного вмешательства в настройки каждого пользователя.

Шаг 1. Проверяем наличие установленных версий

Убедимся, что на рабочих станциях установлены обе версии платформы (в нашем примере — старая рабочая 8.3.15.1778 и новая 8.3.15.1869). Зайдем в каталоги установки и проверим наличие исполняемых файлов:

Для 64-битных версий:

Если старая версия была удалена в процессе обновления через GPO, необходимо изменить параметры развертывания групповой политики, отключив автоматическое удаление предыдущих пакетов, и повторно установить старую версию на клиентские ПК.

Шаг 2. Корректируем конфигурационный файл 1CEStart.cfg

Нам необходимо убедиться, что стартер знает, где искать установленные платформы разной разрядности. Конфигурационный файл 1CEStart.cfg может располагаться в двух местах:

  1. Общий для всех пользователей компьютера: %ProgramData%\1C\1CEStart\1CEStart.cfg
  2. Индивидуальный для пользователя: %APPDATA%\1C\1CEStart\1CEStart.cfg

Откроем этот файл с помощью любого текстового редактора и настроим параметры поиска. Нам нужно добавить несколько строк в параметр InstalledLocation, чтобы стартер проверял как 32-битные, так и 64-битные каталоги. Приведем пример правильного заполнения конфигурационного файла:


InstalledLocation=C:\Program Files\1cv8
InstalledLocation=C:\Program Files (x86)\1cv8
DefaultVersion=8.3
UseEnterpriseRegistry=1

Обратите внимание на параметр DefaultVersion=8.3. Он указывает стартеру, что при запуске баз, где версия не задана жестко, нужно использовать семейство платформ 8.3, позволяя механизму сопоставления отрабатывать корректно. Если там будет указан конкретный релиз (например, DefaultVersion=8.3.15.1869), автоподбор может не сработать.

Шаг 3. Проверяем настройки подключения в файле списка баз (.v8i)

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

В поле «Версия платформы» должно быть указано значение 8.3 (или поле должно оставаться пустым), но ни в коем случае не полный номер конкретного релиза.

Если вы распространяете список баз через общий файл ibases.v8i, откроем его и проверим строку описания конкретной базы. Она должна выглядеть следующим образом:


[Имя Вашей Базы]
Connect=Srvr="ИмяСервера";Ref="ИмяБазы";
ID=xxxx-xxxx-xxxx-xxxx
OrderInList=1
Folder=/
UseHWLicenses=1
ClientConnectionSpeed=Normal
App=Auto
Version=8.3

Если в параметре Version стояло значение Version=8.3.15.1869, заменим его на Version=8.3. В этом случае стартер запустит новейший установленный на клиенте исполняемый файл интерактивного выбора (в нашем случае от версии 1869), тот опросит сервер, получит требование запустить версию 1778, найдет её на диске благодаря настроенному 1CEStart.cfg и успешно запустит сеанс пользователя.

Шаг 4. Настройка автоматической дистрибуции версий (Best Practice)

Чтобы в будущем не сталкиваться с подобными проблемами при поэтапном обновлении, настроим механизм автоматической установки недостающих версий платформы непосредственно из стартера 1С с помощью сетевого ресурса. Это позволит стартеру самостоятельно скачивать и устанавливать нужную версию клиента прямо в процессе запуска, если её вдруг не оказалось на ПК пользователя.

Для этого выполним следующие действия:

  1. Создадим на сетевом сервере общую папку, доступную всем пользователям на чтение (например, \\ServerName\1C_Distr).
  2. Распакуем туда дистрибутивы необходимых версий платформы. Каждая версия должна находиться в своей папке, а в корне сетевого ресурса должен быть файл описания дистрибутивов.
  3. В конфигурационный файл общего доступа 1cescmn.cfg (или в локальные файлы 1CEStart.cfg на рабочих станциях) добавим параметр DistributiveLocation:

DistributiveLocation=\\ServerName\1C_Distr
InstalledLocation=C:\Program Files\1cv8
InstalledLocation=C:\Program Files (x86)\1cv8

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


Резюме

Для бесперебойной работы пользователей при несовпадении версий платформы на клиенте и сервере необходимо придерживаться простых правил администрирования:

Эти несложные шаги позволят сделать процесс обновления платформы полностью незаметным для пользователей и избавят ИТ-отдел от авральной работы в дни проведения технических работ.

← На главную