Как правильно удалить организацию в 1С:ERP и очистить регистр «Реестр документов»?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

В процессе эксплуатации крупных систем на базе 1С:ERP Управление предприятием часто возникает необходимость удаления одной из организаций. Казалось бы, процедура стандартная: пометить на удаление и воспользоваться типовой обработкой «Удаление помеченных объектов». Однако на практике программисты сталкиваются с тем, что организацию «держат» ссылки в технических регистрах, в частности, в регистре сведений РеестрДокументов и связанном с ним справочнике КлючиРеестраДокументов. Ситуация осложняется тем, что данные в ключе могут не совпадать с данными в самом документе.

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

Назначение регистра «Реестр документов»

Для начала проанализируем, зачем в системе 1С:ERP вообще нужен регистр РеестрДокументов. Это вспомогательный (технический) механизм, который выполняет роль агрегатора данных для подсистемы печати и отображения списков. Рассмотрим основные причины его существования:

  1. Оптимизация производительности: В системе ERP существуют сотни видов документов. Если бы системе требовалось вывести общий список всех документов предприятия или выполнить глобальный поиск, запрос к каждой таблице (UNION ALL) был бы крайне медленным и ресурсоемким.
  2. Унификация данных: Регистр хранит «выжимку» ключевых реквизитов: Дата, Номер, Организация, Контрагент, Сумма, Валюта, Ответственный. Это позволяет строить реестры документов по всей базе за доли секунды.
  3. Поддержка справочника «Ключи реестра документов»: Чтобы уменьшить объем хранимых данных, система группирует документы по определенным признакам (тип документа, организация, хозяйственная операция) и записывает ссылку на этот набор признаков в виде элемента справочника КлючиРеестраДокументов.

Почему возникают несовпадения в ключах реестра

Часто программисты обнаруживают странную ситуацию: в записи регистра РеестрДокументов в измерении Организация указана «Организация А», а в ключе, который привязан к этой же записи, фигурирует «Организация Б». Рассмотрим причины такого поведения системы:

Алгоритм очистки базы при удалении организации

Рассмотрим пошагово, как решить проблему, если удаление организации блокируется записями в реестре документов.

Шаг 1. Анализ ссылок и удаление записей регистра

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

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


НаборЗаписей = РегистрыСведений.РеестрДокументов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Организация.Установить(УдаляемаяОрганизация);
НаборЗаписей.Записать(); // Записываем пустой набор, тем самым удаляя данные

Однако помните, что проблема автора заключалась в том, что организация «зависла» в измерении Ссылка (через ключ). В этом случае необходимо очищать записи, где ссылка ведет на документы удаляемой организации, независимо от значения измерения Организация. Для такого действия подойдёт обработка для быстрого удаления записей в выбранном регистре.

Шаг 2. Работа со справочником «Ключи реестра документов»

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

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

Шаг 3. Использование штатных инструментов обновления

В типовых конфигурациях 1С:ERP предусмотрены механизмы для автоматического восстановления реестра документов. Рассмотрим, как ими воспользоваться:

  1. Перейдите в меню «Функции для технического специалиста» (ранее «Все функции»).
  2. Найдите обработку ОбновлениеРеестраДокументов (название может варьироваться в зависимости от версии, иногда это регламентное задание).
  3. Запустите процесс полного обновления. Система просканирует все документы и заново сформирует записи регистра и корректные ключи.

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

Шаг 4. Обработка Интеркампани

Проанализируем ситуацию, если организация участвовала в схемах передачи товаров между организациями. Проверьте регистр сведений НастройкиПередачиТоваровМеждуОрганизациями. Пока в нем существуют записи с удаляемой организацией, система может генерировать новые ссылки при перепроведении связанных документов (например, отчетов о розничных продажах или перемещений).

Резюме и рекомендации

Подведем итоги нашего исследования:

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

← На главную