При работе с учебной версией платформы «1С:Предприятие 8.3» пользователи часто сталкиваются с навязчивым окном, предлагающим обновить версию программы. Попытки решить эту задачу «изнутри», написав какой-либо программный код, изначально обречены на провал. Давайте разберем по шагам, как устроена система проверки версий, почему операторы Возврат или Соответствие здесь бесполезны и как правильно выполнить техническое обновление платформы.
Для начала проанализируем ситуацию: почему система вообще выдает подобное сообщение? В 1С существует жесткая связь между версией платформы (движком) и версией конфигурации (базой данных). Рассмотрим основные сценарии:
1Cv8.1CD) хранит внутри себя номер минимально необходимой версии платформы. Если вы хотя бы один раз открыли базу более новой версией, она автоматически прописывает это требование. При попытке запустить её на старом «движке» система выдаст предупреждение.1cestart.exe) анализирует установленные в системе версии и настройки в файлах 1cestart.cfg. Если обнаружено, что текущая версия устарела относительно требований конфигурации, появится запрос.РежимСовместимости. Если он установлен в значение, превышающее возможности вашей текущей учебной версии, запуск будет невозможен без обновления.Важно понимать: Проверка версии происходит в момент инициализации ядра системы, то есть еще ДО того, как начнет выполняться любой программный код модулей (включая ПриНачалеРаботыСистемы). Поэтому использовать операторы языка 1С для отмены этого действия невозможно.
В обсуждениях часто возникают вопросы о том, можно ли применить конкретные функции языка для обхода проверки. Выясним причину их бесполезности в данном контексте:
Оператор Возврат служит для выхода из функции или процедуры. Даже если вы вставите его в самом начале глобального модуля, система сначала проверит, совпадает ли версия платформы с требованиями базы. Если нет — код просто не получит управления.
Объект Соответствие (аналог Map в других языках) — это коллекция значений «ключ-значение». Он используется для обработки данных внутри программы. Платформа не хранит настройки своей версии в объектах типа Соответствие, к которым программист имеет доступ из кода конфигурации.
Рассмотрим пример кода, который часто ошибочно пытаются применить новички (или который подсовывают в качестве шутки на форумах):
Функция ПроверитьВерсию(ТекущаяВерсия)
// Этот код никогда не выполнится, если платформа заблокирует запуск базы
Если ТекущаяВерсия < "8.3.20" Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
Этот код работает на уровне прикладной логики, а проверка версии платформы — на системном уровне ОС.
Поскольку «обновления» платформы как инкрементального патча не существует, процесс перехода на новую версию всегда выглядит как установка новой программы. Разберем по шагам правильную последовательность действий:
1Cv8.1CD из папки вашей базы. Это застрахует вас от повреждения данных при конвертации в новый формат.setup.exe из распакованного архива. В процессе установки платформа зарегистрирует необходимые компоненты.Если вы хотите управлять поведением программы запуска без написания кода, следует обратить внимание на конфигурационные файлы. Проанализируем содержимое файла 1cestart.cfg, который обычно находится в папке %AppData%\1C\1CEStart.
В этом файле можно принудительно указать, какую версию платформы использовать для конкретных баз, используя параметры командной строки. Например, ключ /V позволяет задать конкретный релиз:
"C:\Program Files\1cv8\common\1cestart.exe" /F "C:\MyBase" /V "8.3.18.1300"
Однако помните, что учебная версия имеет жесткие ограничения, и попытка запустить в ней базу, созданную в коммерческой версии (или обновленную до высокого релиза), может привести к ошибке «Файл базы данных поврежден», так как формат таблиц может отличаться.
Подведем итог нашему исследованию ситуации:
Помните, что работа в учебной версии подразумевает соблюдение лицензионного соглашения. Попытки запускать в ней «тяжелые» коммерческие конфигурации путем обхода системных проверок могут привести к непредсказуемой потере данных.