В процессе работы с конфигурацией «1С:Бухгалтерия государственного учреждения 8» (редакция 2.0) пользователи и технические специалисты нередко сталкиваются с необходимостью полной очистки или переустановки комплектов отчетности. Типичная ситуация: в базу загрузили новый комплект форм, затем старый (устаревший), возникли логические конфликты в структуре метаданных, и теперь базу нужно вернуть в исходное («чистое») состояние.
При попытке стандартного удаления справочника Виды отчетов система выдает огромное количество предупреждений о наличии связей с другими объектами: колонками, строками, правилами проверки и операндами показателей. Рассмотрим подробно, почему возникает эта проблема, как устроена структура метаданных отчетности в БГУ 2 и как правильно выполнить полную очистку базы по шагам.
Справочник Виды отчетов является вершиной сложной иерархической пирамиды. Каждая отчетная форма (например, форма 0503737 или 0503130) описывается целым каскадом связанных подчиненных и независимых справочников и регистров:
Проанализируем ситуацию: если в процессе загрузки или обновления комплектов (файлов формата .repx) произошел сбой, либо данные переносились некорректно, связи между владельцами и подчиненными элементами могут разрушиться. Возникают так называемые «битые» или «осиротевшие» ссылки. Например, элемент справочника Операнды показателей может потерять ссылку на свой ПоказательОтбор. В этом случае стандартные механизмы контроля целостности СУБД блокируют интерактивное удаление, а стандартная обработка группового изменения реквизитов отказывается обрабатывать поврежденные элементы.
---
Прежде чем приступать к пометке элементов на удаление, необходимо убрать все ссылки «верхнего уровня», которые ссылаются на виды отчетов из документов конфигурации. Выполним следующие подготовительные действия:
Удаление помеченных объектов. Наличие хотя бы одного проведенного или непроведенного документа заблокирует удаление соответствующего вида отчета.Установленные комплекты отчетности. Записи в этом регистре также удерживают ссылки на отчетные формы и должны быть очищены.---
Разберем ключевую ошибку, которую совершают многие администраторы 1С при попытке очистить справочники. Попытка пометить элементы на удаление с помощью обработки Групповое изменение реквизитов напрямую (установив признак ПометкаУдаления = Истина) часто приводит к тупику.
Важное правило платформы 1С:Предприятие: каскадная пометка подчиненных элементов работает только при интерактивном действии пользователя в форме списка или дерева справочника. Когда мы помечаем на удаление родительскую группу или элемент-владелец непосредственно в интерфейсе справочника Виды отчетов, платформа автоматически запускает внутренние обработчики и каскадно помечает на удаление все подчиненные строки, колонки и показатели. Групповое изменение реквизитов обходит эти обработчики, оставляя тысячи подчиненных элементов «активными», что делает последующее удаление невозможным.
Выполним пометку на удаление по шагам:
Контрольные соотношения через интерфейс или функции для технического специалиста. Выделим корневые группы и пометим их на удаление интерактивно.Виды отчетов. Выделим группы отчетов и установим на них пометку удаления. Платформа автоматически пометит всю вложенную структуру.---
Если в процессе удаления помеченных объектов система спотыкается на справочнике Операнды показателей, не позволяя их удалить и выдавая ошибки целостности, это признак разрушенных связей. Такие элементы невозможно даже открыть интерактивно в интерфейсе.
Выясним причину: в поврежденном операнде реквизит ПоказательОтбор не заполнен или содержит битую ссылку. Для исправления этой ситуации применим обработку Групповое изменение реквизитов:
Групповое изменение реквизитов.Операнды показателей.ПоказательОтбор и принудительно заполним его ссылкой на любой существующий (или даже пустой предопределенный) элемент справочника Показатели отчетов.Если требуется исправить битые ссылки программно, мы можем запустить во внешнем файле или консоли кода следующий скрипт восстановления ссылочной целостности:
Выборка = Справочники.ОперандыПоказателей.Выбрать();
СистематическиеОшибки = 0;
Пока Выборка.Следующий() Цикл
Если Не ЗначениеЗаполнено(Выборка.ПоказательОтбор) Тогда
Попытка
ОбъектОперанда = Выборка.ПолучитьОбъект();
ОбъектОперанда.ПоказательОтбор = Справочники.ПоказателиОтчетов.ПустаяСсылка();
ОбъектОперанда.Записать();
Исключение
СистематическиеОшибки = СистематическиеОшибки + 1;
КонецПопытки;
КонецЕсли;
КонецЦикла;
Сообщить("Успешно исправлено проблемных операндов: " + СистематическиеОшибки);
---
Мало кто знает, но в конфигурации БГУ 2 присутствует встроенный инструмент, предназначенный специально для устранения подобных коллизий в метаданных отчетности. Этот инструмент позволяет обойтись без сложного ручного исправления реквизитов.
Рассмотрим, как его найти и использовать:
Данная обработка предлагает три важнейших сценария для исправления структуры базы данных:
Очистить ошибочные группы раскрытия. Это действие полностью сбрасывает поврежденную аналитику, которая мешала интерактивному удалению связанных видов отчетов.Важное замечание: Сразу после использования данного инструмента и завершения удаления старых элементов необходимо выполнить повторную чистую загрузку актуальных комплектов отчетности (файлов statrep191N.repx, statrep33N.repx и др.), чтобы система корректно инициализировала новые метаданные и восстановила нормальную работу подсистемы отчетности.
---
Поскольку комплекты отчетности содержат десятки тысяч строк, колонок, формул и показателей, процесс их удаления создает колоссальную нагрузку на транзакционную систему СУБД. Попытка запустить обычное удаление в общем режиме работы пользователей может привести к зависанию базы данных или ошибке переполнения лога транзакций SQL.
Для успешного завершения очистки выполним следующие действия:
Администрирование -> Обслуживание -> Удаление помеченных объектов.Мы полностью очистили базу данных от проблемных комплектов отчетности. Теперь можно со спокойной душой приступать к последовательной и корректной загрузке актуальных отчетных форм в хронологическом порядке!