Как в БГУ 1.0 удалить элементы справочника «Основные средства», если на них есть ссылки в регистрах?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Сфера услуг, туризм и социальный сектор
← На главную

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

Почему стандартное удаление не срабатывает?

В платформе 1С реализован механизм контроля ссылочной целостности. Это означает, что вы не можете удалить объект, пока на него ссылается хотя бы один другой объект в базе — будь то документ, другой справочник или запись регистра. В БГУ 1.0 основные средства тесно связаны с историческими данными, которые хранятся в регистрах сведений. Рассмотрим типичные регистры, которые блокируют удаление:

Проанализируем ситуацию: если записи в этих регистрах являются «независимыми» (то есть не подчинены конкретному документу-регистратору), их нужно удалять программно или специальными обработками. Если же они подчинены регистратору, то придется очищать сами документы (например, документы свертки Ввод остатков).

Способ 1. Использование метода «Поиска и замены значений»

Это один из самых безопасных и эффективных методов, позволяющий не нарушать логическую структуру базы. Вместо того чтобы просто «вырывать» записи из регистров, мы перенаправим их на один технический объект.

  1. Создадим в справочнике Основные средства новый элемент с названием, например, «З_УдаленныеОбъекты» (префикс «З» поможет ему всегда быть в конце списка).
  2. Воспользуемся стандартной обработкой «Поиск и замена значений» (ее можно найти на диске ИТС или в составе дополнительных обработок вашей базы).
  3. В колонке «Что заменять» выберем все ОС, которые подлежат удалению.
  4. В колонке «На что заменять» укажем наш новый технический элемент.
  5. Выполним замену. После этого все записи в регистрах будут ссылаться на «З_УдаленныеОбъекты», а старые элементы справочника станут «чистыми» и легко удалятся стандартным инструментом.

Способ 2. Очистка через «Универсальный подбор и обработку объектов»

Если нам необходимо именно удалить записи из регистров, а не перенаправить их, рассмотрим работу с универсальной обработкой для обычных форм. Это быстрее, чем искать записи вручную через интерфейс списков.

  1. Откроем обработку УниверсальныйПодборИОбработкаОбъектов.epf.
  2. В поле «Объект поиска» выберем нужный Регистр сведений (например, ПараметрыАмортизацииОСБухгалтерскийУчет).
  3. На вкладке «Отбор» установим фильтр по измерению ОсновноеСредство, выбрав те элементы, которые хотим удалить.
  4. Нажмем «Найти объекты».
  5. Перейдем на вкладку «Обработки», выберем в списке действие «Удалить» (или «Пометить на удаление», если это справочник) и нажмем «Выполнить».

Важный нюанс: если в регистре измерение ОсновноеСредство помечено как Ведущее, то при удалении самого ОС записи в этом регистре должны удаляться автоматически. Однако в БГУ 1.0 это свойство настроено не во всех регистрах, что и вызывает трудности.

Способ 3. Автоматизированное удаление с обходом ссылок

Существуют специализированные внешние обработки (например, те, что упоминались в обсуждении на Mista или InfoStart), которые умеют анализировать дерево ссылок и удалять объект вместе со всеми зависимыми записями в регистрах. Рассмотрим алгоритм работы таких инструментов:

Программный метод удаления записей (для разработчиков)

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


НаборЗаписей = РегистрыСведений.МестонахождениеОС.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ОсновноеСредство.Установить(СсылкаНаУдаляемоеОС);
// Читаем пустой набор с этим отбором, что фактически при записи удалит все записи по этому ОС
НаборЗаписей.Записать(); 

Этот метод позволяет точечно «выжигать» упоминания объекта в тех регистрах, которые мешают удалению, не затрагивая другие данные.

Завершающий этап: Тестирование и исправление

После массового удаления объектов или принудительной очистки регистров крайне важно убедиться, что в базе не осталось «битых» ссылок (записей вида <Объект не найден...>). Для этого выполним следующие шаги:

  1. Запустим базу в режиме Конфигуратор.
  2. Перейдем в меню Администрирование — Тестирование и исправление.
  3. Установим флажки на пунктах:
    • Проверка ссылочной целостности информационной базы.
    • Пересчет итогов.
  4. В блоке «При наличии ссылок на несуществующие объекты» выберем «Очищать ссылки».
  5. Нажмем «Выполнить».

Важное предостережение: Перед любыми манипуляциями по удалению данных в БГУ 1.0 (особенно в государственных учреждениях) обязательно создавайте резервную копию базы. Некорректное удаление ОС может привести к ошибкам в регламентированной отчетности и несоответствию данных в оборотно-сальдовой ведомости по счетам 101.00 и 104.00.

← На главную