Версия сервера 1С: обновление платформы и ошибка версий

Дата: 14.10.2026 15:46:35
Сервер 1С
Обновление платформы
Администрирование 1С
Кластер серверов
Клиент-сервер
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

Версия сервера 1С — номер сборки платформы, на которой работает кластер: служба агента ragent и рабочие процессы rphost. Клиент должен совпадать с ней до последней цифры: тонкий клиент 8.3.27.1786 подключится к серверу 8.3.27.1786, но не к 8.3.25.1286. Вопрос встаёт после обновления сервера, когда у пользователей ошибка несовпадения версий, или когда новый релиз типовой требует свежую платформу. Ниже — где смотреть версии клиента и сервера, почему они расходятся и в каком порядке обновлять платформу, чтобы простой занял минуты.

Платформа, режим совместимости и релиз конфигурации

«Версией 1С» называют четыре разных номера, и их постоянно путают:

ЧтоПримерГде посмотреть
Версия клиента — платформа на компьютере пользователя8.3.27.1786«О программе», СистемнаяИнформация в клиентском коде
Версия сервера — платформа кластера8.3.27.1786«О программе», свойства службы агента, rac agent version
Режим совместимости конфигурацииВерсия 8.3.24Конфигуратор: свойства корня конфигурации, группа «Совместимость»
Версия конфигурации (релиз)2.5.20.x«О программе», Метаданные.Версия

Режим совместимости — свойство конфигурации, а не сервера: конфигурация в режиме «Версия 8.3.24» штатно работает на платформе 8.3.27, и при обновлении платформы его не меняют. Зависимость обратная: релиз может требовать платформу не ниже определённой. В типовых на БСП минимальная и рекомендуемая версии задаются в ОбщегоНазначенияПереопределяемый.ПриОпределенииОбщихПараметровБазовойФункциональности; в КА 2.5.20 это сборки 8.3.24.1548 и 8.3.25.1286.

Версия сервера 1С и клиента: где посмотреть

«О программе» и служба агента

Пользователю проще всего открыть Главное меню → Справка → О программе: там текущие версии клиента и сервера, а по ссылке «Информация для технической поддержки» — текст для копирования в обращение.

На сервере откройте services.msc → «Агент сервера 1С:Предприятия 8.3 (x86-64)» → «Свойства» → «Исполняемый файл». Каталог перед \bin\ragent.exe и есть версия сервера: служба запускает именно эту сборку, сколько бы версий ни стояло рядом. Консоль кластера номер не показывает, но подключается только к агенту своей версии — см. статью о консоли кластера.

Командная строка: Windows и Linux

Все команды только читают; rac agent version отвечает, если на сервере запущен ras.

rem Версия сервера 1С в Windows. Все команды только читают.
rem 1. Строка запуска службы агента: номер версии - каталог перед \bin\ragent.exe
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"

rem 2. Установленные версии платформы: 64- и 32-разрядные
dir /b /ad "%ProgramFiles%\1cv8\8.*"
dir /b /ad "%ProgramFiles(x86)%\1cv8\8.*"

rem 3. Версия агента через сервер администрирования ras (порт 1545)
"%ProgramFiles%\1cv8\8.3.27.1786\bin\rac.exe" agent version srv01:1545

Сводка по компьютеру: какие версии установлены, где есть сервер и клиенты и какие службы на какую версию смотрят.

# Get-1CVersions.ps1 - версии платформы 1С на этом компьютере и службы, которые их запускают.
# Только читает. Windows PowerShell 5.1, 64-разрядный (в 32-разрядном Program Files подменяется).
$services = @(Get-CimInstance Win32_Service | Where-Object { $_.PathName -match '\\1cv8\\' })
$roots = @($env:ProgramFiles, ${env:ProgramFiles(x86)}) | Where-Object { $_ } |
    ForEach-Object { Join-Path $_ '1cv8' } | Where-Object { Test-Path $_ } | Select-Object -Unique

