Как стабильно перейти на платформу 8.3.14 и выше: решаем проблемы дампов, ошибок SDBL и перехода на WebKit

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

Переход со старых и проверенных временем платформ (таких как 8.2.18) на современные ветки 8.3.14, 8.3.15 и выше часто становится для администраторов и разработчиков настоящим испытанием. Вместо ожидаемого прироста производительности пользователи сталкиваются с «дампами» (аварийным завершением работы), ошибками СУБД и странным поведением интерфейса. В рамках данной статьи мы подробно разберем, почему «падает» 14-я и 15-я платформы, как бороться с ошибками дублирования таблиц и что нужно знать про новый движок отображения форм.

Анализируем причины нестабильности: переход на WebKit в 8.3.14

Одной из главных причин внезапных «дампов» при работе с обычными формами и специфическими интерфейсными решениями стал переход платформы с движка Internet Explorer на WebKit. Это произошло начиная с версии 8.3.14.1565. Рассмотрим подробнее, к чему это привело.

Многие тиражные решения и самописные конфигурации (например, на базе УТ 10.3 или продуктов 1С:БИТ) используют макеты типа HTML-документ для отображения графиков, подсказок или интеграции с внешними сервисами. Старый движок прощал многие ошибки в верстке и специфические вызовы JS. WebKit гораздо строже к синтаксису. Если программа падает в дамп при открытии формы или нажатии на кнопки внутри поля HTML, проанализируем следующие моменты:

  1. Методы обращения к объектам: Проверьте использование специфических для IE конструкций. Если в коде макета есть обращения к window.external, это может вызвать крах процесса.
  2. Ошибки парсинга: Некорректно закрытые теги или устаревшие CSS-свойства в 14-й платформе могут привести к «вылету» без объяснения причин.
  3. Печать: Вызовы методов печати напрямую из поля HTML-документа в ранних сборках 14-й ветки часто заканчивались аварийно.

В качестве решения рекомендуется переписывать формы, отказываясь от сложной HTML-логики, либо принудительно обновляться до ветки 8.3.16, где многие ошибки взаимодействия с новым движком были исправлены. Также полезно проверить настройки совместимости интерфейса.

Критическая ошибка SDBL в платформе 8.3.15: дублирование кодов таблиц

При переходе на 8.3.15 (например, на популярный релиз 15.1565) многие столкнулись с ошибкой: «Для одного ссылочного кода существует более одной таблицы в базе данных». Эта проблема блокирует обновление конфигурации базы данных и делает невозможной дальнейшую разработку.

Выясним причину этого поведения. Ошибка возникает из-за некорректной работы механизма Data History (История данных) и сервиса менеджера кластера. Рассмотрим пошагово ситуацию, в которой она проявляется:

  1. Вы создаете или восстанавливаете базу из SQL-бэкапа.
  2. Если до момента восстановления в этой базе (или в базе с тем же идентификатором в рамках кластера) производились изменения метаданных, менеджер кластера rmngr.exe кэширует последний номер таблицы.
  3. При последующем добавлении объектов платформа пытается присвоить уже существующий в SQL внутренний номер (например, Enum1598), что вызывает конфликт SDBL.

Как решить эту проблему? Экспериментальным путем выяснено, что «Тестирование и исправление» в данном случае бессильно. Помогает следующая последовательность действий: сразу после восстановления базы средствами СУБД необходимо полностью перезапустить службу сервера 1С:Предприятия. Это заставит rmngr сбросить кэш идентификаторов таблиц и инициализировать их заново на основе актуальных данных из SQL.

Проблема обработки исключений и ЗаписьЖурналаРегистрации

В ветке 8.3.14 был зарегистрирован и подтвержден критический баг (ошибка 10208437). Проанализируем ситуацию: если внутри блока Попытка ... Исключение вызывается метод ЗаписьЖурналаРегистрации, и в этот момент происходит восстановимая ошибка базы данных (например, конфликт блокировок), платформа игнорирует оператор Исключение и аварийно завершает работу.

Это объясняет, почему пользователи «отлетают» из базы в моменты высокой нагрузки. Рассмотрим пример опасного кода:


Попытка
    // Какое-то действие, вызывающее блокировку
    ДокументОбъект.Записать();
Исключение
    // В 14-й платформе это может вызвать дамп, если база занята
    ЗаписьЖурналаРегистрации("Ошибка записи", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;

Для устранения этой проблемы рекомендуется либо избегать записи в журнал в критических секциях на 14-й платформе, либо перейти на релизы 8.3.16.869 и выше, где эта ошибка официально исправлена.

Лицензионные ограничения и дата 09.09.2019

При переходе на новые платформы нельзя забывать о важном изменении в системе лицензирования, которое произошло осенью 2019 года. Платформы выше 8.3.12.1855 стали строго проверять тип лицензии (ПРОФ или КОРП).

Разберем основные ограничения для лицензий уровня ПРОФ:

Если ваша информационная база работает на мощном сервере, и вы заметили деградацию производительности после обновления, проверьте настройки кластера. На лицензиях ПРОФ теперь допустимы только дефолтные настройки. Любая попытка изменить параметры расхода памяти на процесс или количество соединений может привести к нестабильной работе или отказу системы запускать новые сеансы.

Практические рекомендации по стабилизации работы

Чтобы жизнь на нетиповых конфигурациях (вроде УПП или сильно перепиленной УТ 10.3) на платформе 8.3 была возможной, выполним следующие рекомендации:

  1. Режим совместимости: Если вы используете обычные формы, старайтесь не поднимать режим совместимости выше 8.3.12 без крайней необходимости. Это поможет избежать сегментации памяти (segmentation fault) при отрисовке сложных элементов.
  2. Очистка серверного кэша: При любых странностях в работе (особенно после обновлений метаданных) возьмите за правило чистить папку snaccxt в профиле пользователя, под которым работает служба сервера.
  3. Работа с вложениями: В 14-й платформе замечены проблемы при отправке почты со вложениями в формате .xls (вызывает дамп). Попробуйте сменить формат аттача на .pdf или .zip, если обновление платформы сейчас невозможно.
  4. Метод Сдвинуть(): Будьте осторожны с использованием метода Сдвинуть у ФорматированногоДокумента. В некоторых релизах 14 и 15 платформ вызов этого метода на последнем элементе гарантированно валит сессию в дамп.

Подводя итог, можно сказать, что наиболее стабильной стратегией на текущий момент является либо использование проверенной ветки 8.3.12.х (если не требуются механизмы ЭДО и маркировки), либо прыжок сразу на актуальные релизы 8.3.16 и выше, минуя «переходные» и наиболее проблемные 14-ю и 15-ю ветки.

← На главную