Как правильно перевести сильно измененную конфигурацию с 1С 8.1 на 8.3 без режима совместимости?

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

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

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

Шаг 1. Подготовительные работы в исходной базе 8.1

Прежде чем приступать к конвертации на новые версии платформы, необходимо гарантировать физическую и логическую целостность существующей информационной базы в среде 8.1:

  1. Создание резервных копий. Обязательно выгрузим информационную базу в файл с расширением .dt средствами Конфигуратора, а также создадим полную резервную копию базы данных средствами СУБД (например, средствами MS SQL Server или PostgreSQL).
  2. Тестирование и исправление. Запустим процедуру Тестирование и исправление информационной базы в режиме Конфигуратора 8.1. Включим проверки логической и ссылочной целостности, реиндексацию таблиц и пересчет итогов. База должна быть полностью очищена от битых ссылок и скрытых повреждений таблиц.
  3. Фиксация состояния конфигурации. Если конфигурация находится на поддержке, проверим правила обновления и снимем с поддержки те объекты, которые были доработаны, либо корректно настроим режим объединения.

Шаг 2. Промежуточный переход на платформу 8.2

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

Рассмотрим последовательность действий на промежуточном этапе:

  1. Откроем копию базы платформой 1С:Предприятие 8.2 (желательно финального релиза ветки, например 8.2.19) в режиме Конфигуратора и согласимся на предложение конвертации информационной базы.
  2. По умолчанию база откроется с установленным свойством конфигурации РежимСовместимости в значение Версия 8.1.
  3. Переведем свойство РежимСовместимости в значение Не использовать (режим чистой 8.2).
  4. Запустим штатную синтаксическую проверку и специализированные обработки анализа перехода на 8.2, доступные на диске ИТС. Они сформируют отчет с перечнем устаревших методов, которые необходимо скорректировать.
  5. Устраним ошибки, проведем реструктуризацию и повторное тестирование информационной базы в среде 8.2.

Шаг 3. Конвертация в платформу 8.3 и первоначальная настройка

После того как конфигурация стабильно работает на 8.2 без совместимости с 8.1, перейдем к переносу на платформу 8.3:

  1. Откроем базу в Конфигураторе 1С:Предприятие 8.3 и выполним конвертацию формата базы.
  2. На первом этапе платформа установит РежимСовместимости в значение Версия 8.2.13 или Версия 8.2.16. Проверим базовую работоспособность в этом режиме.
  3. Для полного использования оптимизаций и новых механизмов переключим свойство РежимСовместимости в значение «Не использовать» (или выберем целевую версию платформы 8.3).

Шаг 4. Настройка критических свойств конфигурации в 8.3

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

  1. Режим использования модальности. В 8.1 повсеместно используются модальные вызовы: диалоги Предупреждение(), Вопрос() и метод ОткрытьФормуМодально(). При отключении совместимости платформа по умолчанию переводит модальность в режим «Не использовать», что вызовет исключения при первом же открытии окон. Установим свойство в значение «Использовать».
  2. Режим использования синхронных вызовов расширений платформы и внешних компонент. Если в конфигурации подключено торговое оборудование, используются старые библиотеки или синхронные методы работы с файловой системой, установим это свойство в значение «Использовать».
  3. Режим управления блокировкой данных в транзакциях. В 8.1 стандартным режимом был «Автоматический». В 8.3 для высокой производительности и параллельности требуется «Управляемый». Если в конфигурации не прописана явная установка объектов БлокировкаДанных, не следует мгновенно переводить всю базу в управляемый режим — это может вызвать проблемы с параллельной записью. Переход на управляемые блокировки выполняем точечно по критическим регистрам.
  4. Основной режим запуска. Для конфигураций, созданных на обычных формах, сохраняем режим «Толстый клиент (обычное приложение)». Помним, что обычные формы не поддерживаются в тонком и веб-клиенте.

Шаг 5. Автоматизированный анализ и исправление кода

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

  1. Встроенная проверка конфигурации. Откроем меню Конфигурация → Проверка конфигурации.... Установим флаги:
    • Проверка логической целостности конфигурации;
    • Поиск некорректных ссылок;
    • Синтаксический контроль модулей (обязательно проверим режимы «Сервер», «Толстый клиент», «Внешнее соединение»);
    • Проверка ограничений на использование функционала в соответствии с режимом совместимости.
  2. Использование статических анализаторов (1С:EDT / АПК). Выгрузим конфигурацию в файлы и загрузим в среду 1C:Enterprise Development Tools или прогоним через конфигурацию 1С:Автоматизированная проверка конфигураций. Это позволит автоматически обнаружить неявные ошибки типов, устаревшие вызовы и потенциальные взаимные блокировки.

Шаг 6. Адаптация языка запросов и работы с СУБД

Платформа 8.3 строит планы выполнения запросов и транслирует код в SQL существенно строже, чем 8.1. Проанализируем типичные проблемы в запросах, которые требуют ручной корректировки:

1. Строгая типизация и работа со строками неограниченной длины.
В платформе 8.3 запрещено неявное сравнение и группировка по полям неограниченной длины. В условиях соединений и секциях ГДЕ, ПО, ИТОГИ обязательно используем явное ограничение длины:


// Ошибочный вариант для 8.3:
ГДЕ Таблица.Комментарий = &ПараметрКомментарий

// Корректный вариант с явным приведением типа:
ГДЕ ВЫРАЗИТЬ(Таблица.Комментарий КАК СТРОКА(250)) = &ПараметрКомментарий

2. Неопределенный порядок выборки.
В отличие от 8.1, платформа 8.3 не гарантирует физический порядок следования записей в выборке без явного указания сортировки. Если алгоритм опирается на последовательность строк, добавим в запрос секцию УПОРЯДОЧИТЬ ПО.

3. Передача параметров в условие оператора «В».
Если в параметр условия ГДЕ Поле В (&МассивЗначений) передается пустой массив или коллекция с элементами типа Неопределено, платформа 8.3 может сгенерировать неоптимальный SQL-план или выдать ошибку выполнения. Перед передачей параметров в запрос проверяем заполненность массивов в коде 1С.

Шаг 7. Финальная реструктуризация и нагрузочное тестирование

После исправления всех синтаксических замечаний выполним финальный комплекс регламентных процедур:

  1. В Конфигураторе 8.3 запустим Тестирование и исправление информационной базы с установленными флагами «Реструктуризация таблиц информационной базы» и «Реиндексация таблиц». Это перестроит внутренние индексы СУБД под актуальные структуры 8.3.
  2. Запустим сценарные тесты по ключевым бизнес-процессам (проведение документов, формирование регламентных и аналитических отчетов, закрытие месяца).
  3. Проверим корректность работы внешних компонент и интеграционных шлюзов (COM-соединения, Web-сервисы, обмен через XML/JSON), убедившись в разрядности используемых библиотек (32/64 bit).
← На главную