Ситуация, когда программа после успешного (на первый взгляд) обновления в конфигураторе начинает бесконечно запускать процесс «Завершение обновления» в режиме «Предприятие», встречается довольно часто, особенно в конфигурациях на базе обычных форм, таких как Бухгалтерия государственного учреждения ред. 1.0. Разберем подробно, почему это происходит, как диагностировать причину и какие шаги предпринять для устранения этой проблемы.
Прежде всего, рассмотрим контекст проблемы. В версии 1.0.58.3 были внесены масштабные изменения в Единый план счетов (ЕПСБУ) в связи с приказом Минфина №103н. Процедура обновления этого релиза крайне требовательна к целостности данных. Если в базе данных есть помеченные на удаление счета или счета с некорректно заполненными субконто, стандартные обработчики обновления могут «запинаться».
Выясним причину зацикливания: когда вы заходите в программу, система проверяет соответствие текущей версии конфигурации и версии, записанной в информационной базе. Если процедура обновления не была доведена до логического завершения (не проставлен флаг успешного выполнения всех обработчиков), программа будет инициировать обновление снова и снова. Проанализируем основные методы решения этой задачи.
В случае файловой базы данных (не SQL) критически важную роль играют вспомогательные файлы, которые создаются в папке с базой. Рассмотрим, какие файлы могут влиять на некорректное отображение статуса сеансов:
1Cv8.cdn — файл блокировки установки обновлений и регламентных заданий. Если он «завис» после сбоя, программа может вести себя непредсказуемо.1Cv8cl — носитель блокировок объектов базы данных.1Cv8Tmp.1cd и 1Cv8Tmp.1cl — временные файлы, хранящие информацию о текущих сеансах.Разберем порядок действий: необходимо полностью завершить работу всех пользователей и службы 1С (если она используется), а затем удалить все файлы из папки базы, КРОМЕ основного файла 1Cv8.1cd. Это позволит системе пересоздать служебную информацию с чистого листа.
Посмотрим на ситуацию со стороны системного администрирования. Если на одном из компьютеров в сети регулярно возникает «синий экран» (BSOD), это фатально для файловой базы. В момент вылета компьютер может удерживать часть таблиц файла 1Cv8.1cd заблокированными через протокол SMB.
Проанализируем рекомендации для стабильной работы:
Технически запуск обновления инициируется при сравнении метаданных и данных в специальном регистре. Проанализируем работу регистра сведений ВерсииПодсистем. Если номер версии в этом регистре ниже, чем фактический номер релиза конфигурации, 1С всегда будет запускать обработчики обновления.
Для исправления ситуации можно воспользоваться следующим алгоритмом:
БГУ или БухгалтерияГосударственногоУчреждения).1.0.58.3. Если номер старый, его необходимо скорректировать программно или с помощью внешней обработки «Установка версии обновления».Если обновление запускается и выдает ошибку, нам крайне важно понять, на какой именно процедуре происходит сбой. Рассмотрим работу с Журналом регистрации:
Установим фильтр по событию «Ошибки» и проанализируем записи, созданные в момент запуска обновления. Обычно там можно найти текст типа: Ошибка выполнения обработчика обновления ПланСчетовЕПСБУ.ОбновитьДанные.... Это даст нам понимание, какой именно объект мешает завершению процесса. Часто достаточно вручную исправить битую ссылку или удалить дублирующий предопределенный элемент, чтобы процедура «проскочила» дальше.
Стандартное «тестирование бочонком» (через Конфигуратор) помогает не всегда. Рассмотрим использование утилиты chdbfl.exe, которая находится в папке bin установленной платформы 1С.
Пошаговый процесс:
1Cv8.1cd.chdbfl.exe.В современных релизах БГУ многие процедуры обновления выполняются как фоновые задания. В файловом режиме они запускаются в сеансе первого зашедшего пользователя. Если этот пользователь «вылетел», задание может остаться в статусе «Выполняется» бесконечно.
Выясним статус через Консоль заданий. Если мы видим зависшее задание со словами Служебные процедуры обновления, его следует отменить и запустить базу монопольно, чтобы система могла пересчитать статус обновления в однопоточном режиме.
Проблема «произвольного» обновления чаще всего вызвана либо физическим повреждением структуры файла базы данных из-за сетевых сбоев, либо логической ошибкой в данных, которая не дает завершиться процедурам обновления Плана счетов. Как показывает практика, в некоторых случаях (как у автора темы) проблему решает установка следующего исправленного релиза, но до этого момента важно убедиться, что база очищена от временных файлов и корректно проходит проверку утилитой chdbfl.exe. Помните, что игнорирование «цикличного» обновления может привести к дублированию записей в регистрах и некорректным проводкам в будущем.