Как 1С автоматически выбирает и запускает нужную версию платформы при работе с сервером приложений?

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

В крупных компаниях с жесткими регламентами и развитой ИТ-инфраструктурой обновление платформы «1С:Предприятие» нередко превращается в сложную бюрократическую и техническую задачу. Системные администраторы часто опасаются возникновения конфликтов версий у пользователей, особенно когда на сервере приложений установлена одна версия платформы (например, 8.3.15.1700), а у конечных пользователей параллельно развернуты несколько версий (например, 8.3.15.1700 и более свежая 8.3.16.1224).

В рамках этой статьи мы подробно разберем, каким образом клиентское приложение 1С понимает, под какой именно версией платформы ему необходимо подключиться к серверу. Мы выясним, почему запуск напрямую из папки конкретного релиза (в обход общей программы запуска 1cestart.exe) все равно приводит к запуску нужной серверной версии, и детально проанализируем внутренние алгоритмы взаимодействия системы, описанные в технической документации на ИТС.

Суть проблемы: магия прямого запуска исполняемого файла

Рассмотрим ситуацию: на компьютере пользователя установлены две версии технологической платформы «1С:Предприятие». Пользователь решает запустить систему в обход стандартного стартера, переходит в каталог конкретной версии (например, C:\Program Files\1cv8\8.3.16.1224\bin\) и напрямую запускает исполняемый файл тонкого клиента 1cv8c.exe. База данных, к которой он подключается, крутится на сервере приложений под управлением версии 8.3.15.1700.

Казалось бы, должен произойти конфликт версий или система должна выдать ошибку несовместимости сетевых протоколов. Однако на практике происходит удивительное: закрывается процесс версии 8.3.16.1224, и автоматически стартует сессия под управлением 8.3.15.1700. Выясним, по какому алгоритму работает этот механизм.

Пошаговый алгоритм скрытого перезапуска (Process Spawning)

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

  1. Установление сетевого соединения. Запущенный процесс тонкого или толстого клиента (например, 1cv8c.exe версии 8.3.16.1224) отправляет первичный сетевой запрос на менеджер кластера серверов 1С (процесс rmngr).
  2. Запрос версии сервера. В ходе первичного рукопожатия (handshake) менеджер кластера сообщает клиентскому приложению точный релиз платформы, под управлением которой работает сервер приложений. В нашем примере сервер возвращает версию 8.3.15.1700.
  3. Проверка совместимости. Клиентский процесс сравнивает свою собственную версию с версией сервера. Обнаружив несовпадение, клиент не прекращает работу аварийно. Он временно приостанавливает процедуру подключения и переходит к процедуре поиска подходящего исполняемого файла локально на компьютере пользователя.
  4. Обращение к конфигурационным файлам. Запущенный процесс считывает настройки из системных файлов конфигурации запуска 1cestart.cfg и 1cescmn.cfg. Эти файлы располагаются по путям:
    • %APPDATA%\1C\1CEStart\1cestart.cfg (индивидуальные настройки пользователя);
    • %PROGRAMDATA%\1C\1CEStart\1cestart.cfg (общие настройки для всех пользователей компьютера).
  5. Поиск каталогов установки. Из этих конфигурационных файлов считывается параметр InstalledLocation. Он указывает, в каких каталогах на жестком диске развернуты платформы 1С. Посмотрим на пример стандартного содержимого такого файла:

InstalledLocation=C:\Program Files\1cv8
InstalledLocation=C:\Program Files (x86)\1cv8
DefaultVersion=8.3.16.1224
UseHasp=1
  1. Сканирование локальных папок. Процесс последовательно сканирует указанные в InstalledLocation директории в поисках подкаталога, имя которого в точности совпадает с версией сервера приложений (в нашем случае ищется папка 8.3.15.1700).
  2. Передача управления (Spawn). Если требуемая папка найдена, текущий процесс (версии 8.3.16.1224) порождает новый дочерний процесс 1cv8c.exe из каталога C:\Program Files\1cv8\8.3.15.1700\bin\. При этом дочернему процессу передаются все параметры исходной командной строки (адрес сервера, имя базы, имя пользователя и т.д.).
  3. Завершение исходного процесса. Исходный «неправильный» процесс завершает свою работу в операционной системе. Для конечного пользователя этот переход происходит абсолютно бесшовно и незаметно за доли секунды.

