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

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

Задача разделения единой информационной базы «1С:Комплексная автоматизация» (КА), в которой ведется учет по нескольким организациям, на отдельные базы — одна из самых трудоемких процедур для администратора или программиста 1С. Основная сложность заключается в том, что данные в таких конфигурациях тесно переплетены через общие справочники, настройки и механизмы внутреннего взаимодействия. В этой статье мы подробно разберем, как эффективно решить эту задачу, минимизировав риски потери данных и оставив базу максимально «чистой» от следов сторонних организаций.

Способ 1. Создание полной копии и ограничение доступа через RLS

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

Рассмотрим алгоритм действий:

  1. Создаем полную копию текущей информационной базы.
  2. В каждой из полученных баз настраиваем RLS (Record Level Security) — ограничение доступа на уровне записей. Для этого в разделе «НСИ и администрирование» — «Настройки пользователей и прав» — «Группы доступа» необходимо включить использование профилей с ограничением по организации.
  3. Устанавливаем для всех пользователей фильтр: в первой базе разрешаем доступ только к Организации №1, во второй — только к Организации №2.

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

Способ 2. Использование обработки «Выгрузка и загрузка данных XML»

Если нам необходимо получить действительно чистую базу, содержащую только объекты конкретной организации, рассмотрим вариант с выгрузкой данных. Типовая обработка ВыгрузкаЗагрузкаДанныхXML из состава «Инструментов разработчика» часто используется для этих целей.

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

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


ВЫБРАТЬ
    Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг
ГДЕ
    Организация = &НужнаяОрганизация

Главный риск здесь — потеря «неявных» связей. Если выгружать только документы, могут не перенестись связанные записи регистров сведений или настройки, которые не имеют прямого реквизита Организация.

Способ 3. Ручное удаление через пометку объектов

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

  1. Заходим в журнал документов и устанавливаем фильтр по организации, которую нужно удалить.
  2. Выделяем все документы (Ctrl+A) и помечаем их на удаление.
  3. Используем стандартную обработку «Удаление помеченных объектов».

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

Сложные технические нюансы: механизм «Интеркампани»

Выясним причину, по которой простое разделение часто приводит к ошибкам в регистрах. В КА реализован механизм Intercompany — передача товаров между организациями. Если в исходной базе Организация №1 продавала товар Организации №2, то в базе возникнут документы Передача товаров между организациями.

При разделении базы такие документы становятся проблемными:

Рекомендуем перед разделением закрыть все цепочки Интеркампани и, если это возможно, заменить их на обычные операции купли-продажи с внешним контрагентом, созданным специально для этих целей.

Очистка нормативно-справочной информации (НСИ)

Рассмотрим подробнее проблему «мусора» в общих справочниках. После того как документы лишней организации удалены, в базе остаются тысячи записей в справочниках Номенклатура, Контрагенты и Договоры.

Для качественной очистки выполним следующие шаги:

  1. Используем скрипт или обработку, которая проверяет наличие ссылок на элемент справочника во всех таблицах базы данных.
  2. Если ссылок на документ или регистр накопления (движения) нет — помечаем элемент на удаление.
  3. Особое внимание уделяем регистру сведений УчетныеПолитикиОрганизаций и НастройкиСистемы. Их нужно проверять вручную, так как они критически влияют на поведение программы в новой базе.

Использование формата EnterpriseData

В современных версиях «1С:Комплексная автоматизация» (начиная с 2.x) реализован универсальный формат обмена данными EnterpriseData. Посмотрим, почему этот метод может быть предпочтительнее XML-выгрузки:

Финальные рекомендации и «Сжатие» базы

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

  1. Запускаем конфигуратор.
  2. Переходим в меню «Администрирование» — «Тестирование и исправление».
  3. Выбираем пункт «Сжатие таблиц информационной базы».
  4. Для клиент-серверного варианта (SQL) дополнительно рекомендуется выполнить операцию Shrink Database средствами СУБД и обновить статистику.

Проанализировав все способы, можно сделать вывод: для быстрого старта используйте копию + RLS, а для качественного разделения — EnterpriseData или Выгрузку XML с последующей тщательной очисткой «сиротских» записей в справочниках. Всегда делайте резервную копию перед началом любых манипуляций с удалением данных!

← На главную