Как исправить ошибку «Таблица не найдена ВТЗаблокированоРегистратор» при обновлении БГУ 2.0

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет Финансы и профессиональные услуги
← На главную

При обновлении конфигурации «Бухгалтерия государственного учреждения» (БГУ 2.0), особенно на релизы версии 2.0.84.70 и выше, специалисты нередко сталкиваются с критической ошибкой в ходе выполнения отложенных обработчиков обновления. Ошибка сопровождается системным сообщением: {(14, 4)}: Таблица не найдена "ВТЗаблокированоРегистратор". В этой статье мы подробно разберем, почему возникает эта ситуация, как проанализировать стек вызовов и какие шаги предпринять для успешного завершения обновления.

Разберем природу ошибки и роль временных таблиц в БСП

Для начала проанализируем ситуацию. Ошибка возникает не в момент объединения конфигураций, а на этапе применения изменений в режиме «1С:Предприятие», когда запускаются процедуры Библиотеки стандартных подсистем (БСП). Таблица ВТЗаблокированоРегистратор не является реальной таблицей в базе данных. Это временная таблица, которая создается динамически программным кодом в менеджере временных таблиц при выполнении запросов к регистру бухгалтерии ЖурналПроводокЕПСБУ.

Рассмотрим фрагмент стека ошибки. Мы видим обращение к общему модулю ОбновлениеИнформационнойБазы.Модуль(5156) и методу ВыбратьРегистраторыРегистраДляОбработки. Этот метод предназначен для того, чтобы отобрать порцию данных (документов-регистраторов), которые еще не были обработаны новой версией программы. Если код пытается прочитать данные из временной таблицы, которая не была инициализирована в текущем контексте или была «затерта» другим вызовом, система выдает ошибку о ее отсутствии.

Причина №1: Конфликт с расширениями конфигурации

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

Проанализируем алгоритм исправления в этом случае:

  1. Перейдем в список расширений конфигурации.
  2. Временно отключим (снимем флаг «Активно») все установленные расширения.
  3. Перезапустим сеанс «1С:Предприятие» и инициируем продолжение обновления (через «Обслуживание» – «Результаты обновления»).
  4. Если обновление прошло успешно без ошибок, значит, проблему создавало одно из расширений.
  5. После завершения обновления включим расширения по одному, чтобы выявить проблемное, и адаптируем его код под новую версию основной конфигурации.

Причина №2: Некорректное сравнение и объединение при обновлении

Если конфигурация является нетиповой (в нее вносились изменения), существует риск того, что при обновлении был случайно затерт важный фрагмент кода поставщика, отвечающий за подготовку данных для запроса. Рассмотрим, как проверить этот вариант.

Нам необходимо выполнить сравнение основной конфигурации с конфигурацией поставщика. Особое внимание уделим следующим объектам:

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


Выборка = ОбновлениеИнформационнойБазы.ВыбратьРегистраторыРегистраДляОбработки(
    ПараметрыОбновления.ПараметрыПостроения, 
    "РегистрБухгалтерии.ЖурналПроводокЕПСБУ");

Если внутри метода ВыбратьРегистраторыРегистраДляОбработки логика создания временной таблицы ВТЗаблокированоРегистратор была нарушена из-за некорректного слияния кода, запрос предсказуемо упадет с ошибкой.

Причина №3: Наличие ошибок в фоновых заданиях и кэше

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

  1. Очистка серверного кэша: Остановим службу сервера «1С:Предприятия», удалим содержимое папки snaccxt в каталоге описания кластера и запустим службу снова.
  2. Принудительное выполнение обновления: Иногда полезно запустить обновление в монопольном режиме с помощью ключа запуска в командной строке: /C ЗапуститьОбновлениеИнформационнойБазы.
  3. Удаление патчей: Если перед обновлением были установлены исправления (патчи) для предыдущего релиза, они могут конфликтовать с новым кодом. Рекомендуется удалить все старые патчи перед началом процесса обновления.

Метод «Тестирование и исправление»

Проанализируем ситуацию, когда структура базы данных могла быть повреждена. В релизе 2.0.84.70 происходят значительные изменения в регистрах учета. Если в базе есть битые ссылки или логические несоответствия, механизмы БСП могут спотыкаться при формировании выборок данных.

Рекомендуем выполнить следующие действия в Конфигураторе:

Подведем итоги

Ошибка Таблица не найдена "ВТЗаблокированоРегистратор" — это сигнал о том, что программный контекст обновления нарушен. Чаще всего это происходит из-за того, что расширения «перехватывают» выполнение процедур и используют устаревшие алгоритмы работы с временными таблицами. Наиболее эффективным решением является временное отключение расширений и установка актуальных патчей от фирмы «1С» для текущего релиза конфигурации. Помните, что перед любыми манипуляциями с обновлением необходимо создавать резервную копию информационной базы.

← На главную