Что делать, если после обновления платформы 1С до версии 8.3.16.1030 система начинает сильно зависать?

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

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

В этой статье мы подробно разберем реальный кейс, связанный с обновлением платформы до версии 8.3.16.1030. Мы выясним, почему эта версия признана сообществом крайне неудачной, проанализируем ошибки логической целостности базы данных, выявленные в ходе тестирования и исправления (ТИИ), и рассмотрим пошаговые методы полного восстановления работоспособности системы.

Причины критических зависаний на платформе версии 8.3.16.1030

Для начала проанализируем поведение системы, описанное пользователями: сразу после запуска программа буквально «летает» в течение 15–20 минут, после чего начинает медленно реагировать на действия пользователя и в итоге полностью блокирует работу операционной системы. Такое поведение указывает на несколько системных проблем, заложенных на уровне ядра самого релиза 8.3.16.1030:

  1. Критические утечки оперативной памяти (Memory Leaks): В данном релизе присутствует серьезная ошибка управления памятью в процессах клиентского приложения (1cv8.exe) и сервера (rphost). Программа некорректно освобождает оперативную память при закрытии форм, генерации отчетов или выполнении фоновых заданий. В результате за 20 минут активной работы процесс 1С полностью поглощает доступную физическую RAM. ОС вынуждена непрерывно обращаться к файлу подкачки на жестком диске (swapping), что приводит к полной остановке работы всего компьютера.
  2. Проблемы с новой графической библиотекой Cairo: Начиная с ветки 8.3.16, разработчики «1С» осуществили переход на библиотеку Cairo для рендеринга интерфейса. В первых сборках (включая 1030) эта интеграция вызвала колоссальные проблемы. Пользователи столкнулись с зависаниями интерфейса при отрисовке сложных динамических списков, масштабировании окон и особенно при работе через терминальные сессии (RDP).
  3. Ошибки подсистемы печати: В релизе 8.3.16.1030 была зафиксирована критическая ошибка при обращении к принтерам. При попытке сформировать печатную форму или вызвать диалог настройки печати платформа уходила в бесконечный цикл ожидания ответа от службы печати Windows, что вызывало моментальное зависание сессии клиента.
  4. Ошибки в механизме выполнения запросов: Данный релиз платформы содержал критический баг, связанный с расчетом итогов в сложных запросах. В некоторых сценариях СУБД генерировала неоптимальные планы выполнения, из-за чего обычные запросы выполнялись часами, парализуя работу СУБД и дисковой подсистемы. Этот баг послужил причиной фактического отзыва рекомендации к использованию данной версии технической поддержкой фирмы «1С».

Анализ ошибок логической целостности и битых ссылок

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

Ошибка в регистре сведений «Безопасное хранилище данных»

В отчете ТИИ зафиксированы следующие строки:

Проверка логической целостности. РегистрСведений.БезопасноеХранилищеДанных.Измерение.Владелец <Объект не найден>... Объект, на который ссылается значение, отсутствует.

Рассмотрим подробнее, что представляет собой этот объект. Регистр РегистрСведений.БезопасноеХранилищеДанных — это служебный регистр, входящий в состав Библиотеки стандартных подсистем (БСП). Он предназначен для безопасного (зашифрованного) хранения конфиденциальной информации: паролей учетных записей электронной почты, токенов интеграции с государственными информационными системами, ключей доступа API и настроек обмена.

Измерение Владелец в этом регистре имеет составной тип данных и ссылается на объекты конфигурации, которые используют эти секреты (например, справочники Справочник.Пользователи, Справочник.УчетныеЗаписиЭлектроннойПочты или Справочник.Организации). Появление записи <Объект не найден> означает, что сам элемент справочника-владельца был безвозвратно удален из базы данных (например, напрямую программным кодом без контроля ссылочной целостности), а соответствующая ему запись с зашифрованными данными в регистре сведений осталась.

Влияние на зависания: При старте системы или выполнении регламентных заданий платформа инициализирует сессии пользователей и пытается считать их персональные настройки и ключи из безопасного хранилища. Натыкаясь на «битую» ссылку, фоновые механизмы БСП могут уходить в бесконечный цикл обработки исключений или генерировать скрытые ошибки, которые перегружают процессор и дисковую систему, усугубляя общую нестабильность платформы.

Ошибка в регистре «Соответствия объектов информационных баз»

Вторая группа ошибок ТИИ выглядит так:

Проверка логической целостности. РегистрСведений.СоответствияОбъектовИнформационныхБаз.Измерение.УникальныйИдентификаторИсточника... СправочникСсылка.ФизическиеЛица...

