При обновлении конфигурации «Бухгалтерия государственного учреждения» (БГУ 2.0), особенно на релизы версии 2.0.84.70 и выше, специалисты нередко сталкиваются с критической ошибкой в ходе выполнения отложенных обработчиков обновления. Ошибка сопровождается системным сообщением: {(14, 4)}: Таблица не найдена "ВТЗаблокированоРегистратор". В этой статье мы подробно разберем, почему возникает эта ситуация, как проанализировать стек вызовов и какие шаги предпринять для успешного завершения обновления.
Для начала проанализируем ситуацию. Ошибка возникает не в момент объединения конфигураций, а на этапе применения изменений в режиме «1С:Предприятие», когда запускаются процедуры Библиотеки стандартных подсистем (БСП). Таблица ВТЗаблокированоРегистратор не является реальной таблицей в базе данных. Это временная таблица, которая создается динамически программным кодом в менеджере временных таблиц при выполнении запросов к регистру бухгалтерии ЖурналПроводокЕПСБУ.
Рассмотрим фрагмент стека ошибки. Мы видим обращение к общему модулю ОбновлениеИнформационнойБазы.Модуль(5156) и методу ВыбратьРегистраторыРегистраДляОбработки. Этот метод предназначен для того, чтобы отобрать порцию данных (документов-регистраторов), которые еще не были обработаны новой версией программы. Если код пытается прочитать данные из временной таблицы, которая не была инициализирована в текущем контексте или была «затерта» другим вызовом, система выдает ошибку о ее отсутствии.
Как показывает практика и опыт участников форума, наиболее частой причиной данной ошибки являются устаревшие расширения. Выясним, почему это происходит. В расширениях часто заимствуются общие модули или методы, отвечающие за обновление данных. Если в новом релизе поставщика (например, в БГУ 2.0.84.70) структура запроса в БСП изменилась, а расширение продолжает использовать старую логику формирования временных таблиц, возникает конфликт.
Проанализируем алгоритм исправления в этом случае:
Если конфигурация является нетиповой (в нее вносились изменения), существует риск того, что при обновлении был случайно затерт важный фрагмент кода поставщика, отвечающий за подготовку данных для запроса. Рассмотрим, как проверить этот вариант.
Нам необходимо выполнить сравнение основной конфигурации с конфигурацией поставщика. Особое внимание уделим следующим объектам:
ОбновлениеИнформационнойБазы;ОбновлениеИнформационнойБазыСлужебный;ЖурналПроводокЕПСБУ.Если мы обнаружим, что в этих модулях есть различия, не связанные с нашими доработками, следует восстановить типовой код. Посмотрим на пример типичного вызова в модуле менеджера регистра:
Выборка = ОбновлениеИнформационнойБазы.ВыбратьРегистраторыРегистраДляОбработки(
ПараметрыОбновления.ПараметрыПостроения,
"РегистрБухгалтерии.ЖурналПроводокЕПСБУ");
Если внутри метода ВыбратьРегистраторыРегистраДляОбработки логика создания временной таблицы ВТЗаблокированоРегистратор была нарушена из-за некорректного слияния кода, запрос предсказуемо упадет с ошибкой.
Иногда ошибка может носить «фантомный» характер и быть связанной с кэшированием метаданных на стороне сервера или некорректным завершением предыдущих фоновых заданий обновления. Разберем шаги по очистке системы:
snaccxt в каталоге описания кластера и запустим службу снова./C ЗапуститьОбновлениеИнформационнойБазы.Проанализируем ситуацию, когда структура базы данных могла быть повреждена. В релизе 2.0.84.70 происходят значительные изменения в регистрах учета. Если в базе есть битые ссылки или логические несоответствия, механизмы БСП могут спотыкаться при формировании выборок данных.
Рекомендуем выполнить следующие действия в Конфигураторе:
Ошибка Таблица не найдена "ВТЗаблокированоРегистратор" — это сигнал о том, что программный контекст обновления нарушен. Чаще всего это происходит из-за того, что расширения «перехватывают» выполнение процедур и используют устаревшие алгоритмы работы с временными таблицами. Наиболее эффективным решением является временное отключение расширений и установка актуальных патчей от фирмы «1С» для текущего релиза конфигурации. Помните, что перед любыми манипуляциями с обновлением необходимо создавать резервную копию информационной базы.