$rows = foreach ($root in $roots) {
    $arch = if ($root -like '*(x86)*') { 'x86' } else { 'x64' }
    foreach ($dir in Get-ChildItem $root -Directory | Where-Object Name -match '^\d+(\.\d+){3}$') {
        $bin = Join-Path $dir.FullName 'bin'
        $marker = '\' + $dir.Name + '\bin\'
        [pscustomobject]@{
            Version  = $dir.Name
            Arch     = $arch
            Server   = Test-Path (Join-Path $bin 'ragent.exe')
            Thin     = Test-Path (Join-Path $bin '1cv8c.exe')
            Full     = Test-Path (Join-Path $bin '1cv8.exe')
            # Службы, чья строка запуска ведет в каталог этой версии: агент, ras, сервер хранилища
            Services = ($services | Where-Object { $_.PathName.Contains($marker) } |
                ForEach-Object { $_.Name }) -join '; '
        }
    }
}
$rows | Sort-Object Arch, { [version]$_.Version } | Format-Table -AutoSize

На Linux версии лежат в каталогах /opt/1cv8/x86_64/<версия>, а работающий агент виден по пути процесса:

# Версия сервера 1С на Linux. Команды только читают.
ls /opt/1cv8/x86_64/                     # установленные версии: каталоги вида 8.3.27.1786
ps -eo pid,args | grep '[r]agent'        # в пути работающего ragent - номер версии
systemctl list-units --all 'srv1cv8*'    # службы сервера 1С (8.3.21+): версия в имени юнита

Из 1С: клиент, сервер и режим совместимости

СистемнаяИнформация.ВерсияПриложения возвращает версию той платформы, где выполняется код: на клиенте — клиента, в серверном вызове — рабочего процесса кластера. Обработка показывает обе версии, каталоги программ, режим совместимости и релиз.

// Обработка «Версии платформы»: модуль формы, на форме - команда ПоказатьВерсии.
// Версии клиента и сервера, каталоги программ, режим совместимости и релиз конфигурации.

&НаКлиенте
Процедура ПоказатьВерсии(Команда)

	СисИнфо = Новый СистемнаяИнформация;
	ДанныеСервера = СведенияСервера();

	Строки = Новый Массив;
	Строки.Добавить("Клиент: " + СисИнфо.ВерсияПриложения + " (" + Строка(СисИнфо.ТипПлатформы) + ")");
	#Если Не ВебКлиент Тогда
	// Из какого каталога запущен клиент - какую из установленных сборок выбрала программа запуска
	Строки.Добавить("Каталог клиента: " + КаталогПрограммы());
	#КонецЕсли
	Строки.Добавить("Сервер: " + ДанныеСервера.Версия + " (" + ДанныеСервера.ТипПлатформы
		+ "), компьютер " + ДанныеСервера.Компьютер);
	Строки.Добавить("Каталог сервера: " + ДанныеСервера.Каталог);
	Строки.Добавить("Вариант работы: " + ДанныеСервера.ВариантРаботы);
	Строки.Добавить("Режим совместимости конфигурации: " + ДанныеСервера.РежимСовместимости);
	Строки.Добавить("Конфигурация: " + ДанныеСервера.Конфигурация);

	ПоказатьПредупреждение(, СтрСоединить(Строки, Символы.ПС));

КонецПроцедуры

