При администрировании и разработке на платформе 1С:Предприятие специалисты часто сталкиваются с необходимостью обновления версии платформы при сохранении стабильности работы конфигурации. Одной из самых запутанных ситуаций является поиск режима совместимости Версия 8.2.16 в последних релизах ветки 8.2 (например, 8.2.19). Рассмотрим, почему этот режим невозможно найти в привычном месте, и разберем алгоритм безопасного перехода.
Проанализируем ситуацию, с которой столкнулся автор темы: база работает на платформе 8.2.19 с установленным режимом совместимости 8.2.13. При попытке изменить этот параметр в конфигураторе той же версии 8.2, пункт 8.2.16 попросту отсутствует в выпадающем списке. Это вызывает логичное недоумение, ведь 8.2.19 по логике вещей должна включать в себя все возможности предыдущих минорных релизов.
Разберем этот парадокс. Режим совместимости Версия 8.2.16 фактически не является частью платформы 8.2. Он был разработан и внедрен компанией 1С начиная с версии платформы 8.3.1. Его основное предназначение — служить технологическим «мостиком» для конфигураций, которые переводятся на платформу 8.3, но еще не готовы к использованию всех ее нововведений. Таким образом, работая исключительно в конфигураторе версии 8.2, вы никогда не увидите этот режим в списке. Чтобы он стал доступен, информационную базу необходимо открыть конфигуратором версии 8.3.
Переход на режим 8.2.16 (который обычно выполняется одновременно с миграцией на 8.3) — это не просто смена цифры в свойствах конфигурации. Это включение целого ряда механизмов, которые меняют поведение системы. Рассмотрим подробнее, к чему стоит подготовиться:
Основную таблицу в произвольных запросах динамических списков. Если раньше платформа могла «прощать» неоднозначности, то теперь это может привести к невозможности редактирования данных в списке или к ошибкам при выполнении стандартных команд (изменить, пометить на удаление).Иногда возникает соблазн сразу установить режим совместимости в значение Не использовать при переходе на 8.3. Проанализируем последствия такого решения:
Во-первых, интерфейс «Такси» станет интерфейсом по умолчанию. Это потребует полной переработки всех форм, если вы хотите, чтобы они выглядели современно и удобно. Во-вторых, изменится объектная модель. Те методы и свойства, которые имели пометку «устаревшие» (obsolete) в 8.2, могут быть полностью удалены или изменить свою логику.
В-третьих, произойдет переход на новую систему блокировок. Если в режиме 8.2.16 еще допускалось использование автоматических блокировок в некоторых случаях, то без совместимости платформа будет требовать исключительно управляемые блокировки. Это может привести к потере целостности данных, если код не был заранее адаптирован.
Рассмотрим пример кода, который может вести себя по-разному в зависимости от режима:
// В старых режимах совместимости установка блокировки могла происходить автоматически
// При переходе на 8.3 (без совместимости) необходимо явно описывать блокировку
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиТоваров");
ЭлементБлокировки.УстановитьЗначение("Склад", СкладСсылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Разберем по шагам, как правильно выполнить задачу, описанную автором темы, учитывая все технические нюансы:
Тестирование и исправление.Режим совместимости теперь будет доступен вариант Версия 8.2.16. Выберите его.Интересный нюанс, отмеченный участниками обсуждения: если в платформе 8.2 у базы вообще не установлен режим совместимости (стоит Не использовать), то при первом открытии и конвертации этой базы платформой 8.3, режим совместимости автоматически установится в значение Версия 8.2.16. Это сделано специально для того, чтобы база «не сломалась» от резкого перехода на механизмы 8.3.
Понимание того, как работают режимы совместимости, позволяет планировать миграцию крупных систем. Режим 8.2.16 — это стабильная «гавань» внутри платформы 8.3. Он позволяет пользоваться преимуществами новой платформы (например, повышенной производительностью, поддержкой новых ОС или 64-битных серверов), сохраняя при этом старый программный код и интерфейс 8.2.
Таким образом, мы выяснили, что автор темы не видел нужного режима просто потому, что пытался найти его в «старом» конфигураторе. Использование 8.2.16 — это грамотный промежуточный этап, позволяющий избежать множества ошибок, которые неизбежно возникают при прямом переходе с 8.2 на «чистую» 8.3.