Проанализируем эту ситуацию. Данный регистр используется механизмами синхронизации данных (например, при обмене между конфигурациями «Зарплата и управление персоналом» и «Бухгалтерия предприятия»). В нем сопоставляются уникальные идентификаторы (GUID) объектов в базе-источнике и базе-приемнике.

В данном случае сопоставление нарушилось для справочника Справочник.ФизическиеЛица. Вероятнее всего, в одной из баз было произведено слияние дублей физических лиц или их непосредственное удаление. Запись в регистре соответствий ссылается на несуществующий более идентификатор (GUID).

Влияние на зависания: Синхронизация данных обычно выполняется автоматически в фоновом режиме по расписанию. При наличии битых ссылок в таблице сопоставлений фоновое задание обмена не может корректно идентифицировать объект, аварийно завершается, запускается вновь и создает непрерывную паразитную нагрузку на дисковую подсистему (HDD/SSD) и СУБД. Именно это часто приводит к тому, что компьютер начинает тормозить через некоторое время после включения.

Как выявить «битые» ссылки программным путем

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Хранилище.Владелец КАК БитыйВладелец,
    |	Хранилище.Владелец.Представление КАК ПредставлениеВладельца
    |ИЗ
    |	РегистрСведений.БезопасноеХранилищеДанных КАК Хранилище
    |ГДЕ
    |	Хранилище.Владелец.ВерсияДанных ИС СУЛЛ
    |	И НЕ Хранилище.Владелец = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)";

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ЗаписьЖурналаРегистрации("ПоискБитыхСсылок",
        УровеньЖурналаРегистрации.Предупреждение, , ,
        "Найден битый владелец: " + Строка(Выборка.БитыйВладелец));
КонецЦикла;

В данном примере мы используем обращение к реквизиту ВерсияДанных через точку от поля Владелец. Если объект в базе данных отсутствует physically, СУБД вернет значение NULL (в терминах языка запросов 1С — ИС СУЛЛ), что позволяет безошибочно локализовать поврежденные записи.

Инструкция по устранению зависаний и исправлению ошибок

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

Шаг 1. Откат или обновление платформы 1С

Поскольку релиз 8.3.16.1030 признан критически нестабильным, продолжать работу на нем категорически запрещено. У нас есть два пути решения:

  1. Откат на стабильную ветку: Если конфигурация вашей базы данных позволяет работать на более ранних версиях, выполните даунгрейд платформы до проверенных релизов ветки 8.3.15 (например, 8.3.15.1830). Они отличаются высокой стабильностью работы графической подсистемы и отсутствием утечек памяти.
  2. Переход на стабильные сборки ветки 8.3.16 и выше: Если конфигурация требует платформу не ниже 8.3.16, необходимо установить исправленный и стабильный релиз — например, 8.3.16.1148 (или более поздние версии веток 8.3.21 / 8.3.22, если это поддерживается вашей прикладной конфигурацией). В этих релизах разработчики устранили утечки памяти в процессах 1cv8.exe и оптимизировали работу библиотеки Cairo.

Шаг 2. Исправление структуры данных через ТИИ

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

  1. Запустите информационную базу в режиме Конфигуратора. Предварительно убедитесь, что все пользователи вышли из системы, и сделайте резервную копию базы данных (Выгрузка информационной базы).
  2. Откройте главное меню: Администрирование -> Тестирование и исправление...
  3. В появившемся окне настроек установите флажки напротив следующих проверок:
    • Проверка логической целостности
    • Проверка ссылочной целостности
  4. В нижней части окна в группе параметров «При наличии ссылок на несуществующие объекты» обязательно переключите радиобаттон в положение Очищать записи (или Удалять объекты). Это заставит систему автоматически удалить «битые» строки из регистров РегистрСведений.БезопасноеХранилищеДанных и РегистрСведений.СоответствияОбъектовИнформационныхБаз вместо создания пустых элементов.
  5. Нажмите кнопку Выполнить и дождитесь окончания процесса. Время выполнения зависит от размера базы данных и производительности дисковой подсистемы.

Шаг 3. Полная очистка локального кэша

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

  1. Закройте все запущенные сеансы «1С:Предприятие».
  2. Откройте окно запуска 1С, выделите вашу базу данных, запишите ее точный путь и нажмите кнопку Удалить.
  3. Нажмите кнопку Добавить и заново пропишите путь к вашей информационной базе. При этом действии старый кэш отвязывается от списка баз, и создается чистая директория.
  4. Для полной гарантии очистки перейдите в папки:
    • %localappdata%\1C\1Cv8
    • %appdata%\1C\1Cv8
    и полностью удалите все папки с длинными шестнадцатеричными именами (например, 45e9821a-ef43-...). Это абсолютно безопасно и приведет лишь к сбросу индивидуальных настроек положения окон у пользователей.

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

← На главную