При сопровождении и развитии информационных систем на базе «1С:Предприятие 8», особенно таких исторически сложившихся, как «Управление производственным предприятием 1.3» (УПП), часто возникает вопрос повышения производительности и использования современных возможностей платформы. Одним из ключевых шагов в этом направлении является изменение (повышение) режима совместимости конфигурации. Однако этот процесс сопряжен с рисками: часть программного кода может перестать работать, а некоторые привычные методы могут быть объявлены устаревшими или вовсе удалены.
В этой статье мы подробно разберем, где искать информацию об изменениях в платформе, как проанализировать код на соответствие новому режиму и на что обратить внимание в первую очередь при переходе с версий 8.2 на 8.3.
Рассмотрим основной источник информации, который всегда находится у вас под рукой, даже если нет доступа к интернету или подписке ИТС. С каждой установленной версией платформы поставляется файл V8Update.htm. В нем детально описываются все изменения, включая те, что требуют доработки конфигурации при отключении или изменении режима совместимости.
Найти этот файл можно в каталоге установки платформы на вашем компьютере или сервере. Путь обычно выглядит следующим образом:
C:\Program Files\1cv8\<номер_версии_платформы>\docs\ru\V8Update.htm
Проанализируем структуру этого документа. В нем выделен специальный раздел «Изменения, требующие изменения конфигурации». Именно этот раздел является библией программиста при миграции. Если вы перепрыгиваете через несколько версий (например, с 8.2.16 сразу на 8.3.12), вам необходимо изучить все промежуточные изменения для каждой версии платформы в этом файле.
На портале ИТС аналогичная информация собрана в разделе «Руководство по переходу на новые версии». Там представлена сводная таблица изменений, разбитая по категориям: интерфейс, запросы, блокировки, работа с файлами и т. д.
Разберем наиболее значимые изменения, с которыми сталкиваются разработчики при повышении режима совместимости выше 8.2.16.
1. Переход на асинхронные вызовы
Начиная с режима совместимости 8.3.3, платформа начала планомерный отказ от синхронных методов, которые блокируют работу интерфейса. Это критично для работы в веб-клиенте и мобильных приложениях. Если в режиме 8.2.16 метод Вопрос() работал без проблем, то в новых режимах он может вызывать ошибки или требовать переработки.
Посмотрим на пример изменения кода. Раньше мы писали так:
Ответ = Вопрос("Продолжить выполнение операции?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
// Логика выполнения
КонецЕсли;
В новых режимах совместимости (особенно при подготовке к отказу от модальности) следует использовать асинхронный аналог:
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВопроса", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, "Продолжить выполнение операции?", РежимДиалогаВопрос.ДаНет);
// В отдельной процедуре:
Процедура ПослеВопроса(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
// Логика выполнения
КонецЕсли;
КонецПроцедуры
2. Изменения в работе с запросами и СУБД
Выясним причину, по которой аудиторы часто рекомендуют повышать режим совместимости. Это связано с оптимизацией работы с базой данных:
АВТОУПОРЯДОЧИВАНИЕ, что требует явного указания полей сортировки в коде запросов для предсказуемого результата.Вместо того чтобы вручную искать каждую функцию в таблицах, воспользуемся встроенными и внешними инструментами автоматизации.
Проанализируем ситуацию с помощью штатного механизма «1С:Предприятия». Это самый быстрый способ получить список проблемных мест:
Система выдаст подробный список всех мест, где используются устаревшие процедуры, функции или свойства объектов, которые не поддерживаются в выбранном режиме.
Существуют внешние инструменты, такие как «Инструменты разработчика» (автор Tormozit), которые содержат расширенный синтакс-помощник. В нем можно увидеть доступность того или иного метода в разрезе различных режимов совместимости и версий платформы. Это крайне полезно, когда нужно быстро понять, с какой именно версии появилась или исчезла конкретная возможность GlobalContext.
Рассмотрим специфику УПП 1.3. Поскольку эта конфигурация построена на обычных формах, радикальное повышение режима до актуальных (8.3.24+) может быть избыточным и болезненным.
Оптимальный путь миграции:
Важно помнить: само по себе переключение галочки в свойствах конфигурации не ускорит код магическим образом. Платформа лишь получит возможность использовать новые механизмы (например, управляемые блокировки или новые планы запросов). Чтобы реально повысить производительность, после изменения режима совместимости придется переписать наиболее «тяжелые» участки кода, используя новые инструменты платформы.
Выясним напоследок: стоит ли верить аудиторам? В целом — да. Современная платформа 8.3 работает с SQL гораздо эффективнее, чем 8.2. Но без тщательного тестирования (особенно в части транзакций и блокировок) приступать к обновлению на рабочей базе категорически нельзя.