Как понизить требуемый релиз платформы для 1С:Бухгалтерия предприятия 3.0 при помощи расширения

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

В процессе эксплуатации 1С:Бухгалтерия предприятия (БП 3.0) специалисты часто сталкиваются с ситуацией, когда очередной релиз конфигурации требует обновления платформы до конкретной сборки. Например, конфигурация версии 3.0.107.37 может затребовать платформу 8.3.18.1741, в то время как на сервере установлена стабильная версия 8.3.18.1334. Обновление платформы на крупном предприятии — это всегда риск и трудозатраты, поэтому возникает вопрос: можно ли временно обойти это ограничение? Рассмотрим, как это сделать программно и к каким последствиям это может привести.

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

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

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

Решение проблемы через расширение

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


&Вместо("ПараметрыПроверкиВерсииПлатформыПриЗапуске")
Функция AdBlock_ПараметрыПроверкиВерсииПлатформыПриЗапуске()
    
    // Получаем стандартный результат проверки через вызов основной функции
    Результат = ПродолжитьВызов();
    
    // Принудительно устанавливаем флаг Продолжить в ИСТИНА.
    // Это позволит системе считать, что проверка пройдена успешно,
    // даже если номер сборки платформы ниже требуемого.
    Результат.Продолжить = ИСТИНА;
    
    Возврат Результат;
КонецФункции

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

Где еще хранятся требования к релизу

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

  1. Общий модуль ОбновлениеИнформационнойБазы: Здесь находится функция МинимальнаяВерсияПлатформы(). Если вы посмотрите ее содержимое через конфигуратор, вы увидите перечисление всех допустимых веток платформ, например: 8.3.14.1694; 8.3.16.1814; 8.3.18.1208.
  2. Файл обновления v8cscdsc.xml: Внутри архива с обновлением (.zip), который скачивается через "Обновлятор" или портал 1С, находится XML-файл с метаданными. В нем четко прописан атрибут platform. Если ваша текущая платформа ниже указанной в этом файле, конфигуратор может выдать ошибку еще на этапе применения обновления .cfu.
  3. Константы и кэш БСП: Параметры работы программы часто кэшируются в двоичных данных системных констант. Если один раз система зафиксировала несоответствие, она может блокировать запуск даже после удаления расширения, пока не будет очищен кэш или обновлена информация в справочнике ИдентификаторыОбъектовМетаданных.

Риски и "Бомба замедленного действия"

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

Смена режима совместимости: Это самая опасная часть. В определенные моменты (например, при переходе БП 3.0 на релизы ветки 3.0.105) разработчики поднимают режим совместимости конфигурации, например, с 8.3.14 на 8.3.16 или выше. Если платформа не поддерживает новые механизмы, заложенные в этом режиме, вы рискуете получить "невосстановимую ошибку базы данных".

Рассмотрим конкретные проблемы, возникающие при работе на старой платформе с новым режимом совместимости:

Практические рекомендации

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

  1. Всегда делайте бэкап: Перед применением обновления на "неродной" платформе создайте полную копию базы. Если после обновления возникнет "невосстановимая ошибка", единственным выходом будет откат.
  2. Тестирование ТИИ: После обновления обязательно запустите "Тестирование и исправление" (ТИИ) с включенными пунктами "Реструктуризация таблиц" и "Пересчет итогов". Если ТИИ пройдет без ошибок на вашей текущей платформе, шансы на стабильную работу повышаются.
  3. Избегайте "проблемных" веток: Как отмечают эксперты, 18-я ветка платформ (особенно ранние сборки) была крайне нестабильной. Если ваша конфигурация требует 8.3.18.1741, а вы сидите на .1334, лучше рассмотреть переход сразу на стабильные сборки 20-й ветки (например, 8.3.20 и выше), где исправлено большинство критических ошибок работы с памятью.
  4. Редактирование v8cscdsc.xml: В некоторых случаях, чтобы конфигуратор позволил применить обновление, можно распаковать архив обновления, поправить номер платформы в v8cscdsc.xml на ваш текущий, запаковать обратно и указать этот файл источнику обновления.

Подведем итог: использование расширения для обхода проверки версии платформы — это эффективный "костыль" для экстренных ситуаций. Однако помните, что это ответственность программиста. Если база данных БП 3.0 активно используется многими пользователями, безопаснее будет один раз обновить платформу до рекомендуемой, чем ежедневно рисковать целостностью учетных данных.

← На главную