Как перевести 1С:УПП 1.3 в режим совместимости 8.3 без критических ошибок?

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

Перевод крупной исторической конфигурации, такой как «1С:Управление производственным предприятием 1.3» (УПП), на современную платформу «1С:Предприятие 8.3» с повышением или полным отключением режима совместимости — задача нетривиальная. Многие разработчики боятся приступать к этому процессу, ожидая лавинообразного появления ошибок в самых непредсказуемых местах конфигурации. Однако на практике такой переход не только возможен, но и крайне необходим для использования новых механизмов платформы, таких как расширения конфигурации, мобильный клиент, внешние источники данных или интеграция с современными веб-сервисами.

В этой статье мы подробно разберем практический опыт разработчиков, успешно выполнивших эту процедуру. Мы проанализируем основные проблемы, с которыми вам придется столкнуться, и пошагово рассмотрим способы их решения.

Зачем повышать режим совместимости в УПП 1.3?

Типовая конфигурация УПП 1.3 по умолчанию поставляется с режимом совместимости Версия 8.2.13 или Версия 8.2.16. Оставаясь на этих настройках, вы лишаете себя множества современных инструментов автоматизации. Рассмотрим основные причины, по которым компании решаются на этот шаг:

  1. Использование расширений конфигурации. Это ключевой фактор. Режим совместимости расширения не может быть выше режима совместимости основной конфигурации. Чтобы подключать современные сторонние расширения (например, для работы с маркетплейсами, системами маркировки «Честный Знак», ЭДО или логистическими сервисами), конфигурация должна работать в режиме совместимости не ниже 8.3.10 или 8.3.14.
  2. Интеграция с внешними системами. Современные веб-сервисы, HTTP-сервисы и механизмы работы с JSON/XML требуют возможностей, появившихся в платформе 8.3.
  3. Оптимизация производительности СУБД. Начиная с версии совместимости 8.3.1, на серверах MS SQL Server активируется механизм версионирования строк (row versioning), что позволяет снизить количество взаимных блокировок и повысить общую скорость проведения документов.
  4. Использование временных таблиц в запросах динамических списков (доступно начиная с версии 8.3.8).

Ниже мы подробно проанализируем технические проблемы, которые возникают при переходе, и методы их оперативного устранения.

Стратегия перехода: пошаговый подъем версии

Опыт разработчиков показывает, что попытка перевести сильно кастомизированную базу УПП напрямую с версии 8.2.16 на Не использовать (или на актуальный релиз 8.3.x) чаще всего заканчивается неудачей СУБД или аварийным завершением работы конфигуратора. Правильный подход заключается в постепенном (поочередном) повышении режима совместимости на копии базы данных.

Рекомендуется выполнять переход по следующим контрольным точкам:

  1. Перевод на Версия 8.3.1 (первичная проверка метаданных).
  2. Перевод на Версия 8.3.4.
  3. Перевод на Версия 8.3.6.
  4. Перевод на Версия 8.3.8 (важная веха, на которой уже стабильно работают многие новые механизмы).
  5. Перевод на Версия 8.3.10 / 8.3.14 или полное отключение совместимости.

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

Проблема 1: Ошибка реструктуризации базы данных в MS SQL Server (Query Governor)

При первом изменении режима совместимости на копии базы данных вы можете столкнуться с тем, что конфигуратор зависает или аварийно завершает работу с ошибкой СУБД. Выясним причину этого поведения.

При изменении режима совместимости платформа выполняет масштабную реструктуризацию таблиц базы данных под новые стандарты хранения. Если на вашем MS SQL Server включен регулятор ресурсов (Query Governor) со стандартным ограничением стоимости запроса (например, query governor cost limit = 300), СУБД просто заблокирует длительную транзакцию реструктуризации.

Решение: Перед выполнением реструктуризации на сервере СУБД необходимо временно отключить регулятор ресурсов или существенно увеличить его лимит. После успешного применения изменений конфигурации настройки сервера можно вернуть к исходным.

Проблема 2: Конфликт имен картинок

Это одна из первых «детских болезней», которая проявляется сразу после изменения режима совместимости на платформе 8.3. В кодовой базе УПП 1.3 присутствуют общие картинки, имена которых полностью совпадают со служебными именами картинок, встроенных в саму платформу 8.3.

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

Проблема 3: Жесткая типизация параметров выбора на формах

Рассмотрим подробнее одну из самых неочевидных ошибок, которая часто «выстреливает» при работе форм документов после отключения совместимости. Проанализируем ситуацию на примере следующего кода:


МассивПараметров = Новый Массив;
// ... (заполнение массива параметрами выбора)
ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);

На старых режимах совместимости этот код отрабатывал корректно. Однако в режиме 8.3 попытка напрямую присвоить свойству формы ПараметрыВыбора новый объект типа ФиксированныйМассив вызывает фатальную ошибку: «Несоответствие типов».

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

Проблема 4: Сбои при заполнении документов и вызове метаданных

При полном отключении режима совместимости некоторые устаревшие процедуры заполнения документов, завязанные на передачу неопределенных типов данных, начинают вызывать программные исключения. Например, в процедурах ОбработкаЗаполнения при передаче пустого или нетипизированного параметра Основание попытка получить метаданные вызывает падение системы.

Для предотвращения таких ситуаций в обработчиках модулей документов необходимо внедрить защитные конструкции (так называемые «заглушки»):


Процедура ОбработкаЗаполнения(Основание)
    
    Попытка 
        мМетаданные = Основание.Метаданные(); 
    Исключение 
        // Если объект не имеет метаданных или равен Неопределено, прерываем обработку заполнения
        Возврат; 
    КонецПопытки;
    
    // Далее следует основной алгоритм заполнения...
    
КонецПроцедуры

Такой подход гарантирует, что непредвиденные типы данных не приведут к аварийному завершению сеанса пользователя.

Проблема 5: Строгий синтаксис запросов и автоблокировки

Платформа 8.3 гораздо строже относится к написанию запросов. Если в конфигурации (или во внешних отчетах) используются устаревшие конструкции, запросы перестанут выполняться. Обратите внимание на следующие моменты:

Также важно отметить влияние на производительность. Как только вы переведете базу в режим 8.3, СУБД включит режим версионирования строк. Для большинства регистров УПП, которые исторически находятся в автоматическом режиме блокировок, это снизит вероятность дедлоков. Тем не менее, для высоконагруженных систем рекомендуется параллельно провести аудит и перевести критически важные документы на управляемый режим блокировок.

Проблема 6: Обновление измененной конфигурации и внешние надстройки

Если ваша УПП 1.3 не является полностью типовой, а содержит встроенные отраслевые решения (например, БИТ.ФИНАНС или CRM), вам необходимо учитывать следующее:

Подведем итоги

Перевод УПП 1.3 на режим совместимости 8.3.x — это выполнимая задача, которая дает конфигурации «второе дыхание». Основной объем работы сводится к исправлению мелких интерфейсных привязок, устранению конфликтов имен общих картинок и точечной корректировке кода в местах работы со свойствами форм и запросами.

Выполняйте переход по шагам, тщательно тестируйте каждый этап на копии базы данных с привлечением ключевых пользователей, и ваша система получит доступ ко всем современным технологиям платформы «1С:Предприятие 8.3».

← На главную