При обновлении типовых конфигураций 1С (таких как 1С:Бухгалтерия 3.0, ЗУП 3.1 или ERP) специалисты часто сталкиваются с ситуацией, когда новый релиз программы отказывается запускаться на текущей версии платформы. Система выдает критическую ошибку, сообщая, что для работы требуется версия платформы не ниже определенного значения (например, 8.3.18.1208). В условиях, когда парк машин огромен или серверная инфраструктура требует длительного согласования обновлений, оперативно обновить платформу бывает невозможно. Разберем, как технически реализован этот контроль и как его можно временно обойти с помощью расширения, а также проанализируем связанные с этим риски.
В современных конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), проверка версии платформы происходит программно при старте системы. Проанализируем ситуацию: конфигурация обращается к своим внутренним параметрам, где жестко прописаны минимальные требования. Если текущая СистемнаяИнформация.ВерсияПриложения ниже указанной в коде, выполнение прерывается с выводом предупреждения.
Основная точка инициализации этих параметров находится в переопределяемом модуле. Рассмотрим подробнее, как именно мы можем вмешаться в этот процесс, не снимая основную конфигурацию с поддержки.
Самый быстрый и безопасный (с точки зрения сохранения поддержки) способ — это использование механизма расширений. Мы перехватим процедуру, отвечающую за установку общих параметров базовой функциональности, и подменим требуемую версию на ту, которая фактически установлена у пользователя.
Выполним следующие шаги:
ОбщегоНазначенияПереопределяемый.&После.Рассмотрим пример кода, который необходимо вставить в расширение:
&После("ПриОпределенииОбщихПараметровБазовойФункциональности")
Процедура хц_ПриОпределенииОбщихПараметровБазовойФункциональности(ОбщиеПараметры) Экспорт
// Получаем информацию о текущей запущенной платформе
СистемнаяИнформация = Новый СистемнаяИнформация;
ТекущаяВерсия = СистемнаяИнформация.ВерсияПриложения;
// Подменяем требования конфигурации на текущую версию платформы
ОбщиеПараметры.Вставить("МинимальнаяВерсияПлатформы", ТекущаяВерсия);
ОбщиеПараметры.Вставить("РекомендуемаяВерсияПлатформы", ТекущаяВерсия);
КонецПроцедуры
Важное уточнение: в свойствах самого расширения необходимо обратить внимание на поле Режим совместимости. Если конфигурация требует платформу 8.3.21, а ваше расширение создано в режиме совместимости 8.3.14, оно может просто не подключиться. Рекомендуется устанавливать в расширении значение "Не использовать" или соответствовать версии основной конфигурации.
Иногда простой подмены в ОбщегоНазначенияПереопределяемый недостаточно, так как отдельные подсистемы БСП или код самой платформы могут выполнять проверку в других местах. Проанализируем ситуацию, если база все равно не запускается. Выясним причину, выполнив глобальный поиск по строке "МинимальнаяВерсияПлатформы".
Часто фактическая проверка выполняется методом СтандартныеПодсистемыСервер.ПроверитьМинимальноНеобходимуюВерсиюПлатформы(). В критических случаях программисты используют аннотацию &Вместо для этого метода, чтобы он просто возвращал управление без вызова исключения Отказ = Истина. Для проверки корректности работы методов расширений с аннотациями после обновления конфигурации можно использовать инструмент для проверки методов расширений.
Выясним, применим ли этот метод для всех типов лицензий. В базовых версиях 1С использование расширений сильно ограничено или полностью заблокировано. Поскольку вносить изменения в код базовой конфигурации нельзя, обойти проверку платформы в них практически невозможно — система контролирует целостность кода на уровне лицензионной защиты.
Для системных администраторов, обслуживающих десятки и сотни баз, ручное внесение расширений нецелесообразно. В таких случаях эффективно использовать специализированное ПО, например, Обновлятор-1С, который позволяет массово подключать расширения во все базы списка. Это позволяет быстро "оживить" систему после неудачного автоматического обновления метаданных. При обслуживании инфраструктуры с несколькими базами упростить процесс помогает программа для автоматического обновления и обслуживания баз 1С.
Необходимо понимать, что повышение требований к платформе — это не всегда прихоть разработчиков 1С. Проанализируем технические причины, по которым конфигурация может не работать на старой версии:
Метод объекта не обнаружен в процессе работы пользователя.1cv8.exe, что потенциально ведет к порче данных.Резюме: Данное решение следует рассматривать исключительно как временный "костыль", позволяющий устранить простой в работе организации. Сразу после восстановления работоспособности необходимо запланировать полноценное обновление платформы 1С на всех серверах и рабочих станциях, после чего данное расширение должно быть удалено.