Почему зависает обновление 1С:БГУ и как устранить ошибку «Этот Узел: несколько записей»?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Сфера услуг, туризм и социальный сектор
← На главную

При обновлении конфигурации «Бухгалтерия государственного учреждения» (БГУ 1.0) с релиза 1.0.41 на 1.0.42 многие сталкиваются с ситуацией, когда процесс в режиме «1С:Предприятие» останавливается на шаге «выполнение обновления информационной базы» или длительно зависает при загрузке бюджетных классификаторов. Кроме того, после последующего тестирования и исправления может возникнуть системный сбой планов обмена вида «Этот Узел: по причине несколько записей». Разберем по шагам, почему возникают эти проблемы и какими методами их можно устранить.

Причины длительного обновления и мнимого зависания

Проанализируем техническую сторону перехода на линейку 1.0.42. В этих версиях кардинально переработаны структура классификаторов (КПС) и план счетов в соответствии с регламентирующими требованиями. При первом старте базы после обновления конфигурации метаданных запускаются фоновые процедуры:

  1. Массовая реструктуризация и сопоставление данных. Система выполняет глобальный пересчет ссылок, проверку и переформирование движений по счетам. Если в базе накоплена история за несколько лет, объем перезаписываемых записей колоссален.
  2. Иллюзия остановки процесса. Окно с сообщением о ходе обновления не всегда отображает динамический процент выполнения. В файловом режиме блокируется пользовательский интерфейс, создавая впечатление полного зависания программы.
  3. Сложные классификаторы. Справочники классификации (КВР, подразделы, статьи и подстатьи) имеют разветвленную структуру XML-данных. Их распаковка и разбор в системном каталоге временных файлов замедляют файловую базу на обычных жестких дисках в несколько раз.

Шаг 1. Диагностика состояния процесса 1С

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

  1. Откроем Диспетчер задач операционной системы и перейдем на вкладку «Производительность» или «Процессы».
  2. Найдем запущенный исполняемый файл 1cv8.exe или 1cv8c.exe.
  3. Обратим внимание на столбцы «ЦП» и «Диск» (скорость ввода-вывода). Если процесс активно потребляет такты процессора и выполняет чтение или запись на диск, прерывать его категорически нельзя. Аварийный обрыв сеанса приводит к повреждению таблиц версий подсистем и разрушению целостности данных.
  4. Запустим параллельно сеанс конфигуратора, перейдем в меню Администрирование — Журнал регистрации и проанализируем последние события: это позволит точно увидеть, на каких таблицах и служебных объектах сейчас находится фоновый обработчик.

Шаг 2. Оптимизация и ускорение процедуры обновления

Если обновление в файловом режиме занимает недопустимо много времени (от 4 до 8 часов), используем проверенные практики оптимизации:

  1. Локальное размещение на быстром накопителе. Ни в коем случае не обновляем файловую базу по локальной сети. Базу данных и системные переменные каталогов %TEMP% и %TMP% переносим на локальный твердотельный накопитель (SSD).
  2. Временный перенос в клиент-серверный вариант (SQL). Файловая СУБД 1С однопоточна и выполняет перезапись движений крайне медленно. Рекомендуется выгрузить базу данных через конфигуратор в файл .dt, загрузить ее на временный сервер СУБД (MS SQL Server или PostgreSQL), запустить пользовательский режим для прохождения всех внутренних обработчиков обновления и после этого вернуть базу обратно в файловый формат. Это сокращает время обновления с нескольких часов до 20–30 минут.
  3. Пошаговая загрузка классификаторов. Если зависание происходит в помощнике обновления бюджетной классификации, не следует загружать все классификаторы одновременно. Снимем все отметки и загрузим справочники последовательно: сначала разделы и главы, затем КВР, а в последнюю очередь — составные программные статьи.

Шаг 3. Устранение ошибки «Этот Узел: несколько записей»

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

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

Для исправления этой коллизии программно переопределим главный узел и исключим дублирование. Создадим внешнюю обработку и выполним следующий код:


ВыборкаУзлов = ПланыОбмена.ОбменУправлениеПредприятием.Выбрать();
Пока ВыборкаУзлов.Следующий() Цикл
    УзелОбъект = ВыборкаУзлов.ПолучитьОбъект();
    Если УзелОбъект.Ссылка = ПланыОбмена.ОбменУправлениеПредприятием.ЭтотУзел() Тогда
        ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
    КонецЕсли;
КонецЦикла;

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


Для Каждого МетаПлан Из Метаданные.ПланыОбмена Цикл
    МенеджерПлана = ПланыОбмена[МетаПлан.Имя];
    ТекущийУзел = МенеджерПлана.ЭтотУзел();
    Если ТекущийУзел.Пустая() Тогда
        Продолжить;
    КонецЕсли;
    ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
КонецЦикла;

Шаг 4. Обновление технологической платформы

Платформа версии 8.3.6.1977 имеет зарегистрированные ошибки при парсинге больших XML-пакетов бюджетной классификации и реструктуризации таблиц планов обмена. Для стабильной работы конфигураций БГУ релиза 1.0.42 и корректного завершения процедур обновления необходимо выполнить переход на более актуальные версии платформы ветки 8.3.8 или 8.3.9. После установки обновленной версии платформы ошибка с узлом обмена исчезает штатно без ручной модификации таблиц.

← На главную