Как удалить данные конкретной организации или выделить её в отдельную базу 1С: подробное руководство

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет
← На главную

В процессе работы с многофирменными базами 1С часто возникает ситуация, когда необходимо полностью удалить данные одной организации или, наоборот, «отпочковать» её в отдельную информационную базу. Стандартный механизм удаления помеченных объектов в таких случаях часто оказывается неэффективным: процесс поиска ссылок может длиться часами или вовсе приводить к зависанию системы из-за огромного объема связанных записей в регистрах и отсутствия необходимых индексов. В этой статье мы разберем наиболее надежные способы решения этой задачи, основываясь на практическом опыте специалистов.

Почему стандартное удаление может не работать

Прежде чем переходить к альтернативным методам, проанализируем, почему стандартная обработка «Удаление помеченных объектов» в 1С:Предприятие часто «висит». Основная причина заключается в том, что при поиске ссылок система проверяет каждую таблицу базы данных на наличие связей с удаляемым объектом. Если база данных имеет большой объем, а поля, по которым осуществляется поиск, не индексированы должным образом, SQL-сервер тратит колоссальное время на полное сканирование таблиц. Также стоит учитывать таблицы итогов регистров накопления и сведений, которые могут содержать миллионы записей, связанных с удаляемой организацией.

Метод создания РИБ по организации: пошаговый алгоритм

Одним из самых эффективных и «чистых» способов разделения данных является использование механизма Распределенных Информационных Баз (РИБ) с фильтрацией по организации. Этот метод позволяет создать новую базу, в которую попадут только документы и справочники, относящиеся к конкретному юридическому лицу.

Рассмотрим основные шаги этого процесса:

  1. Настройка синхронизации: В исходной базе создаем новый узел обмена (РИБ по организации). В настройках обязательно указываем фильтр по той организации, которую необходимо перенести.
  2. Создание начального образа: Система сформирует файл базы данных, содержащий только отфильтрованные данные. Важно понимать, что в этот момент в новую базу попадут все документы организации и связанные с ними справочники.
  3. Проверка данных: После создания подчиненного узла необходимо зайти в него и убедиться, что все основные отчеты (например, Оборотно-сальдовая ведомость) совпадают с данными в исходной базе.
  4. Отвязка от главного узла: Чтобы сделать базу автономной, необходимо разорвать связь РИБ. Это делается программно или через консоль запросов, очищая константу или параметры обмена, чтобы база перестала считать себя подчиненной.
  5. Очистка исходной базы: После того как данные успешно перенесены в новую базу, исходную базу можно либо удалить (если целью было разделение), либо продолжить попытки удаления данных в ней, имея надежную копию.

Проверка полноты переноса данных

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

Для быстрой сверки можно использовать простой запрос в консоли. Посмотрим на пример запроса для проверки справочника Номенклатура:


ВЫБРАТЬ
    КОЛИЧЕСТВО(*) КАК Количество
ИЗ
    Справочник.Номенклатура

Такую проверку следует выполнить для всех ключевых справочников: Контрагенты, ДоговорыКонтрагентов, Склады. Если вы обнаружили, что в новой базе элементов меньше, чем должно быть, необходимо принудительно зарегистрировать эти объекты к обмену в главной базе.

Как принудительно зарегистрировать объекты для обмена

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


УзелОбмена = ПланыОбмена.ПоОрганизации.НайтиПоКоду("001"); // Укажите код вашего узла
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Метаданные.Справочники.Номенклатура);

После выполнения этого кода при следующем сеансе синхронизации все элементы справочника будут переданы в подчиненную базу. Это гарантирует, что аналитика в документах не будет потеряна.

Альтернативный метод: Выгрузка и загрузка XML

Если метод с РИБ кажется избыточным, разберем другой вариант — использование универсальной обработки ВыгрузкаЗагрузкаДанныхXML. Этот способ хорош тем, что позволяет гибко выбирать объекты.

Особенности этого подхода:

Однако стоит помнить, что при таком подходе могут не перенестись настройки пользователей, пароли и специфические настройки 1С-Отчетности. Их придется догружать отдельно или настраивать заново.

Действия после удаления: Сжатие базы

Важно помнить, что даже после успешного удаления всех документов и организации из базы, физический размер файла (.1CD или файл данных SQL) не уменьшится сам по себе. Проанализируем необходимые завершающие действия:

  1. Для файловой базы: Необходимо запустить «Конфигуратор», перейти в меню «Администрирование» — «Тестирование и исправление» и выбрать пункт «Сжатие таблиц информационной базы».
  2. Для клиент-серверной базы (SQL): Требуется выполнить операцию Shrink (сжатие) базы данных средствами SQL Server Management Studio, а также обновить статистики для оптимизации дальнейшей работы.

Использование предложенных методов позволяет избежать многочасового ожидания при стандартном удалении и гарантирует сохранность данных при разделении учета.

← На главную