При работе в среде разработки «1С:Предприятие» программисты и начинающие специалисты часто сталкиваются с аппаратной или программной несовместимостью версий платформы и файлов конфигураций. Типичный сценарий: при попытке открыть присланную учебную базу или файл конфигурации .cf система выдает критическую ошибку: «Для открытия конфигурации требуется релиз не ниже 8.3.14» (или любой другой более свежий релиз, например, 8.3.20, 8.3.24 и т.д.).
В этой статье мы подробно разберем, почему возникает данная проблема, как правильно обновить учебную платформу до актуального состояния, что такое современная комьюнити-лицензия разработчика, а также рассмотрим технические хитрости для обхода проверки совместимости «под капотом» системы.
Прежде чем переходить к практическим шагам решения, давайте проанализируем ситуацию. Платформа «1С:Предприятие» имеет четкое разделение на технологическую платформу (программную оболочку) и прикладное решение (конфигурацию). Каждая конфигурация имеет свойство «Режим совместимости». Этот параметр указывает, с какими минимальными возможностями платформы может работать данная структура метаданных.
Если конфигурация была разработана или изменена на платформе версии 8.3.14 с отключенным или установленным в значение Версия 8.3.14 режимом совместимости, то запустить ее на старой платформе (например, учебной версии 8.3.8) стандартными средствами не получится. Платформа 8.3.8 просто «не знает» о механизмах, функциях и объектах метаданных, которые были внедрены в более поздних версиях. Пытаясь защитить базу данных от повреждения и непредсказуемого поведения, 1С блокирует ее запуск.
Рассмотрим по шагам все возможные пути решения этой проблемы, начиная от самых простых и легальных и заканчивая сложными техническими манипуляциями для разработчиков.
Многие начинающие программисты ошибочно полагают, что учебная версия платформы «застыла» на релизе многолетней давности. На самом деле фирма «1С» регулярно выпускает обновленные сборки учебных платформ. Если на момент обсуждения на форумах актуальной была версия 8.3.16, то сегодня для скачивания доступны версии из ветки 8.3.27 и новее.
Выполним процедуру обновления учебной платформы:
После установки новой версии платформы попробуем запустить Конфигуратор и открыть нашу базу. Ошибка должна исчезнуть, так как релиз вашей учебной платформы теперь превышает требуемый минимум.
Если вы планируете серьезно заниматься программированием в среде 1С, классическая учебная версия быстро станет для вас слишком тесной. В ней действуют жесткие ограничения: объем базы данных сильно урезан, невозможно распечатать документы, заблокирована работа с веб-сервисами, расширениями конфигурации и механизмами распределенных баз данных.
Вместо покупки дорогостоящих коммерческих ключей воспользуемся современным легальным инструментом — комьюнити-лицензией разработчика. Этот механизм доступен для платформы версии 8.3.23 и новее.
Разберем процесс получения комьюнити-лицензии:
Важное преимущество: Комьюнити-лицензия снимает абсолютно все технические ограничения учебной версии. Вы сможете разворачивать клиент-серверные варианты баз (SQL), тестировать интеграцию через HTTP и SOAP, использовать современные расширения конфигурации и полноценно вести разработку. Единственное ограничение — данную лицензию юридически запрещено использовать для реального коммерческого учета организации.
Что делать, если у вас физически нет возможности установить новую платформу, а открыть присланную конфигурацию нужно «здесь и сейчас»? Мы можем принудительно заставить старую платформу открыть файл конфигурации, снизив внутренние системные требования самого файла.
Этот способ сработает только в том случае, если в присланной конфигурации физически не используются новейшие объекты метаданных (например, новые типы реквизитов, интеграции или функции), которые старая платформа не сможет интерпретировать.
Рассмотрим по шагам процесс изменения требований конфигурации:
.cf (например, бесплатной утилитой v8unpack).Configuration.xml.<CompatibilityMode>Version8_3_14</CompatibilityMode> или содержит теги вида <RequiredVersion>8.3.14</RequiredVersion>.Version8_3_14 на Version8_3_8. Пример структуры метаданных в файле:
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.1/data/core" xmlns:xr="http://v8.1c.ru/8.1/data/enterprise/current-config">
<Configuration uuid="00000000-0000-0000-0000-000000000000">
<Properties>
<Name>УчебнаяКонфигурация</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Учебная конфигурация</v8:content>
</v8:item>
</Synonym>
<Comment/>
<CompatibilityMode>Version8_3_8</CompatibilityMode>
</Properties>
</Configuration>
</MetaDataObject>
Configuration.xml..cf при помощи утилиты сборки или загрузим измененные файлы XML обратно в пустую базу через пункт меню Конфигурация -> Загрузить конфигурацию из файлов... (если запуск конфигуратора старой платформы стал возможен).Иногда платформа блокирует запуск файловой базы данных еще на этапе инициализации файла .1CD. В этом случае система даже не начинает считывать конфигурацию, а сразу сообщает, что версия формата базы или требуемая версия платформы не соответствуют установленной программе.
Внутри файла базы данных формата SQLite/1CD хранится служебная таблица с именем IBVersion. В ней присутствует специальное поле — PlatformVersionReq, которое и хранит жесткие требования к платформе.
Для решения проблемы выполним следующие действия:
1Cv8.1CD. Любые низкоуровневые манипуляции с базой данных сопряжены с риском безвозвратной потери данных!IBVersion.PlatformVersionReq. Там будет указана строка с требованием к платформе (например, 8.3.14.0).8.3.8.0).В современных типовых конфигурациях 1С (особенно построенных на базе Библиотеки Стандартных Подсистем — БСП версии 3.1.9 и новее) встроен механизм программного контроля используемой платформы. Даже если вы успешно запустили базу данных на старой платформе, программный код БСП при старте может обратиться к своим внутренним константам, сверить текущую версию платформы с рекомендуемой и аварийно завершить работу приложения.
Проанализируем программный код контроля версий. Обычно за эту проверку отвечает модуль ОбщегоНазначения и его функция инициализации параметров базовой функциональности.
Чтобы обойти это поведение, не изменяя саму основную конфигурацию (чтобы оставить её на поддержке), мы можем написать небольшое расширение конфигурации:
ОбщегоНазначения.&Вместо. Нам необходимо принудительно вернуть структуру параметров, где минимально необходимая версия будет соответствовать нашей текущей платформе.Пример программного кода для модуля расширения:
&Вместо("ОбщиеПараметрыБазовойФункциональности")
Функция Мой_ОбщиеПараметрыБазовойФункциональности()
// Получаем стандартную структуру параметров конфигурации
Параметры = ПродолжитьВызов();
// Принудительно подменяем требования к платформе на более низкие
Параметры.МинимальноНеобходимаяВерсияПлатформы = "8.3.8";
Параметры.РекомендуемаяВерсияПлатформы = "8.3.8";
Возврат Параметры;
КонецФункции
После применения данного расширения конфигурация при запуске в режиме «1С:Предприятие» будет считать, что запущенная платформа 8.3.8 полностью удовлетворяет всем системным требованиям БСП, и не станет блокировать вход пользователя.
Мы подробно изучили все доступные способы решения проблемы несовместимости конфигурации и релиза платформы 1С. Резюмируя, выделим наиболее оптимальный алгоритм действий:
IBVersion с помощью сторонних утилит.Используйте эти методы правильно, всегда делайте резервные копии баз данных перед началом манипуляций и развивайте свои навыки разработки в экосистеме «1С:Предприятие»!