Разработка и Конфигурация · 11 мин
Как программно узнать версию платформы 1С
Как программно узнать версию платформы 1С через СистемнаяИнформация, COM-соединение, реестр и командную строку. Готовые примеры кода и проверка результата.
Знать версию платформы 1С из кода требуется в нескольких типовых ситуациях: при проверке совместимости расширения или обработки с конкретным релизом, при выводе диагностической информации в техподдержку, при условной логике, зависящей от возможностей платформы, и при администрировании кластера серверов. Встроенный язык 1С предоставляет штатный механизм получения этих данных, а для внешних сценариев есть альтернативы через COM, реестр Windows и командную строку.
Основной инструмент — объект СистемнаяИнформация, доступный во всех контекстах исполнения: на клиенте, на сервере, в тонком и толстом клиенте, в веб-клиенте. Он возвращает не только версию платформы, но и тип операционной системы, разрядность и другие параметры среды исполнения. Дополнительно версию можно получить из свойств COM-соединителя, из реестра Windows или из файлов установленной платформы, когда код 1С запустить нельзя.
Важно различать версию платформы и версию конфигурации. Платформа — это исполняемая среда (1cv8.exe, сервер 1С), конфигурация — прикладное решение (Бухгалтерия, Управление торговлей и т.д.). Они версионируются независимо, и методы их получения разные. Ниже разобраны оба случая, но акцент сделан именно на платформе.
Получение версии через объект СистемнаяИнформация
Штатный способ — создать экземпляр объекта СистемнаяИнформация и прочитать его свойства. Объект доступен глобально, не требует предварительных настроек и работает одинаково в файловом и клиент-серверном вариантах.
СисИнфо = Новый СистемнаяИнформация;
Сообщить("Версия платформы: " + СисИнфо.ВерсияПриложения);
Сообщить("Тип платформы: " + Строка(СисИнфо.ТипПлатформы));
Сообщить("Версия ОС: " + СисИнфо.ВерсияОС);Ключевое свойство — ВерсияПриложения. Оно возвращает строку вида «8.3.22.1750»: первая цифра — поколение платформы, вторая — редакция, третья — релиз, четвёртая — сборка. Именно эту строку обычно требуют указать при обращении в поддержку или при проверке совместимости расширений.
Обратите внимание на контекст исполнения. Если код выполняется в клиент-серверном варианте на сервере, СистемнаяИнформация вернёт версию сервера 1С, а не клиентского приложения. Версии клиента и сервера могут различаться, и для диагностики иногда нужно получить обе: серверную — в серверной процедуре, клиентскую — в клиентской.
Для сравнения версий строку нужно разобрать на числовые компоненты. Прямое строковое сравнение «8.3.10» и «8.3.9» даст неверный результат, потому что лексикографически «10» меньше «9».
Функция ВерсияНеНиже(ТребуемаяВерсия) Экспорт
СисИнфо = Новый СистемнаяИнформация;
Текущие = СтрРазделить(СисИнфо.ВерсияПриложения, ".");
Требуемые = СтрРазделить(ТребуемаяВерсия, ".");
Для Инд = 0 По 3 Цикл
Тек = Число(Текущие[Инд]);
Треб = Число(Требуемые[Инд]);
Если Тек > Треб Тогда Возврат Истина;
ИначеЕсли Тек < Треб Тогда Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункцииКак узнать версию конфигурации, а не платформы
Частая путаница: разработчик хочет получить версию прикладного решения, но читает ВерсияПриложения и получает версию платформы. Версия конфигурации хранится в метаданных и доступна через объект Метаданные:
ВерсияКонфигурации = Метаданные.Версия;
ИмяКонфигурации = Метаданные.Имя;
Синоним = Метаданные.Синоним;В типовых конфигурациях на БСП (Библиотека стандартных подсистем) версия также доступна через функциональность подсистемы обновления, но базовое свойство Метаданные.Версия работает в любой конфигурации без зависимостей.
Что именно вы получаете
Версия платформы (среды исполнения), например 8.3.22.1750. Нужна для проверки совместимости и диагностики.
Версия прикладной конфигурации, заданная разработчиком в конфигураторе. Нужна для контроля обновлений решения.
Внутреннее имя конфигурации, например БухгалтерияПредприятия. Полезно для определения, в каком решении выполняется код.
Версия платформы без запуска кода 1С
Не всегда есть возможность выполнить код внутри информационной базы: например, нужно узнать, какие платформы установлены на компьютере или сервере, до запуска 1С. Для этого есть несколько внешних способов.
Каталог установки
Платформа 1С устанавливается в каталог C:\Program Files\1cv8\ (для 64-разрядной версии) или C:\Program Files (x86)\1cv8\. Каждая установленная версия лежит в отдельной подпапке, имя которой и есть номер версии: 8.3.22.1750, 8.3.24.1467 и так далее. Перечислив подкаталоги, вы получите полный список установленных релизов.
Командная строка и PowerShell
Get-ChildItem "C:\Program Files\1cv8" -Directory | Select-Object -ExpandProperty NameАльтернатива — прочитать версию конкретного исполняемого файла через свойства файла:
(Get-Item "C:\Program Files\1cv8\8.3.22.1750\bin\1cv8.exe").VersionInfo.FileVersionРеестр Windows
Информация об установленных версиях также присутствует в реестре в ветках uninstall (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall и аналогичной для 32-разрядных приложений), где у записей 1С есть поле DisplayVersion. Этот способ удобен для скриптов инвентаризации парка машин.
Версия через COM-соединение
Если внешнее приложение подключается к 1С через COM-объект V83.COMConnector, версию платформы можно уточнить через свойства полученного соединения. После установки соединения доступен тот же объект системной информации через метод NewObject:
Set Connector = CreateObject("V83.COMConnector")
Set Conn = Connector.Connect("File=""C:\Bases\Trade"";")
Set SysInfo = Conn.NewObject("СистемнаяИнформация")
MsgBox SysInfo.ВерсияПриложенияОграничение способа: COM-соединение работает только в Windows, требует зарегистрированного COM-коннектора нужной разрядности и права на подключение к базе. Для линуксовых серверов этот путь неприменим — там ориентируйтесь на каталог установки /opt/1cv8/ или запросы к серверу администрирования.
Версия сервера через консоль и RAS
В клиент-серверном варианте версию сервера 1С видно в консоли администрирования кластеров: в свойствах кластера отображается полный номер релиза. Программно ту же информацию можно получить через утилиту администрирования rac:
rac cluster listВывод команды содержит поле version с версией кластера. Утилита rac входит в состав сервера 1С и расположена в каталоге bin соответствующей версии платформы. Для автоматизации удобно разбирать её вывод в скриптах мониторинга.
Учтите, что в кластере с несколькими рабочими серверами все они должны работать на одной версии платформы. Если версии различаются (например, в процессе поэтапного обновления), запрос к разным узлам может вернуть разные значения — это нормальное промежуточное состояние, но его нужно завершить как можно скорее.
Проверка совместимости: практический сценарий
Типовая задача — внешняя обработка или расширение должны работать только на платформе не ниже определённого релиза, потому что используют механизмы, появившиеся в нём. Правильный подход — проверять версию при подключении и выдавать понятное сообщение вместо падения с ошибкой вызова несуществующего метода.
- 1Определите минимальную требуемую версию платформы по документации к используемым механизмам.
- 2В модуле обработки или при создании расширения получите СистемнаяИнформация.ВерсияПриложения.
- 3Сравните версии по компонентам (функция из раздела выше), а не строковым сравнением.
- 4При несоответствии выведите пользователю сообщение с текущей и требуемой версией и прервите инициализацию.
- 5Запишите факт проверки в журнал регистрации для последующей диагностики.
Такое сообщение экономит часы диагностики: вместо непонятной ошибки «Метод объекта не обнаружен» пользователь сразу видит, что нужно обновить платформу, и знает до какой версии.
Как проверить, что вы получили правильную версию
После получения версии программно сверьте её с независимым источником: откройте «О программе» в клиентском приложении (меню «Сервис» или значок информации в зависимости от интерфейса) и сравните номер. Для сервера сверьтесь с консолью кластера. Совпадение подтверждает, что код читает данные той среды, которую вы контролируете.
Как проверить результат
Номер из кода полностью совпадает с отображаемым в клиенте
Номера различаются — код выполняется в другом контексте (сервер вместо клиента)
Четыре числовых компонента через точку, например 8.3.22.1750
Пустая строка или неожиданный формат — проверьте, что читаете именно ВерсияПриложения
Серверная процедура возвращает версию, совпадающую с консолью кластера
Версия отличается от консоли — возможно, запрос попал на другой рабочий сервер
FAQ
Можно ли узнать версию платформы в веб-клиенте?
Да. Объект СистемнаяИнформация доступен и в веб-клиенте, свойство ВерсияПриложения возвращает версию той платформы, которая обслуживает сеанс (то есть серверную в клиент-серверном варианте или версию веб-сервера публикации). Код не требует изменений.
Почему ВерсияПриложения на клиенте и на сервере различаются?
Клиентское приложение и сервер 1С — разные программные компоненты, которые могут быть установлены из разных релизов, хотя работа на разных версиях не рекомендуется и часто блокируется. Получите обе версии отдельно: в клиентской процедуре — клиентскую, в серверной — серверную.
Как узнать разрядность платформы программно?
Через тот же объект СистемнаяИнформация: свойство ТипПлатформы возвращает значение вида «Windows x86-64» или «Linux x86-64», из которого видна разрядность и операционная система среды исполнения.
Можно ли получить версию платформы из файловой базы без её запуска?
Версия платформы не хранится в файле базы как доступное свойство — файл 1Cv8.1CD содержит данные и метаданные конфигурации, а не версию среды. Версию определяют по установленным платформам на компьютере (каталог 1cv8) или по привязке базы в списке ibases.v8i.
Чем отличается номер версии 8.3.22 от 8.3.24?
Это разные релизные линейки платформы внутри редакции 8.3. Каждая линейка получает собственные обновления (четвёртое число — номер сборки). Новые линейки добавляют функциональность и могут менять требования к режиму совместимости конфигураций.
Как массово собрать версии платформ на множестве компьютеров?
Используйте скрипт PowerShell, перечисляющий подкаталоги C:\Program Files\1cv8 и C:\Program Files (x86)\1cv8, запущенный удалённо или через групповые политики. Это надёжнее опроса реестра, так как показывает фактически установленные файлы.
Что важно запомнить
Версию платформы внутри кода 1С получают через Новый СистемнаяИнформация → ВерсияПриложения, версию конфигурации — через Метаданные.Версия. Сравнивайте версии по числовым компонентам, учитывайте разницу контекстов клиента и сервера, а без запуска 1С ориентируйтесь на каталог установки, реестр или утилиту rac.