Ситуация, когда в одной информационной базе велся учет по нескольким организациям, а со временем возникла необходимость их разделить, является классической для растущего бизнеса. В рамках данной статьи мы подробно разберем, как правильно перевести учет каждой компании в свою базу, сохраняя при этом целостность данных и не нарушая лицензионную политику компании «1С».
Прежде чем приступать к техническим работам, проанализируем юридическую сторону вопроса. Если обе организации находятся в одной локальной сети и используют один сервер, то покупать вторую основную поставку «1С:Комплексная автоматизация» (КА) не требуется. Согласно лицензионному соглашению, основная поставка позволяет создавать неограниченное количество информационных баз на одном сервере или в локальной сети.
Однако стоит учитывать следующие ограничения:
Рассмотрим самый простой, но трудозатратный с точки зрения очистки данных способ. Он заключается в создании идентичного клона базы и последующем удалении информации, которая не относится к конкретной организации.
Шаг 1: Подготовка копии
Сначала создадим полную копию текущей базы. Для этого в консоли управления сервером или через файл .dt развернем новую базу под вторым именем. При первом запуске новой базы система задаст критически важный вопрос: «Информационная база перемещена или является копией?». Мы обязательно выбираем вариант «Это копия».
Выясним причину, почему это так важно: при выборе варианта «Это копия» система автоматически блокирует регламентные задания, такие как:
Это предотвратит отправку ошибочных или дублирующих данных во внешние системы в процессе нашей работы по разделению.
Шаг 2: Удаление данных в обеих базах
Теперь у нас есть две идентичные базы (База А и База Б). В Базе А нам нужно оставить данные только Организации 1, а в Базе Б — только Организации 2.
Проанализируем процесс удаления. В «1С:Комплексная автоматизация» данные тесно переплетены. Нам потребуется:
Шаг 3: Проверка целостности (ТиИ)
После массового удаления данных обязательно запустим Тестирование и исправление информационной базы (меню «Администрирование» — «Выгрузка/Загрузка данных» в режиме Конфигуратора или через меню «Тестирование и исправление»). Это поможет восстановить ссылочную целостность и пересчитать итоги.
Разберем по шагам более профессиональный метод, который позволяет минимизировать объем ручной очистки. Механизм распределенных информационных баз (РИБ) с фильтром по организации позволяет «выгрузить» из центральной базы только те данные, которые относятся к конкретному юридическому лицу.
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
После выполнения этой команды база станет полностью автономной. Рассмотрим преимущество этого метода: система сама отфильтрует документы, и вам не придется вручную помечать тысячи записей на удаление. Однако помните, что справочники (Номенклатура, Контрагенты) чаще всего переносятся целиком, и лишние элементы придется удалять отдельно, если они мешают.
Проанализируем ситуацию с дисковым пространством. Если ваша база данных работает на СУБД PostgreSQL и имеет размер, например, 6 Гб, то после удаления данных (в первом методе) размер файла на диске не уменьшится сам по себе. Postgres помечает место как свободное внутри себя, но не отдает его операционной системе.
Чтобы физически уменьшить размер базы на диске, после завершения всех процедур по разделению и очистке, рекомендуется выполнить команду VACUUM FULL. Это можно сделать через утилиту pgAdmin или консоль запросов:
VACUUM FULL;
ANALYZE;
Альтернативный и более простой для многих способ — выгрузить очищенную базу в файл .dt и загрузить её обратно в новую пустую базу на сервере. Это полностью пересоберет таблицы и индексы, оптимизировав их размер.
Посмотрим на специфические механизмы КА, которые могут потребовать ручного контроля после разделения баз:
Заключение: Какой бы путь вы ни выбрали — ручную очистку копии или использование РИБ — всегда начинайте работу с создания полной резервной копии. Оптимальным для «1С:Комплексная автоматизация» считается метод через РИБ, так как он обеспечивает более высокую чистоту данных «на выходе».