Ситуация, когда в одной информационной базе ведется учет по нескольким организациям, встречается повсеместно. Однако бизнес-процессы меняются: компании разделяются, продаются или переезжают на другие серверы. В этот момент перед системным администратором или программистом 1С встает задача: как извлечь данные только одной организации и перенести их в чистую базу, сохранив историю документов?
В данной статье мы подробно разберем два основных подхода к решению этой задачи, которые обсуждались на профессиональных форумах, проанализируем их плюсы и минусы, а также рассмотрим технические нюансы, о которых часто забывают.
Имеем исходную базу (например, 1С:Бухгалтерия 3.0), в которой ведется учет по трем фирмам: Организация А, Организация Б и Организация В. Нам необходимо получить новую базу, в которой останется только Организация А со своими документами, справочниками и настройками.
Мы рассмотрим два метода:
Это наиболее технологичный и "штатный" способ, предусмотренный платформой 1С. Он позволяет выгрузить данные выборочно, используя механизм планов обмена.
Давайте разберем алгоритм действий пошагово.
Сначала нам нужно включить возможность синхронизации данных, если она еще не используется. Для этого перейдем в раздел Администрирование — Синхронизация данных и установим флаг Синхронизация данных.
Далее создаем новую настройку синхронизации:
После создания настройки в списке синхронизаций появится новая запись. Нам необходимо создать саму базу-приемник.
В меню настройки нажимаем кнопку, отвечающую за создание начального образа (обычно это иконка с цилиндром и плюсиком или пункт в меню "Еще"). Система предложит выбрать каталог, куда будет сохранена новая база.
Важный момент: Процесс создания начального образа может занять длительное время, так как платформа 1С физически копирует структуры данных и отбирает записи, относящиеся к выбранной организации. Рекомендуем делать это на копии базы или в нерабочее время.
Полученная база (начальный образ) по умолчанию является Подчиненным узлом РИБ. Это означает, что:
Чтобы превратить эту базу в полноценную и самостоятельную, нам необходимо "отвязать" ее от главного узла. Рассмотрим, как это сделать грамотно.
Существует два основных способа сброса главного узла:
Вариант А: Через параметры запуска конфигуратора
Запустим конфигуратор новой базы с ключом /ResetMasterNode. Это штатная команда платформы для превращения подчиненного узла в самостоятельный.
Вариант Б: Программный способ
Можно использовать простую внешнюю обработку или выполнить код через "Функции для технического специалиста" (если есть консоль кода). Код выглядит следующим образом:
// Устанавливаем главный узел в значение Неопределено
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
После выполнения этого кода база станет независимой, и вы сможете обновлять ее как обычно.
При использовании РИБ важно помнить о данных, которые могут не перенестись или перенестись некорректно. Проанализируем список потенциальных проблем:
<Объект не найден>. РИБ фильтрует данные жестко: если объект не относится к выгружаемой организации, он не переносится.После создания базы через РИБ обязательно нужно зайти в Функции для технического специалиста и проверить константы. Часто остаются включенными служебные константы вроде ЭтоАвтономноеРабочееМесто или НастройкаПодчиненногоУзлаРИБЗавершена. Их следует выключить вручную, иначе могут быть проблемы с обновлением через интернет.
Если вам критически важно сохранить абсолютно все настройки, присоединенные файлы, историю ЭДО и вы боитесь потерять связи из-за ошибок учета, этот метод будет надежнее, хотя и трудозатратнее.
Мы просто копируем файл базы данных (1Cv8.1CD) или разворачиваем бэкап в новую папку. Теперь у нас есть две идентичные базы с тремя организациями.
В новой базе нам нужно удалить Организацию Б и Организацию В. Вручную помечать тысячи документов нереально. Для этого существуют специальные обработки (например, "Групповая обработка справочников и документов" или специализированные решения с Инфостарта "Удаление данных по организации").
Алгоритм работы обработки обычно следующий:
После того как лишние объекты помечены, запускаем штатную процедуру Администрирование — Удаление помеченных объектов. Выбираем режим "Автоматическое удаление всех отмеченных".
Здесь мы неизбежно столкнемся с проблемой ссылочной целостности. Система сообщит, что некоторые документы удалить нельзя, так как на них ссылаются другие объекты. Нам придется анализировать эти связи. Часто это бывают общие справочники (Номенклатура, Контрагенты), которые использовались во всех фирмах. Их удалять не нужно.
После удаления данных файл базы (1Cv8.1CD) не уменьшится в размере автоматически. Внутри него образуется "пустое место". Чтобы уменьшить размер файла и ускорить работу, необходимо зайти в Конфигуратор и выполнить Тестирование и исправление с опциями "Сжатие таблиц информационной базы" и "Реструктуризация таблиц".
| Характеристика | Метод РИБ | Метод "Вычитания" |
|---|---|---|
| Скорость получения результата | Высокая (создание образа автоматизировано) | Низкая (удаление и контроль ссылок занимают часы) |
| Чистота данных | Высокая (в базу попадает только нужное) | Средняя (может остаться "мусор" в общих справочниках) |
| Сохранность настроек (ЭДО, отчеты) | Низкая (многое не переносится) | Максимальная (все настройки сохраняются) |
| Сложность для специалиста | Средняя (нужно уметь отвязывать узел) | Высокая (нужно разгребать конфликты удаления) |
Если база типовая, учет велся корректно, и вам нужны только документы и справочники — смело выбирайте метод РИБ. Это сэкономит вам массу времени. Не забудьте выполнить процедуру ПланыОбмена.УстановитьГлавныйУзел(Неопределено) после создания образа.
Если же база сильно переписана, в ней много специфических регистров сведений, активно используется ЭДО с архивом за 5 лет или файлы хранятся сложным образом — лучше использовать метод копирования и удаления лишнего. Это даст гарантию, что ничего важного не потеряется, хотя и потребует больше времени на очистку "мусора".
В любом случае, перед началом работ обязательно сделайте резервную копию исходной базы!