Как объединить две независимые базы 1С:Розница в единую систему РИБ?

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

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

Почему прямое «подключение» одной базы к другой невозможно?

Для начала проанализируем, как работает РИБ в 1С. Механизм распределенных баз подразумевает, что все узлы системы являются «родственниками». При создании периферийного узла из центральной базы, 1С копирует структуру и данные, сохраняя уникальные идентификаторы объектов — GUID (глобальные уникальные идентификаторы). Все объекты в Справочниках, Документах и Планах обмена имеют свои GUID, которые обеспечивают связность данных.

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

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

Стратегия решения: как поступить правильно?

Если перед вами стоит задача объединить учет двух магазинов, рассмотрим альтернативные варианты действий. Разберем их по шагам.

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

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

Важно: этот метод сработает только в том случае, если в ваших справочниках и ПВХ (планах видов характеристик) нет предопределенных элементов, которые конфликтуют между собой. В реальных условиях «боевых» баз предопределенные элементы есть почти всегда.

Порядок действий:

  1. Выполните выгрузку данных из «неосновной» базы с помощью стандартной обработки Выгрузка и загрузка данных XML.
  2. Загрузите полученный файл в «центральную» базу.
  3. Проведите тщательную очистку базы от дублей. Вам придется вручную или с помощью специализированных обработок сопоставить контрагентов, номенклатуру и договоры, которые создали дубли.
  4. После того как данные приведены в порядок и вы получили единую «эталонную» базу, вы можете создать из нее новый узел РИБ для периферийного магазина.

Вариант 2: Переход на «Чистый лист»

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

  1. Выберите одну базу в качестве «Центральной».
  2. Перенесите в неё все необходимые справочные данные (номенклатуру, контрагентов) из второй базы.
  3. Внесите начальные остатки товаров в центральную базу по данным второго магазина (через документ Поступление товаров или Ввод начальных остатков).
  4. Очистите вторую базу или создайте на её месте пустой узел, инициализировав его из вашей новой «Центральной» базы. Таким образом, вы получите классическую структуру РИБ, где все GUID будут соответствовать друг другу.

Технические нюансы и рекомендации

При переносе остатков из базы во внешние файлы (например, Excel или XML) для загрузки в основную базу, обратите внимание на идентификаторы поиска:

Для того чтобы система корректно нашла товары, убедитесь, что в обеих базах совпадают:

Пример логики для переноса остатков через внешний файл:


// Примерный алгоритм поиска номенклатуры при загрузке остатков
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ Штрихкод = &Штрихкод";
Запрос.УстановитьПараметр("Штрихкод", ТекущийШтрихкод);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
    // Заполняем документ найденным товаром
    НоваяСтрока.Номенклатура = Результат.Ссылка;
КонецЕсли;

Резюме

Попытка «насильственного» создания РИБ из двух независимых баз — это путь, полный подводных камней и рисков потери данных. В 90% случаев для бизнес-задач (например, «два магазина должны обмениваться документами») гораздо эффективнее использовать:

Помните, что прежде чем приступать к таким работам, всегда делайте резервную копию обеих баз данных!

← На главную