// Выполняется там, где работает серверный код: в рабочем процессе кластера,
// а в файловой базе - в процессе самого клиента.
&НаСервереБезКонтекста
Функция СведенияСервера()

	СисИнфо = Новый СистемнаяИнформация;
	СтрокаСоединения = НРег(СтрокаСоединенияИнформационнойБазы());
	Если СтрНайти(СтрокаСоединения, "file=") > 0 Тогда
		ВариантРаботы = "файловый";
	ИначеЕсли СтрНайти(СтрокаСоединения, "srvr=") > 0 Тогда
		ВариантРаботы = "клиент-серверный";
	Иначе
		ВариантРаботы = "через веб-сервер";
	КонецЕсли;

	Сведения = Новый Структура;
	Сведения.Вставить("Версия", СисИнфо.ВерсияПриложения);
	Сведения.Вставить("ТипПлатформы", Строка(СисИнфо.ТипПлатформы));
	Сведения.Вставить("Компьютер", ИмяКомпьютера());
	Сведения.Вставить("Каталог", КаталогПрограммы());
	Сведения.Вставить("ВариантРаботы", ВариантРаботы);
	// Метаданные доступны только на сервере: это свойства конфигурации, а не платформы
	Сведения.Вставить("РежимСовместимости", Строка(Метаданные.РежимСовместимости));
	Сведения.Вставить("Конфигурация", Метаданные.Синоним + " " + Метаданные.Версия);

	Возврат Сведения;

КонецФункции

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

Сборку для запуска выбирает программа запуска по полю «Версия 1С:Предприятия» в свойствах базы (окно запуска → «Изменить…» → «Далее» до последней страницы):

  • пусто — версия по умолчанию из строки DefaultVersion в 1CEStart.cfg, без неё — самая свежая;
  • маска 8.3 или 8.3.27 — сборка, закреплённая за маской в DefaultVersion, иначе самая свежая подходящая из установленных или доступных для установки;
  • полный номер — ровно эта сборка.

При подключении клиент сверяется с сервером. Подбор по умолчанию включён (/AppAutoCheckVersion+), и при расхождении клиент ищет сборку сервера: среди установленных, в каталогах DistributiveLocation из 1CEStart.cfg и 1CESCmn.cfg, по адресу дистрибутива, который сервер возвращает вместе с ошибкой (PublishDistributiveLocation… в conf.cfg, pubdst в default.vrd), через интернет-сервис. Поэтому ошибка несовпадения почти всегда значит одно: нужной сборки на компьютере нет и поставить её неоткуда. Типичные причины:

  • сервер обновили, а на рабочих местах и терминальном сервере новой сборки нет и каталог дистрибутивов не настроен;
  • клиентов обновили раньше сервера и сразу удалили старую сборку;
  • подбор выключен ключом /AppAutoCheckVersion- в ярлыке;
  • база зарегистрирована в кластере другой версии, например во втором кластере на том же сервере (два кластера на одном сервере);
  • сборку не подбирают модуль веб-сервера, COM-соединитель comcntr.dll и консоль кластера — после обновления сервера они остаются старыми.

Закрепление версий в 1CEStart.cfg — в статье о списке баз 1С. Правило маски видно в коде: функция сравнивает номера по общим частям, поэтому 8.3.27.1786 подходит под 8.3.27; она же не даёт коду с новыми методами запуститься на старой платформе.

// Общий модуль ВерсииПлатформыКлиентСервер (флажки «Клиент (управляемое приложение)» и «Сервер»).
// Номер версии - 8.3.27.1786, маска - неполный номер: 8.3 или 8.3.27.

// Сравнивает версии по частям, которые есть в обоих номерах: -1, 0 или 1.
// СравнитьВерсии("8.3.27.1786", "8.3.27") = 0 - сборка подходит под маску.
Функция СравнитьВерсии(Знач Версия1, Знач Версия2) Экспорт

	Части1 = СтрРазделить(СокрЛП(Версия1), ".", Ложь);
	Части2 = СтрРазделить(СокрЛП(Версия2), ".", Ложь);

	Для Индекс = 0 По Мин(Части1.Количество(), Части2.Количество()) - 1 Цикл
		Число1 = Число(Части1[Индекс]);
		Число2 = Число(Части2[Индекс]);
		Если Число1 > Число2 Тогда
			Возврат 1;
		ИначеЕсли Число1 < Число2 Тогда
			Возврат -1;
		КонецЕсли;
	КонецЦикла;

	Возврат 0;

КонецФункции

