При переходе на новые версии программных продуктов «1С:Предприятие», особенно на такие критически важные, как 1С:Зарплата и Управление Персоналом 3.1, пользователи часто сталкиваются с техническими сбоями в процессе выполнения обработчиков обновления. Одной из самых неприятных ошибок в версии 3.1.27.51 стала проблема в работе метода Справочники.РегламентированныеОтчеты.ЗаполнитьСписокРегламентированныхОтчетов. Система выдает сообщение о том, что транзакция осталась активной, и процесс обновления аварийно завершается.
В этой статье мы подробно разберем природу данной ошибки, проанализируем причины ее возникновения и рассмотрим пошаговые алгоритмы ее устранения, опираясь на практический опыт специалистов и официальные рекомендации.
Давайте разберем ситуацию: почему возникает сообщение «Открытая внутри обработчика обновления транзакция осталась активной (не была закрыта или отменена)»? В программном коде 1С выполнение важных операций часто оборачивается в блок транзакции. Если внутри этого блока происходит критическая ошибка, выполнение кода прерывается. Однако, из-за специфики обработчика ЗаполнитьСписокРегламентированныхОтчетов, исключение перехватывается платформой раньше, чем срабатывает команда ОтменитьТранзакцию() или ЗафиксироватьТранзакцию(). В итоге база данных оказывается в «подвешенном» состоянии, и обновление прекращается.
Основной причиной сбоя в данном случае является несоответствие данных в справочнике РегламентированныеОтчеты ожиданиям нового алгоритма обновления. Чаще всего это связано с наличием дублирующихся записей или некорректных ссылок на формы отчетов.
Как показывает практика, наиболее эффективным решением является ревизия справочника РегламентированныеОтчеты. Рассмотрим, как это сделать правильно:
/C СтартОбновленияИнформационнойБазы (с ключом подавления некоторых проверок) или через Конфигуратор.Если визуально дубли не обнаруживаются, попробуйте воспользоваться консолью запросов, чтобы найти записи с одинаковыми именами:
ВЫБРАТЬ
РегламентированныеОтчеты.Наименование,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегламентированныеОтчеты.Ссылка) КАК Количество
ИЗ
Справочник.РегламентированныеОтчеты КАК РегламентированныеОтчеты
СГРУППИРОВАТЬ ПО
РегламентированныеОтчеты.Наименование
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегламентированныеОтчеты.Ссылка) > 1
Компания «1С» оперативно выпускает исправления (патчи) для известных ошибок релизов. Для версии 3.1.27.51 был выпущен специальный патч, исправляющий поведение обработчика обновления справочника отчетов.
Рассмотрим порядок действий для применения патчей, если база не открывается:
Важный нюанс: Если база позволяет зайти в пользовательский режим (даже с ошибкой обновления в фоне), установку патчей можно выполнить через раздел Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи). После установки патчей система может потребовать перезапуск, после которого транзакция в обработчике закроется корректно.
Если очистка дублей и патчи не помогают, проанализируем состояние базы данных на предмет логической целостности. Выполним следующие шаги в Конфигураторе:
Часто после удаления «битых» ссылок, которые не были видны в обычном режиме, обработчик ЗаполнитьСписокРегламентированныхОтчетов начинает отрабатывать без ошибок.
Иногда ошибка «Транзакция осталась активной» является следствием сбоя кэширования метаданных. Если вы работаете в клиент-серверном варианте, выполним следующие действия:
C:\Program Files\1cv8\srvinfo) и удалите содержимое папок snccntx и кэш конкретной базы.Проблема обновления ЗУП 3.1.27.51 — это классический пример конфликта старых данных и новых алгоритмов платформы. Алгоритм ваших действий должен быть таким: сначала пробуем установить актуальные патчи через расширения, если не помогает — ищем и удаляем дубли в справочнике РегламентированныеОтчеты, и в крайнем случае прибегаем к «Тестированию и исправлению». Помните, что корректная работа со справочниками отчетности — залог успешной сдачи налоговых деклараций в будущем.