В процессе сопровождения систем 1С специалисты часто сталкиваются с ситуацией, когда очередной релиз конфигурации (например, Бухгалтерия предприятия 3.0 или Управление торговлей 11) требует обязательного обновления технологической платформы. Однако на практике обновить платформу не всегда возможно оперативно из-за "привязки" стороннего ПО, специфических драйверов оборудования или особенностей серверной инфраструктуры. В этой статье мы подробно разберем, как можно решить проблему запуска актуальной конфигурации на старой платформе, и проанализируем риски такого подхода.
Прежде чем приступать к "взлому" программных проверок, рассмотрим наиболее правильный и безопасный метод. Технологическая платформа 1С спроектирована таким образом, что на одном компьютере (как на сервере, так и на клиентской рабочей станции) может быть установлено одновременно несколько разных версий. Проанализируем, как настроить систему для работы в таком режиме.
Для файлового варианта базы данных алгоритм действий следующий:
8.3.22.1709.Если мы работаем в клиент-серверном варианте, ситуация усложняется, но остается решаемой. Мы можем запустить несколько служб кластера серверов 1С разных версий на одном физическом сервере, разведя их по разным сетевым портам (например, стандартный 1540 для основной версии и 1640 для дополнительной). Это позволит запускать критичные базы на актуальной платформе, оставляя старые приложения на прежней версии.
Если по какой-то причине установка новой платформы категорически невозможна, рассмотрим технический способ отключения блокировки запуска. В современных типовых решениях, базирующихся на Библиотеке стандартных подсистем (БСП), проверка версии платформы жестко зашита в программном коде. Разберем по шагам, как локализовать и нейтрализовать эту проверку.
Во-первых, создадим резервную копию базы данных. Это критически важно, так как любые манипуляции с программным кодом ядра могут привести к непредсказуемым последствиям. После этого выполним следующие действия:
СтандартныеПодсистемыСервер.ПроверитьВерсиюПлатформы(). Именно она инициирует исключение, если текущий релиз 8.3 ниже требуемого.Рассмотрим пример кода, который может быть использован в расширении:
&Вместо("ПроверитьВерсиюПлатформы")
Процедура Расш1_ПроверитьВерсиюПлатформы()
// Мы сознательно игнорируем проверку,
// чтобы обеспечить запуск на старой платформе
Возврат;
КонецПроцедуры
Важно понимать, почему разработчики 1С повышают требования к платформе. Это не просто маркетинговый ход, а техническая необходимость. Разберем основные риски, с которыми мы можем столкнуться после успешного "обхода" проверки.
Отсутствие методов встроенного языка. Новые релизы конфигураций используют возможности, появившиеся только в последних версиях платформы. Например, если в коде Управление торговлей 11.5 используется новый метод работы со строками или специфическая функция работы с HTTPСоединение, которая появилась в 8.3.22, то при попытке выполнить этот код на платформе 8.3.21 система выдаст критическую ошибку Метод объекта не обнаружен.
Проблемы с ГУИД в запросах. В новых версиях платформы появилась возможность получать GUID ссылки прямо в тексте запроса. Если разработчики конфигурации применили эту возможность в новом отчете или обработке проведения, на старой платформе этот запрос просто не выполнится, что приведет к остановке бизнес-процесса.
Ошибки реструктуризации данных. При обновлении конфигурации платформа выполняет реструктуризацию таблиц в СУБД (SQL). Если логика формирования SQL-запросов в старой платформе не учитывает новые типы данных или индексы, заложенные в метаданных новой конфигурации, мы рискуем получить необратимое повреждение структуры базы данных.
Для системных администраторов рассмотрим еще один способ управления версиями — использование конфигурационного файла v8cfg.xml. Этот файл позволяет централизованно прописать правила запуска. Например, мы можем указать, что для всех баз, в названии которых есть определенная строка, должна использоваться строго заданная версия исполняемого файла 1cv8.exe. Это избавляет от необходимости вручную настраивать каждое рабочее место через меню "Изменить".
Выясним еще один важный момент: в свойствах корня конфигурации существует параметр Режим совместимости. Если при обновлении разработчики 1С подняли этот режим до уровня, который физически не поддерживается установленной платформой, база не откроется даже в режиме конфигуратора. В этом случае никакие расширения не помогут — запуск будет заблокирован на уровне ядра исполняемого файла. Единственным решением останется физическая установка новой версии платформы.
Подведем итог: попытка запустить обновленную 1С на старой платформе — это всегда "костыль", оправданный только в условиях крайней производственной необходимости. Мы рекомендуем использовать метод параллельной установки нескольких версий платформ, так как это гарантирует стабильность работы программного кода и сохранность данных в долгосрочной перспективе.