Как изменить режим совместимости в 1С:Бухгалтерии 2.0 и сохранить настройки при обновлении?

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

Конфигурация 1С:Бухгалтерия предприятия редакции 2.0 построена на архитектуре обычных форм платформы «1С:Предприятие 8.2» и переведена фирмой «1С» в режим ограниченной поддержки. По этой причине поставщик сохраняет в официальных файлах обновлений (.cfu) режим совместимости Версия 8.2.16.

Разберем ситуацию: если разработчику требуется применить функции платформы 8.3 (например, обращение к методам работы с предопределенными элементами через ИмяПредопределенныхДанных), то встроенный режим совместимости Версия 8.2.16 блокирует эти возможности на уровне синтаксиса. В этой статье проанализируем, как правильно отключить или изменить режим совместимости, сохранить настройки при последующих обновлениях и предотвратить нежелательные сбросы параметров.

Причина ограничения и изменение режима совместимости

Свойство ИмяПредопределенныхДанных и метод ИмяПредопределенногоДанного() были введены в платформе «1С:Предприятие 8.3» (начиная с режима совместимости Версия 8.3.3). Если база запускается на современной платформе 8.3, но в конфигурации установлен режим Версия 8.2.16, платформа на синтаксическом уровне запрещает использование этих функций.

Чтобы разрешить доступ к методам 8.3, требуется выполнить смену свойства корневого объекта конфигурации:

  1. Переведем конфигурацию в режим редактирования с сохранением поддержки.
  2. В окне свойств корня конфигурации найдем поле Режим совместимости.
  3. Установим значение Не использовать или требуемую версию (например, Версия 8.3.3 и выше).

Как сохранить измененный режим совместимости при обновлениях

Главная проблема при изменении режима совместимости в типовых и поддерживаемых конфигурациях заключается в процедуре накатывания очередных релизов. Поставщик в каждом файле обновления передает корень конфигурации с исходным режимом Версия 8.2.16.

Рассмотрим, как правильно выполнять обновление, чтобы измененное свойство корня не сбросилось:

  1. При обновлении через сравнение и объединение конфигураций перейдем в окно сравнения.
  2. Снимем флажок с корневого объекта конфигурации, чтобы правила обновления поставщика не заменяли настройки корня.
  3. Выполним объединение остальных объектов, сохранив собственный режим совместимости.

Программный контроль режимa совместимости при запуске

Чтобы исключить человеческий фактор, когда специалист при очередном обновлении случайно заменяет настройки корня и возвращает режим 8.2.16, настроим программную проверку. Разберем создание проверки при начале работы системы.

Добавим в модуль управляемого приложения (или модуль обычного приложения) код, проверяющий актуальное значение режима совместимости:


Процедура ПроверитьРежимСовместимости()
    
    #Если Клиент Тогда
        ТекущийРежим = Метаданные.РежимСовместимости;
        Если ТекущийРежим = Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_2_16 Тогда
            ПоказатьОшибку("Внимание! Режим совместимости конфигурации сбросился на 8.2.16 при обновлении! Обратитесь к администратору.");
        КонецЕсли;
    #КонецЕсли

КонецПроцедуры

Такой механизм выявит незапланированный сброс настроек сразу после запуска программы пользователями или при выполнении автотестов.

Риски и последствия смены режима совместимости

Проанализируем возможные технические риски перед отмене или повышении режима совместимости на рабочей базе «Бухгалтерии 2.0»:

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

2. Изменение работы языка запросов и транзакций: При отключении режима 8.2 меняются требования к строгости типов данных, обработке значений NULL, временным таблицам и механизмам автоматических блокировок.

3. Совместимость внешних обработок: Внешние печатные формы, отчеты и обработки, разработанные под стандарт 8.2, могут вызывать синтаксические и логические ошибки.

Альтернативные способы работы с предопределенными данными без смены режима

Если менять режим совместимости всей базы нежелательно из-за рисков реструктуризации, разберем проверенные способы обхода ограничения в коде на режиме 8.2:

Способ 1. Прямое обращение через менеджер объекта:

Для доступа к конкретным элементам применяют стандартное обращение к объектам:

Справочники.Номенклатура.Товары или ПланыСчетов.Хозрасчетный.Касса

Способ 2. Использование конструкций языка запросов:

В запросах сопоставление или получение ссылки на предопределенный элемент выполняют через функцию ЗНАЧЕНИЕ():

ГДЕ Ссылка = ЗНАЧЕНИЕ(Справочник.Номенклатура.Товары)

Способ 3. Получение списка через метаданные:

Считать структуру всех предопределенных элементов объекта метаданных можно с помощью коллекции метаданных:


Для Каждого ЭлементМетаданных Из Метаданные.Справочники.Номенклатура.Предопределенные Цикл
    ИмяПредопределенного = ЭлементМетаданных.Имя;
    // Логика обработки имени предопределенного элемента
КонецЦикла;

Способ 4. Использование регистра сведений или констант:

Для динамической связки логических ролей с элементами информационной базы без зависимости от внутренних имен platform 8.3 создают служебный регистр сведений или константы, где хранятся прямые ссылки на нужные справочники.

← На главную