Перевод рабочей системы с платформы 1С:Предприятие 8.1 на 8.3 (с сохранением обычных форм и включением режима совместимости с 8.2) — ответственная инженерная задача, особенно если в информационной базе одновременно работает около 200 пользователей. Простое открытие базы новой платформой может обернуться скрытыми ошибками выполнения, нестабильностью процессов сервера и блокировками.
Разберем по шагам весь процесс миграции: от подготовки и поэтапной конвертации данных до выявления критических изменений в объектной модели встроенного языка и настройки серверного кластера.
Прямая конвертация объемной рабочей базы напрямую из 8.1 в 8.3 нередко приводит к ошибкам структуры таблиц и сбоям индексов. Проанализируем надежный и проверенный практикой алгоритм конвертации:
.dt из платформы 8.2 или 8.3, загрузить ее обратно в 8.1 штатным образом уже не удастся. Восстановление средствами СУБД — единственный гарантированный способ отката.Перед тем как пускать пользователей в систему, необходимо тщательно изучить технологические изменения платформы. Обратимся к файлу V8Update.htm, который поставляется в каталоге установки платформы 1С. Внимательно изучаем следующие разделы:
Далее запускаем в конфигураторе встроенную синтаксическую проверку конфигурации (меню «Конфигурация» — «Проверка конфигурации»). Обязательно отмечаем флажками проверку логической целостности, синтаксический контроль модулей во всех режимах (сервер, толстый клиент, внешнее соединение) и проверку соответствия стандартам.
Рассмотрим типовые ошибки и расхождения, с которыми чаще всего приходится сталкиваться при переносе конфигураций с 8.1 на платформу 8.3 в режиме совместимости.
1. Изменение сигнатуры и поведения события «ОбработкаЗаполнения».
В платформе 8.1 процедура в модуле объекта имела один параметр:
Процедура ОбработкаЗаполнения(Основание)
// Старый код платформы 8.1
КонецПроцедуры
Начиная с версии 8.2 сигнатура события изменилась. Теперь обработчик принимает два параметра: ДанныеЗаполнения и СтандартнаяОбработка. Кроме того, этот обработчик вызывается не только при явном вводе на основании, но и при интерактивном добавлении нового элемента из формы списка с установленным отбором. В этом случае в параметр передается не ссылка на документ-основание, а структура критериев отбора. Перепишем обработчик с учетом строгой проверки типов:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ДанныеЗаполнения = Неопределено Тогда
Возврат;
КонецЕсли;
// Проверяем тип входящих данных
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
Контрагент = ДанныеЗаполнения.Контрагент;
ДоговорКонтрагента = ДанныеЗаполнения.ДоговорКонтрагента;
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
// Обработка заполнения по отбору из формы списка
Если ДанныеЗаполнения.Свойство("Контрагент") Тогда
Контрагент = ДанныеЗаполнения.Контрагент;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
2. Строгие требования к синтаксису запросов.
Платформа 8.3 предъявляет более жесткие требования к языку запросов. Например, если в предложении УПОРЯДОЧИТЬ ПО используется поле или выражение, отсутствующее в списке полей секции ВЫБРАТЬ, запрос, успешно работавший в 8.1, в новой платформе может вызывать исключение. Проанализируем правильное построение запроса:
ВЫБРАТЬ
Заказ.Ссылка КАК Ссылка,
Заказ.Дата КАК Дата,
Заказ.СуммаДокумента КАК СуммаДокумента
ИЗ
Документ.ЗаказПокупателя КАК Заказ
ГДЕ
Заказ.Проведен = ИСТИНА
УПОРЯДОЧИТЬ ПО
Дата УБЫВ
3. Изменение работы с подсистемами в объекте метаданных.
В платформе 8.1 многие разработчики обращались к свойству Подсистемы непосредственно у объекта конфигурации (например, Метаданные.Документы.РеализацияТоваровУслуг.Подсистемы). В новых версиях платформы состав проверяется от родительской подсистемы через ее свойство Состав:
Если Метаданные.Подсистемы.Продажи.Состав.Содержит(Метаданные.Документы.РеализацияТоваровУслуг) Тогда
// Объект входит в подсистему
КонецЕсли;
Для стабильной работы базы с одновременным подключением 200 пользователей в режиме обычного приложения необходимо заранее сконфигурировать серверную часть:
rphost. Сеансы толстого клиента под управлением платформы 8.3 потребляют значительно больше оперативной памяти по сравнению с 8.1. В консоли администрирования кластера серверов обязательно настраиваем параметры рабочих процессов: задаем интервал перезапуска процессов, лимит допустимой памяти на один процесс и предельный объем превышения памяти. Это предотвратит аварийное завершение сервера из-за накопленных утечек памяти..lgd). При 200 параллельных сеансах интенсивная запись событий в один файл порождает дисковые очереди и микрозависания. В таких условиях рекомендуется переключить журнал в классический разделенный текстовый формат (.lgf) либо оставить уровень логирования только для ошибок и предупреждений.rphost. Проверим, чтобы в модулях регламентных заданий не было обращений к интерактивным формам, предупреждениям и модальным диалогам, которые могут подвесить фоновый поток.Переход с платформы 8.1 на 8.3 в режиме совместимости полностью реализуем и позволяет стандартизировать инфраструктуру. Однако он требует обязательного тестового прогона на резервной копии, ручной правки обработчиков ОбработкаЗаполнения, контроля внешних отчетов и строгой настройки параметров кластера серверов 1С.