Удаление организации из действующей информационной базы 1С — задача гораздо более сложная, чем простая пометка на удаление. Система 1С:Предприятие построена на принципах строгой ссылочной целостности: если на объект (организацию, подразделение, склад) ссылается хотя бы один документ или запись в регистре, стандартная обработка «Удаление помеченных объектов» заблокирует операцию. Разберем пошагово, как преодолеть типичные препятствия, возникающие в процессе очистки базы от ненужной организации.
Одной из первых преград при удалении объектов прошлых периодов становится механизм «Даты запрета изменения данных». Даже если вы работаете под учетной записью с правами Администратор, система не позволит удалить документы или записи регистров, дата которых меньше установленного порога. Проанализируем сообщение об ошибке: если система указывает на невозможность удаления из-за периода (например, 1899 год или прошлые годы), необходимо временно отключить этот контроль.
Для решения этой проблемы перейдем в раздел Администрирование — Настройки пользователей и прав — Даты запрета изменения. Мы можем либо полностью снять флаг использования даты запрета, либо настроить исключение для пользователя-администратора. Важно помнить, что после завершения процедуры удаления настройки следует вернуть в исходное состояние для обеспечения безопасности данных.
Если задача стоит не просто «стереть всё», а объединить данные или корректно перенести ссылки с одной организации на другую (например, когда организация была создана ошибочно как дубль), воспользуемся штатным инструментом Поиск и замена дублей. Рассмотрим алгоритм работы с этой обработкой:
Организации.Этот метод позволяет «безболезненно» перекинуть все движения на актуальное юридическое лицо. Однако стоит учитывать, что после такой замены документы могут требовать перепроведения для обновления движений в регистрах бухгалтерии.
Часто возникает ситуация, когда при попытке удаления Подразделения или Организации система указывает на документы РегламентнаяОперация. Сложность в том, что при открытии этого документа реквизита «Подразделение» может быть не видно на форме. Рассмотрим, почему это происходит: ссылка на объект может содержаться не в самой «шапке» документа, а в его движениях по регистрам (например, РегистрБухгалтерии или РегистрыСведений).
Выясним причину такой привязки: регламентные операции закрытия месяца формируются автоматически. Если по подразделению были обороты, документ «закрытия» будет содержать записи по этому объекту. Чтобы успешно удалить организацию, такие документы необходимо:
УчетнаяПолитика или НастройкиУчетаЗарплаты), их нужно очистить вручную через форму списка соответствующего регистра.В исключительных случаях, когда стандартные методы не помогают или объем данных слишком велик, программисты используют специализированный код для принудительного удаления. Проанализируем пример кода, который выполняет обход метаданных и удаляет документы, связанные с конкретной организацией. Внимание: данный метод необратим и требует предварительного создания резервной копии базы!
Процедура ПринудительноеУдалениеОбъектовОрганизации(ВыбраннаяОрганизация)
// Обход всех видов документов в конфигурации
Для каждого МетаДок из Метаданные.Документы Цикл
Выборка = Документы[МетаДок.Имя].Выбрать();
Пока Выборка.Следующий() Цикл
ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
// Проверка наличия реквизита Организация
Если ОбщегоНазначения.ЕстьРеквизитДокумента("Организация", ДокОбъект.Метаданные()) Тогда
Если ДокОбъект.Организация = ВыбраннаяОрганизация Тогда
Сообщить("Удаление документа: " + ДокОбъект.Ссылка);
ДокОбъект.Удалить(); // Непосредственное удаление из базы
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
// Удаление самой организации после очистки ссылок
ОргОбъект = ВыбраннаяОрганизация.ПолучитьОбъект();
Если ОргОбъект <> Неопределено Тогда
ОргОбъект.Удалить();
Сообщить("Организация успешно удалена.");
КонецЕсли;
КонецПроцедуры
В данном коде используется метод Удалить(), который, в отличие от УстановитьПометкуУдаления(), физически стирает запись из таблицы базы данных, игнорируя проверку ссылочной целостности (хотя платформа может выдать ошибку, если есть жесткие связи на уровне СУБД). Использование такого кода оправдано только в копиях баз или при полной уверенности в отсутствии необходимости сохранения истории.
Иногда организация «застревает» в ключевых записях регистров сведений, таких как БухучетЗарплатыОрганизаций или СтавкиНалогаНаИмущество. Рассмотрим, как их очистить. Большинство этих регистров являются периодическими и независимыми. Чтобы удалить из них записи, нужно найти их через «Функции для технического специалиста» (ранее «Все функции»), установить отбор по полю Организация и вручную удалить строки. Если кнопка удаления недоступна, это означает, что регистр является подчиненным регистратору (документу). В таком случае нужно удалять сам документ-регистратор.
После массового удаления или замены объектов обязательно выполните процедуру Тестирование и исправление информационной базы (раздел Администрирование — Обслуживание). Выберем следующие опции:
Это поможет вычистить «фантомные» записи и битые ссылки, которые могли остаться в индексах базы данных после агрессивных манипуляций с объектами. По завершении всех процедур рекомендуется сформировать отчет «Оборотно-сальдовая ведомость» без фильтра по организации, чтобы убедиться в отсутствии «зависших» остатков по удаленному юридическому лицу.