Почему игнорируются параметры в ibases.v8i при прямом запуске?

Рассмотрим важный нюанс, который часто вводит в заблуждение начинающих специалистов. При редактировании списка баз через файл ibases.v8i можно вручную прописать жесткие требования к запускаемой версии платформы. Посмотрим на структуру параметров конкретной базы в этом файле:


[Управление предприятием]
Connect=Srvr="AppServer";Ref="Trade_DB";
ID=e1c2b3a4-5678-90ab-cdef-1234567890fe
Order=2
Folder=/
UseApp=1
Version=8.3.16.1224
DefaultVersion=8.3.16.1224

Многие предполагают, что если в строках Version и DefaultVersion жестко указать релиз 8.3.16.1224, то система обязана запуститься именно под этой версией. Однако при попытке входа в клиент-серверную базу все равно сработает автоматический запуск версии сервера 8.3.15.1700. Разберем, почему так происходит:

Файл ibases.v8i анализируется исключительно программой запуска (стартером) 1cestart.exe на самом первом этапе, когда вы только выбираете базу из списка и нажимаете кнопку «1С:Предприятие». Стартер использует эти параметры лишь для того, чтобы решить, исполняемый файл какого релиза ему запустить первым.

Как только стартер передал управление конкретному исполняемому файлу (например, запустил 1cv8c.exe версии 8.3.16.1224), или если вы запустили этот файл напрямую из папки bin, настройки из ibases.v8i полностью теряют свою силу. С этого момента наивысшим приоритетом обладает **требование совместимости с сервером приложений**. Клиент обязан соответствовать серверу до последней цифры релиза, и именно поэтому запускается внутренний алгоритм перенаправления.

Что делать, если нужная версия отсутствует на компьютере клиента?

Если в процессе сканирования каталогов на шаге 6 нужная версия платформы не была обнаружена на локальном диске пользователя, система пытается автоматически развернуть её на компьютере. Рассмотрим, как устроен этот механизм:


PublishDistributiveLocationWindows32=\\AppServer\Distributions\Windows32
PublishDistributiveLocationWindows64=\\AppServer\Distributions\Windows64

<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       base="/Trade_DB"
       ib="Srvr="AppServer";Ref="Trade_DB";"
       pubdst="http://webserver.local/distrib/setup.exe">
</point>

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

Эволюция механизма в современных версиях платформы (8.3.26 и выше)

Разработчики фирмы «1С» постоянно совершенствуют механизмы работы платформы в распределенных ИТ-средах. Начиная с версии 8.3.26, поведение системы при несовпадении версий стало еще более адаптивным. Рассмотрим основные изменения:

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

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

Выводы и рекомендации для системных администраторов

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

Для минимизации стресса ИТ-отдела и исключения простоев пользователей рекомендуем придерживаться следующих правил:

  1. Не удаляйте старые релизы платформы с компьютеров пользователей сразу после обновления сервера. Наличие папок предыдущих версий в каталоге C:\Program Files\1cv8\ гарантирует беспроблемный откат сервера или параллельную работу с базами на разных серверах приложений.
  2. Активно используйте групповые политики Active Directory или конфигурационные файлы 1cestart.cfg с заполненным параметром DistributiveLocation для централизованного распространения дистрибутивов обновлений.
  3. Для удаленных офисов и мобильных сотрудников всегда настраивайте публикацию баз на веб-сервере с корректно заполненным атрибутом pubdst в файле default.vrd. Это позволит пользователям автоматически получать тонкий клиент нужной версии даже без прямого доступа к локальной сети предприятия.
← На главную