Проблема удаления устаревших или некорректно введенных элементов справочника Основные средства (ОС) в конфигурации «Бухгалтерия государственного учреждения 1.0» (БГУ 1.0) особенно актуальна после проведения свертки информационной базы. Даже если объект полностью списан, система часто не позволяет удалить его стандартным способом (через пометку на удаление и «Удаление помеченных объектов»), так как на него продолжают ссылаться многочисленные записи в регистрах сведений. Разберем подробно, как очистить базу от таких «фантомных» ссылок и корректно выполнить удаление.
В платформе 1С реализован механизм контроля ссылочной целостности. Это означает, что вы не можете удалить объект, пока на него ссылается хотя бы один другой объект в базе — будь то документ, другой справочник или запись регистра. В БГУ 1.0 основные средства тесно связаны с историческими данными, которые хранятся в регистрах сведений. Рассмотрим типичные регистры, которые блокируют удаление:
Проанализируем ситуацию: если записи в этих регистрах являются «независимыми» (то есть не подчинены конкретному документу-регистратору), их нужно удалять программно или специальными обработками. Если же они подчинены регистратору, то придется очищать сами документы (например, документы свертки Ввод остатков).
Это один из самых безопасных и эффективных методов, позволяющий не нарушать логическую структуру базы. Вместо того чтобы просто «вырывать» записи из регистров, мы перенаправим их на один технический объект.
Основные средства новый элемент с названием, например, «З_УдаленныеОбъекты» (префикс «З» поможет ему всегда быть в конце списка).Если нам необходимо именно удалить записи из регистров, а не перенаправить их, рассмотрим работу с универсальной обработкой для обычных форм. Это быстрее, чем искать записи вручную через интерфейс списков.
УниверсальныйПодборИОбработкаОбъектов.epf.ПараметрыАмортизацииОСБухгалтерскийУчет).ОсновноеСредство, выбрав те элементы, которые хотим удалить.Важный нюанс: если в регистре измерение ОсновноеСредство помечено как Ведущее, то при удалении самого ОС записи в этом регистре должны удаляться автоматически. Однако в БГУ 1.0 это свойство настроено не во всех регистрах, что и вызывает трудности.
Существуют специализированные внешние обработки (например, те, что упоминались в обсуждении на Mista или InfoStart), которые умеют анализировать дерево ссылок и удалять объект вместе со всеми зависимыми записями в регистрах. Рассмотрим алгоритм работы таких инструментов:
Если вам нужно быстро очистить конкретный регистр сведений по списку ОС программно, можно воспользоваться следующим примером кода. Рассмотрим ситуацию на примере регистра МестонахождениеОС:
НаборЗаписей = РегистрыСведений.МестонахождениеОС.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ОсновноеСредство.Установить(СсылкаНаУдаляемоеОС);
// Читаем пустой набор с этим отбором, что фактически при записи удалит все записи по этому ОС
НаборЗаписей.Записать();
Этот метод позволяет точечно «выжигать» упоминания объекта в тех регистрах, которые мешают удалению, не затрагивая другие данные.
После массового удаления объектов или принудительной очистки регистров крайне важно убедиться, что в базе не осталось «битых» ссылок (записей вида <Объект не найден...>). Для этого выполним следующие шаги:
Важное предостережение: Перед любыми манипуляциями по удалению данных в БГУ 1.0 (особенно в государственных учреждениях) обязательно создавайте резервную копию базы. Некорректное удаление ОС может привести к ошибкам в регламентированной отчетности и несоответствию данных в оборотно-сальдовой ведомости по счетам 101.00 и 104.00.