Перевод сильно кастомизированной информационной базы с устаревшей платформы 1С:Предприятие 8.1 на современную ветку 8.3 — ответственная задача, сопряженная с изменением механизмов работы платформы, синтаксиса запросов и поведения клиентского приложения. Попытка прямой конвертации или моментального отключения режима совместимости в таких конфигурациях часто приводит к неработоспособности базы данных или критическим ошибкам времени выполнения.
Разберем подробную пошаговую методику безопасного перехода, проанализируем инструменты автоматизированного контроля и выясним, какие настройки и участки программного кода требуют обязательной адаптации.
Прежде чем приступать к конвертации на новые версии платформы, необходимо гарантировать физическую и логическую целостность существующей информационной базы в среде 8.1:
.dt средствами Конфигуратора, а также создадим полную резервную копию базы данных средствами СУБД (например, средствами MS SQL Server или PostgreSQL).Тестирование и исправление информационной базы в режиме Конфигуратора 8.1. Включим проверки логической и ссылочной целостности, реиндексацию таблиц и пересчет итогов. База должна быть полностью очищена от битых ссылок и скрытых повреждений таблиц.Прямая конвертация конфигурации из формата 8.1 сразу в формат 8.3 с отключением совместимости сопряжена с высоким риском сбоев структуры метаданных. Рекомендуется использовать проверенный двухэтапный регламент.
Рассмотрим последовательность действий на промежуточном этапе:
8.2.19) в режиме Конфигуратора и согласимся на предложение конвертации информационной базы.РежимСовместимости в значение Версия 8.1.РежимСовместимости в значение Не использовать (режим чистой 8.2).После того как конфигурация стабильно работает на 8.2 без совместимости с 8.1, перейдем к переносу на платформу 8.3:
РежимСовместимости в значение Версия 8.2.13 или Версия 8.2.16. Проверим базовую работоспособность в этом режиме.РежимСовместимости в значение «Не использовать» (или выберем целевую версию платформы 8.3).При отключении режима совместимости в 8.3 платформа активирует строгие системные ограничения, ориентированные на управляемый интерфейс и веб-клиент. В нетиповых конфигурациях на обычных формах эти ограничения приведут к падению программы. Настроим свойства корня конфигурации следующим образом:
Предупреждение(), Вопрос() и метод ОткрытьФормуМодально(). При отключении совместимости платформа по умолчанию переводит модальность в режим «Не использовать», что вызовет исключения при первом же открытии окон. Установим свойство в значение «Использовать».БлокировкаДанных, не следует мгновенно переводить всю базу в управляемый режим — это может вызвать проблемы с параллельной записью. Переход на управляемые блокировки выполняем точечно по критическим регистрам.Разберем инструменты, которые позволяют выявить ошибки без ручного обхода всех объектов конфигурации:
Конфигурация → Проверка конфигурации.... Установим флаги:
1C:Enterprise Development Tools или прогоним через конфигурацию 1С:Автоматизированная проверка конфигураций. Это позволит автоматически обнаружить неявные ошибки типов, устаревшие вызовы и потенциальные взаимные блокировки.Платформа 8.3 строит планы выполнения запросов и транслирует код в SQL существенно строже, чем 8.1. Проанализируем типичные проблемы в запросах, которые требуют ручной корректировки:
1. Строгая типизация и работа со строками неограниченной длины.
В платформе 8.3 запрещено неявное сравнение и группировка по полям неограниченной длины. В условиях соединений и секциях ГДЕ, ПО, ИТОГИ обязательно используем явное ограничение длины:
// Ошибочный вариант для 8.3:
ГДЕ Таблица.Комментарий = &ПараметрКомментарий
// Корректный вариант с явным приведением типа:
ГДЕ ВЫРАЗИТЬ(Таблица.Комментарий КАК СТРОКА(250)) = &ПараметрКомментарий
2. Неопределенный порядок выборки.
В отличие от 8.1, платформа 8.3 не гарантирует физический порядок следования записей в выборке без явного указания сортировки. Если алгоритм опирается на последовательность строк, добавим в запрос секцию УПОРЯДОЧИТЬ ПО.
3. Передача параметров в условие оператора «В».
Если в параметр условия ГДЕ Поле В (&МассивЗначений) передается пустой массив или коллекция с элементами типа Неопределено, платформа 8.3 может сгенерировать неоптимальный SQL-план или выдать ошибку выполнения. Перед передачей параметров в запрос проверяем заполненность массивов в коде 1С.
После исправления всех синтаксических замечаний выполним финальный комплекс регламентных процедур:
Тестирование и исправление информационной базы с установленными флагами «Реструктуризация таблиц информационной базы» и «Реиндексация таблиц». Это перестроит внутренние индексы СУБД под актуальные структуры 8.3.