В крупных компаниях с жесткими регламентами и развитой ИТ-инфраструктурой обновление платформы «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. Выясним, по какому алгоритму работает этот механизм.
Когда мы инициируем подключение к информационной базе в клиент-серверном варианте, запущенный нами исполняемый файл 1С выполняет строго определенную последовательность действий. Проанализируем эту цепочку шагов:
1cv8c.exe версии 8.3.16.1224) отправляет первичный сетевой запрос на менеджер кластера серверов 1С (процесс rmngr).8.3.15.1700.1cestart.cfg и 1cescmn.cfg. Эти файлы располагаются по путям:
%APPDATA%\1C\1CEStart\1cestart.cfg (индивидуальные настройки пользователя);%PROGRAMDATA%\1C\1CEStart\1cestart.cfg (общие настройки для всех пользователей компьютера).InstalledLocation. Он указывает, в каких каталогах на жестком диске развернуты платформы 1С. Посмотрим на пример стандартного содержимого такого файла:
InstalledLocation=C:\Program Files\1cv8
InstalledLocation=C:\Program Files (x86)\1cv8
DefaultVersion=8.3.16.1224
UseHasp=1
InstalledLocation директории в поисках подкаталога, имя которого в точности совпадает с версией сервера приложений (в нашем случае ищется папка 8.3.15.1700).8.3.16.1224) порождает новый дочерний процесс 1cv8c.exe из каталога C:\Program Files\1cv8\8.3.15.1700\bin\. При этом дочернему процессу передаются все параметры исходной командной строки (адрес сервера, имя базы, имя пользователя и т.д.).Рассмотрим важный нюанс, который часто вводит в заблуждение начинающих специалистов. При редактировании списка баз через файл 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 нужная версия платформы не была обнаружена на локальном диске пользователя, система пытается автоматически развернуть её на компьютере. Рассмотрим, как устроен этот механизм:
DistributiveLocation в файлах 1cestart.cfg. Если там указан сетевой путь к общему ИТ-ресурсу (например, DistributiveLocation=\\SrvShare\1C_Distr), программа запуска скачивает оттуда инсталлятор нужного релиза и инициирует его автоматическую установку.conf.cfg настроены параметры автоматического распространения, тонкий клиент может загрузить дистрибутив напрямую с сервера. Для этого используются параметры:
PublishDistributiveLocationWindows32=\\AppServer\Distributions\Windows32
PublishDistributiveLocationWindows64=\\AppServer\Distributions\Windows64
default.vrd. В нем может быть прописан специальный атрибут pubdst, указывающий на веб-адрес, по которому браузер или тонкий клиент могут скачать необходимый дистрибутив:
<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>
Если автоматическая установка завершилась успешно, управление передается свежеустановленному релизу. Если же дистрибутив найти или установить не удалось, пользователь получает стандартное диалоговое окно с ошибкой несоответствия версий клиента и сервера.
Разработчики фирмы «1С» постоянно совершенствуют механизмы работы платформы в распределенных ИТ-средах. Начиная с версии 8.3.26, поведение системы при несовпадении версий стало еще более адаптивным. Рассмотрим основные изменения:
«Тихий» фоновый режим установки. Теперь, если у пользователя не установлена нужная версия тонкого клиента, но настроено автоматическое обновление по протоколу HTTP, система не прерывает работу пользователя пугающими сообщениями об ошибках. Вместо этого запускается фоновый процесс скачивания и установки нужного релиза в фоновом режиме.
Мгновенный переход в веб-клиент. Для того чтобы пользователь не терял рабочее время во время скачивания и установки дистрибутива (который может весить несколько сотен мегабайт), в интерактивном окне обновления появилась кнопка «Открыть в браузере». При её нажатии система мгновенно запускает сессию в веб-клиенте через стандартный браузер пользователя, позволяя сразу приступить к выполнению задач. Параллельно с этим на фоне продолжается автоматический монтаж полноценного тонкого клиента.
Проанализировав внутреннее устройство платформы «1С:Предприятие», мы можем сделать однозначный вывод: **архитектура 1С изначально проектировалась с учетом возможного наличия разных версий платформы на компьютерах пользователей**.
Для минимизации стресса ИТ-отдела и исключения простоев пользователей рекомендуем придерживаться следующих правил:
C:\Program Files\1cv8\ гарантирует беспроблемный откат сервера или параллельную работу с базами на разных серверах приложений.1cestart.cfg с заполненным параметром DistributiveLocation для централизованного распространения дистрибутивов обновлений.pubdst в файле default.vrd. Это позволит пользователям автоматически получать тонкий клиент нужной версии даже без прямого доступа к локальной сети предприятия.