В процессе эксплуатации 1С:Бухгалтерия предприятия (БП 3.0) специалисты часто сталкиваются с ситуацией, когда очередной релиз конфигурации требует обновления платформы до конкретной сборки. Например, конфигурация версии 3.0.107.37 может затребовать платформу 8.3.18.1741, в то время как на сервере установлена стабильная версия 8.3.18.1334. Обновление платформы на крупном предприятии — это всегда риск и трудозатраты, поэтому возникает вопрос: можно ли временно обойти это ограничение? Рассмотрим, как это сделать программно и к каким последствиям это может привести.
Прежде чем переходить к написанию кода, разберем, как именно программа понимает, что платформа "устарела". В типовых конфигурациях на базе БСП (Библиотеки стандартных подсистем) проверка выполняется в момент запуска системы в режиме "Предприятие". Основная логика сосредоточена в общем модуле ПолучениеОбновленийПрограммыВызовСервера. Программа вызывает функцию, которая возвращает структуру параметров проверки, включая флаг, позволяющий или запрещающий дальнейшую работу.
Проанализируем ситуацию: если мы просто проигнорируем предупреждение в диалоговом окне (если оно позволяет это сделать), программа может пустить нас в базу. Однако чаще всего система блокирует вход на уровне кода. Чтобы это изменить, нам потребуется создать расширение конфигурации.
Для обхода блокировки нам необходимо заимствовать в расширение функцию ПараметрыПроверкиВерсииПлатформыПриЗапуске. Мы воспользуемся аннотацией &Вместо, чтобы переопределить логику возвращаемого результата. Рассмотрим пример кода, который позволит нам продолжить работу даже на старом релизе платформы:
&Вместо("ПараметрыПроверкиВерсииПлатформыПриЗапуске")
Функция AdBlock_ПараметрыПроверкиВерсииПлатформыПриЗапуске()
// Получаем стандартный результат проверки через вызов основной функции
Результат = ПродолжитьВызов();
// Принудительно устанавливаем флаг Продолжить в ИСТИНА.
// Это позволит системе считать, что проверка пройдена успешно,
// даже если номер сборки платформы ниже требуемого.
Результат.Продолжить = ИСТИНА;
Возврат Результат;
КонецФункции
После подключения такого расширения критическая ошибка при запуске сменится на обычное предупреждение или вовсе исчезнет, позволяя пользователям работать с информационной базой. Однако это лишь видимая часть решения. Выясним причину, по которой разработчики 1С вводят такие жесткие ограничения.
Важно понимать, что информация о минимальной версии платформы зашита не только в программных модулях. Разберем основные места, где конфигурация "хранит" эти данные:
МинимальнаяВерсияПлатформы(). Если вы посмотрите ее содержимое через конфигуратор, вы увидите перечисление всех допустимых веток платформ, например: 8.3.14.1694; 8.3.16.1814; 8.3.18.1208..zip), который скачивается через "Обновлятор" или портал 1С, находится XML-файл с метаданными. В нем четко прописан атрибут platform. Если ваша текущая платформа ниже указанной в этом файле, конфигуратор может выдать ошибку еще на этапе применения обновления .cfu.ИдентификаторыОбъектовМетаданных.Многие системные администраторы считают, что повышение требований к релизу — это лишь маркетинговый ход или попытка заставить использовать новые "фишки". Проанализируем техническую сторону вопроса, чтобы понять, почему это не так.
Смена режима совместимости: Это самая опасная часть. В определенные моменты (например, при переходе БП 3.0 на релизы ветки 3.0.105) разработчики поднимают режим совместимости конфигурации, например, с 8.3.14 на 8.3.16 или выше. Если платформа не поддерживает новые механизмы, заложенные в этом режиме, вы рискуете получить "невосстановимую ошибку базы данных".
Рассмотрим конкретные проблемы, возникающие при работе на старой платформе с новым режимом совместимости:
8.3.18 вызывали утечки памяти или аварийное завершение процесса rphost.Если вы все же решили использовать метод с понижением требований, придерживайтесь следующих правил безопасности:
8.3.18.1741, а вы сидите на .1334, лучше рассмотреть переход сразу на стабильные сборки 20-й ветки (например, 8.3.20 и выше), где исправлено большинство критических ошибок работы с памятью.v8cscdsc.xml на ваш текущий, запаковать обратно и указать этот файл источнику обновления.Подведем итог: использование расширения для обхода проверки версии платформы — это эффективный "костыль" для экстренных ситуаций. Однако помните, что это ответственность программиста. Если база данных БП 3.0 активно используется многими пользователями, безопаснее будет один раз обновить платформу до рекомендуемой, чем ежедневно рисковать целостностью учетных данных.