Перевод крупной исторической конфигурации, такой как «1С:Управление производственным предприятием 1.3» (УПП), на современную платформу «1С:Предприятие 8.3» с повышением или полным отключением режима совместимости — задача нетривиальная. Многие разработчики боятся приступать к этому процессу, ожидая лавинообразного появления ошибок в самых непредсказуемых местах конфигурации. Однако на практике такой переход не только возможен, но и крайне необходим для использования новых механизмов платформы, таких как расширения конфигурации, мобильный клиент, внешние источники данных или интеграция с современными веб-сервисами.
В этой статье мы подробно разберем практический опыт разработчиков, успешно выполнивших эту процедуру. Мы проанализируем основные проблемы, с которыми вам придется столкнуться, и пошагово рассмотрим способы их решения.
Типовая конфигурация УПП 1.3 по умолчанию поставляется с режимом совместимости Версия 8.2.13 или Версия 8.2.16. Оставаясь на этих настройках, вы лишаете себя множества современных инструментов автоматизации. Рассмотрим основные причины, по которым компании решаются на этот шаг:
8.3.10 или 8.3.14.8.3.8).Ниже мы подробно проанализируем технические проблемы, которые возникают при переходе, и методы их оперативного устранения.
Опыт разработчиков показывает, что попытка перевести сильно кастомизированную базу УПП напрямую с версии 8.2.16 на Не использовать (или на актуальный релиз 8.3.x) чаще всего заканчивается неудачей СУБД или аварийным завершением работы конфигуратора. Правильный подход заключается в постепенном (поочередном) повышении режима совместимости на копии базы данных.
Рекомендуется выполнять переход по следующим контрольным точкам:
Версия 8.3.1 (первичная проверка метаданных).Версия 8.3.4.Версия 8.3.6.Версия 8.3.8 (важная веха, на которой уже стабильно работают многие новые механизмы).Версия 8.3.10 / 8.3.14 или полное отключение совместимости.На каждом этапе необходимо выполнять синтаксический контроль конфигурации, проверку работоспособности ключевых механизмов и запуск тестов.
При первом изменении режима совместимости на копии базы данных вы можете столкнуться с тем, что конфигуратор зависает или аварийно завершает работу с ошибкой СУБД. Выясним причину этого поведения.
При изменении режима совместимости платформа выполняет масштабную реструктуризацию таблиц базы данных под новые стандарты хранения. Если на вашем MS SQL Server включен регулятор ресурсов (Query Governor) со стандартным ограничением стоимости запроса (например, query governor cost limit = 300), СУБД просто заблокирует длительную транзакцию реструктуризации.
Решение: Перед выполнением реструктуризации на сервере СУБД необходимо временно отключить регулятор ресурсов или существенно увеличить его лимит. После успешного применения изменений конфигурации настройки сервера можно вернуть к исходным.
Это одна из первых «детских болезней», которая проявляется сразу после изменения режима совместимости на платформе 8.3. В кодовой базе УПП 1.3 присутствуют общие картинки, имена которых полностью совпадают со служебными именами картинок, встроенных в саму платформу 8.3.
При запуске системы это вызывает конфликты пространств имен и ошибки инициализации интерфейса. Решается эта проблема достаточно просто: необходимо найти конфликтующие общие картинки в дереве метаданных конфигурации и переименовать их (например, добавив префикс вашей компании), после чего скорректировать ссылки на них в коде.
Рассмотрим подробнее одну из самых неочевидных ошибок, которая часто «выстреливает» при работе форм документов после отключения совместимости. Проанализируем ситуацию на примере следующего кода:
МассивПараметров = Новый Массив;
// ... (заполнение массива параметрами выбора)
ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
На старых режимах совместимости этот код отрабатывал корректно. Однако в режиме 8.3 попытка напрямую присвоить свойству формы ПараметрыВыбора новый объект типа ФиксированныйМассив вызывает фатальную ошибку: «Несоответствие типов».
Это связано с тем, что в новой платформе ожидается строго определенный тип коллекции для параметров выбора. Чтобы избежать подобных падений, необходимо переписать данный участок кода, добавляя элементы непосредственно в существующую коллекцию параметров выбора элемента формы, либо использовать стандартные механизмы связи параметров выбора, заданные в метаданных.
При полном отключении режима совместимости некоторые устаревшие процедуры заполнения документов, завязанные на передачу неопределенных типов данных, начинают вызывать программные исключения. Например, в процедурах ОбработкаЗаполнения при передаче пустого или нетипизированного параметра Основание попытка получить метаданные вызывает падение системы.
Для предотвращения таких ситуаций в обработчиках модулей документов необходимо внедрить защитные конструкции (так называемые «заглушки»):
Процедура ОбработкаЗаполнения(Основание)
Попытка
мМетаданные = Основание.Метаданные();
Исключение
// Если объект не имеет метаданных или равен Неопределено, прерываем обработку заполнения
Возврат;
КонецПопытки;
// Далее следует основной алгоритм заполнения...
КонецПроцедуры
Такой подход гарантирует, что непредвиденные типы данных не приведут к аварийному завершению сеанса пользователя.
Платформа 8.3 гораздо строже относится к написанию запросов. Если в конфигурации (или во внешних отчетах) используются устаревшие конструкции, запросы перестанут выполняться. Обратите внимание на следующие моменты:
РАЗЛИЧНЫЕ, то все поля, указанные в секции УПОРЯДОЧИТЬ ПО, обязательно должны присутствовать в списке выборки. На платформе 8.2 это требование часто игнорировалось, но в 8.3 такой запрос вызовет ошибку SQL.Также важно отметить влияние на производительность. Как только вы переведете базу в режим 8.3, СУБД включит режим версионирования строк. Для большинства регистров УПП, которые исторически находятся в автоматическом режиме блокировок, это снизит вероятность дедлоков. Тем не менее, для высоконагруженных систем рекомендуется параллельно провести аудит и перевести критически важные документы на управляемый режим блокировок.
Если ваша УПП 1.3 не является полностью типовой, а содержит встроенные отраслевые решения (например, БИТ.ФИНАНС или CRM), вам необходимо учитывать следующее:
Перевод УПП 1.3 на режим совместимости 8.3.x — это выполнимая задача, которая дает конфигурации «второе дыхание». Основной объем работы сводится к исправлению мелких интерфейсных привязок, устранению конфликтов имен общих картинок и точечной корректировке кода в местах работы со свойствами форм и запросами.
Выполняйте переход по шагам, тщательно тестируйте каждый этап на копии базы данных с привлечением ключевых пользователей, и ваша система получит доступ ко всем современным технологиям платформы «1С:Предприятие 8.3».