// Самая свежая сборка из списка, подходящая под маску: так программа запуска
// выбирает версию для базы с неполным номером. Пустая строка - подходящей нет.
Функция ПодобратьВерсию(Знач Маска, Знач Установленные) Экспорт

	Результат = "";
	Для Каждого Версия Из Установленные Цикл
		Если СравнитьВерсии(Версия, Маска) = 0
			И (Результат = "" Или СравнитьВерсии(Версия, Результат) > 0) Тогда
			Результат = Версия;
		КонецЕсли;
	КонецЦикла;

	Возврат Результат;

КонецФункции

// Исключение, если версия платформы ниже нужной. Вызывается перед кодом с новыми методами,
// например АдминистрированиеСервера.ПолучитьВерсию() доступен с 8.3.16.
Процедура ПроверитьВерсиюПлатформы(Знач МинимальнаяВерсия) Экспорт

	СисИнфо = Новый СистемнаяИнформация;
	Если СравнитьВерсии(СисИнфо.ВерсияПриложения, МинимальнаяВерсия) < 0 Тогда
		ВызватьИсключение СтрШаблон("Нужна платформа %1 или новее, сейчас %2.
			|Обновите платформу на сервере и клиентах.", МинимальнаяВерсия, СисИнфо.ВерсияПриложения);
	КонецЕсли;

КонецПроцедуры

// Пример: на компьютере стоят 8.3.24, 8.3.25 и 8.3.27, в свойствах базы - маска.
Процедура ПримерПодбора() Экспорт

	Установленные = СтрРазделить("8.3.24.1548,8.3.25.1286,8.3.27.1786", ",");
	Сообщить(ПодобратьВерсию("8.3", Установленные));    // 8.3.27.1786
	Сообщить(ПодобратьВерсию("8.3.25", Установленные)); // 8.3.25.1286
	Сообщить(ПодобратьВерсию("8.3.26", Установленные)); // пусто: сборку нужно установить
	ПроверитьВерсиюПлатформы("8.3.16");                 // на 8.3.15 и более ранних - исключение

КонецПроцедуры

Обновление платформы на сервере 1С: порядок

Чтобы обновить платформу на сервере 1С без сюрпризов, новую версию ставят рядом со старой, а службу переключают в окно обслуживания:

  1. Проверить требования: минимальную версию платформы для релиза конфигурации и раздел «Изменения, требующие изменений в конфигурациях и административных установках» в docs\ru\V8Update.htm каталога новой версии. Сделать резервную копию баз.
  2. Установить новую версию рядом со старой (сервер, администрирование, модули веб-сервера) без флажка установки сервера как службы: с ним установщик, по справке, переустанавливает службу, то есть переключит её в рабочее время.
  3. Заранее поставить новую сборку клиентам, не удаляя старую: пока сервер старый, клиент выберет старую сборку сам.
  4. Закрыть вход. В консоли кластера в свойствах базы включить «Блокировка начала сеансов включена» и «Блокировка регламентных заданий включена» (блокировка базы 1С), дождаться выхода пользователей.
  5. Остановить службу «Агент сервера 1С:Предприятия 8.3 (x86-64)».
  6. Переключить службу на новую версию — заменить каталог версии в строке запуска (ImagePath); реестр, sc и откат разобраны в статье про два кластера. Службу ras, если она есть, — тоже.
  7. Запустить и проверить: sc qc, rac agent version, вход в базу и «О программе». Зарегистрировать консоль кластера новой версии.
  8. Обновить всё, что привязано к сборке: публикации на веб-сервере, comcntr.dll для обменов через COM, сервер хранилища (его версия должна совпадать с конфигуратором).
  9. Открыть вход и снять блокировку регламентных заданий.
  10. Старую версию удалить через неделю-другую и сразу проверить службу агента: по справке при удалении версии удаляется и служба сервера этой версии.

Обновление кластера 1С с минимальным простоем

Если всё установлено заранее, само переключение занимает минуты, дольше ждут выхода пользователей. Простой сокращают:

  • Клиенты обновлены до окна — групповыми политиками или через каталог дистрибутивов: сетевую папку с подкаталогами по номерам сборок прописывают в DistributiveLocation, и программа запуска ставит версию сама. Без прав администратора установка не пройдёт, поэтому терминальные серверы готовят заранее. С 8.3.23 загрузку и установку клиента до обновления сервера настраивают файлом ClientUpdate.cfg.
  • Второй кластер новой версии на других портах: базы переносят по одной, по мере выхода пользователей, откат — возврат базы в старый кластер (перенос — в той же статье).
  • Сводка перед окном: версия каждого сервера и число сеансов в базах. Код опрашивает серверы через ras, поэтому их версия может отличаться от версии базы, где он запущен.
// Обработка «Перед обновлением платформы»: модуль формы, на форме - команда ПроверитьСерверы.
// По каждому серверу: версия агента против целевой и число сеансов в базах.
// На серверах должен работать ras (по умолчанию порт 1545). Платформа 8.3.17 и новее.

&НаКлиенте
Процедура ПроверитьСерверы(Команда)

	// Серверы через запятую и сборка, на которую переходим
	Сводка = СостояниеСерверов("srv01:1545, srv02:1545", "8.3.27.1786");
	ПоказатьПредупреждение(, СтрСоединить(Сводка, Символы.ПС));

КонецПроцедуры

&НаСервереБезКонтекста
Функция СостояниеСерверов(Знач Адреса, Знач ЦелеваяВерсия)

	Сводка = Новый Массив;
	Для Каждого Адрес Из СтрРазделить(Адреса, ",", Ложь) Цикл
		Части = СтрРазделить(СокрЛП(Адрес), ":", Ложь);
		Если Части.Количество() = 0 Тогда
			Продолжить;
		КонецЕсли;
		ИмяСервера = Части[0];
		ПортRAS = ?(Части.Количество() > 1, Число(Части[1]), 1545);
		Попытка
			Агент = Новый АдминистрированиеСервера(ИмяСервера, ПортRAS);
			// Если заведены администраторы центрального сервера:
			// Агент.ВыполнитьАутентификацию(Пароль, Имя) - пароль идет первым параметром
			Версия = Агент.ПолучитьВерсию();
			Сводка.Добавить(СтрШаблон("%1: сервер 1С %2 - %3", ИмяСервера, Версия,
				?(Версия = ЦелеваяВерсия, "уже обновлен", "обновить до " + ЦелеваяВерсия)));
			ДобавитьСеансыПоБазам(Агент, Сводка);
		Исключение
			// Сюда попадают и недоступный ras, и отказ в аутентификации
			Сводка.Добавить(СтрШаблон("%1: не удалось опросить - %2", ИмяСервера,
				ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
		КонецПопытки;
	КонецЦикла;

	Возврат Сводка;

КонецФункции

// Сеансы по базам каждого кластера. Фоновые задания и конфигуратор тоже считаются:
// при остановке службы они оборвутся вместе с пользователями.
&НаСервереБезКонтекста
Процедура ДобавитьСеансыПоБазам(Агент, Сводка)

	Для Каждого Кластер Из Агент.ПолучитьКластеры() Цикл
		// Без администраторов кластера - пустые имя и пароль, иначе передайте их
		Кластер.ВыполнитьАутентификацию("", "");

		Сеансов = Новый Соответствие;
		Для Каждого Сеанс Из Кластер.ПолучитьСеансы() Цикл
			Ключ = Строка(Сеанс.ИдентификаторИнформационнойБазы);
			Сеансов.Вставить(Ключ, ?(Сеансов[Ключ] = Неопределено, 0, Сеансов[Ключ]) + 1);
		КонецЦикла;

		Для Каждого База Из Кластер.ПолучитьИнформационныеБазы() Цикл
			Количество = Сеансов[Строка(База.ИдентификаторИнформационнойБазы)];
			Сводка.Добавить(СтрШаблон("   кластер ""%1"", база %2: сеансов %3", Кластер.Имя, База.Имя,
				?(Количество = Неопределено, 0, Количество)));
		КонецЦикла;
	КонецЦикла;

КонецПроцедуры

Разбор ключевых строк

  • Новый СистемнаяИнформация в процедуре &НаКлиенте даёт версию клиента, в &НаСервереБезКонтекста — сервера. В файловой базе серверный код выполняется в процессе клиента (или модуля веб-сервера), и версии совпадают всегда.
  • КаталогПрограммы() показывает, какую из установленных сборок выбрала программа запуска. В веб-клиенте метода нет, отсюда #Если Не ВебКлиент.
  • Метаданные.РежимСовместимости и Метаданные.Версия доступны только на сервере (и в толстом клиенте) — это свойства конфигурации, к версии платформы они не относятся.
  • СравнитьВерсии сравнивает столько частей, сколько есть в обоих номерах, — так работает маска. Типовая ОбщегоНазначенияКлиентСервер.СравнитьВерсии из БСП требует ровно четыре части и на маске вызовет исключение.
  • ПодобратьВерсию повторяет правило программы запуска для неполного номера: самая свежая из подходящих сборок.
  • ПолучитьВерсию() у АдминистрированиеСервера (с 8.3.16) возвращает версию сервера, нужен запущенный ras. ПолучитьИнформационныеБазы() требует аутентификации администратора кластера (без администраторов — пустые имя и пароль); у агента в ВыполнитьАутентификацию первым идёт пароль, у кластера — имя.

Типичные ошибки

  • «Несоответствие версий клиента и сервера 1С:Предприятия» или «Различаются версии клиента и сервера» при входе. На компьютере нет сборки сервера, и подбор её не нашёл. Поставьте ту же сборку, что на сервере, или настройте каталог дистрибутивов. Пользователям, не закрывшим клиент перед переключением службы, достаточно перезапустить программу.
  • «Для продолжения работы необходимо обновить программу доступа… Требуется версия …» — нужная сборка известна, но установить её не удалось: нет дистрибутива или прав. Поставьте её от имени администратора.
  • После обновления не открывается публикация. Веб-сервер загружает модуль старой версии — переопубликуйте базу из новой.
  • Обмен через COM падает с ошибкой версий. Зарегистрирована comcntr.dll другой сборки; зарегистрируйте библиотеку версии сервера нужной разрядности (COM-соединение 1С).
  • «Сервер 1С:Предприятия не обнаружен» после удаления старой версии. Вместе с версией удалилась служба агента — создайте её заново на новой сборке.
  • «Вход в приложение невозможен. Предварительно обновите версию платформы 1С:Предприятие.» Новый релиз на БСП требует платформу новее; на совсем старой сборке запуск обрывается фразой «Для запуска необходима версия платформы 1С:Предприятие … или выше». Сначала обновляют платформу, потом конфигурацию.
  • «Версия хранилища сеансовых данных отличается от версии платформы» после смены или отката версии. Остановите службу и очистите сеансовые данные кластера (кэш сервера 1С).

Остальные ошибки подключения разобраны в статье об ошибке сервера 1С.

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

Можно ли обновить сервер, а клиентов потом?

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

Нужно ли менять режим совместимости после обновления платформы?

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

Сколько версий платформы можно держать на сервере?

Сколько угодно, каждая — в своём каталоге. Но служба агента на стандартных портах одна: два сервера разных версий одновременно — это второй кластер на других портах.

Как откатить обновление?

Старая версия ещё установлена, поэтому откат — то же переключение в обратную сторону: остановить службу, вернуть прежний каталог в строке запуска, запустить. Клиенты, у которых осталась старая сборка, переключатся сами.

Когда проще заказать

Если серверов несколько, есть веб-публикации, обмены через COM и терминальные серверы, а окно обслуживания — одна ночь, обновление лучше доверить тому, кто уже переводил рабочие кластеры. Разместите задачу на площадке — оценка бесплатная, ответ в течение рабочего дня. Остальные направления — на странице услуг.

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

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


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.