Как обойти проверку минимальной версии платформы в 1С при запуске конфигурации

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

При обновлении типовых конфигураций 1С (таких как 1С:Бухгалтерия 3.0, ЗУП 3.1 или ERP) специалисты часто сталкиваются с ситуацией, когда новый релиз программы отказывается запускаться на текущей версии платформы. Система выдает критическую ошибку, сообщая, что для работы требуется версия платформы не ниже определенного значения (например, 8.3.18.1208). В условиях, когда парк машин огромен или серверная инфраструктура требует длительного согласования обновлений, оперативно обновить платформу бывает невозможно. Разберем, как технически реализован этот контроль и как его можно временно обойти с помощью расширения, а также проанализируем связанные с этим риски.

Механизм контроля версии платформы в БСП

В современных конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), проверка версии платформы происходит программно при старте системы. Проанализируем ситуацию: конфигурация обращается к своим внутренним параметрам, где жестко прописаны минимальные требования. Если текущая СистемнаяИнформация.ВерсияПриложения ниже указанной в коде, выполнение прерывается с выводом предупреждения.

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

Решение проблемы через расширение конфигурации

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

Выполним следующие шаги:

  1. Откроем Конфигуратор и создадим новое расширение (или используем существующее).
  2. Найдем в метаданных основной конфигурации общий модуль ОбщегоНазначенияПереопределяемый.
  3. Добавим этот модуль в расширение.
  4. В модуле расширения создадим процедуру-перехватчик с аннотацией &После.

Рассмотрим пример кода, который необходимо вставить в расширение:


&После("ПриОпределенииОбщихПараметровБазовойФункциональности")
Процедура хц_ПриОпределенииОбщихПараметровБазовойФункциональности(ОбщиеПараметры) Экспорт

    // Получаем информацию о текущей запущенной платформе
    СистемнаяИнформация = Новый СистемнаяИнформация;
    ТекущаяВерсия = СистемнаяИнформация.ВерсияПриложения;

    // Подменяем требования конфигурации на текущую версию платформы
    ОбщиеПараметры.Вставить("МинимальнаяВерсияПлатформы", ТекущаяВерсия);
    ОбщиеПараметры.Вставить("РекомендуемаяВерсияПлатформы", ТекущаяВерсия);
    
КонецПроцедуры

Важное уточнение: в свойствах самого расширения необходимо обратить внимание на поле Режим совместимости. Если конфигурация требует платформу 8.3.21, а ваше расширение создано в режиме совместимости 8.3.14, оно может просто не подключиться. Рекомендуется устанавливать в расширении значение "Не использовать" или соответствовать версии основной конфигурации.

Дополнительные точки контроля в коде

Иногда простой подмены в ОбщегоНазначенияПереопределяемый недостаточно, так как отдельные подсистемы БСП или код самой платформы могут выполнять проверку в других местах. Проанализируем ситуацию, если база все равно не запускается. Выясним причину, выполнив глобальный поиск по строке "МинимальнаяВерсияПлатформы".

Часто фактическая проверка выполняется методом СтандартныеПодсистемыСервер.ПроверитьМинимальноНеобходимуюВерсиюПлатформы(). В критических случаях программисты используют аннотацию &Вместо для этого метода, чтобы он просто возвращал управление без вызова исключения Отказ = Истина. Для проверки корректности работы методов расширений с аннотациями после обновления конфигурации можно использовать инструмент для проверки методов расширений.

Особенности для базовых версий и массового применения

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

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

Анализ рисков и возможных последствий

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

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

← На главную