Часто перед специалистами встает вопрос: можно ли взять две уже работающие базы, в которых ведется учет в разных магазинах, и «склеить» их в одну распределенную информационную базу (РИБ)? Давайте детально разберемся, почему этот путь является крайне сложным и как правильно поступить в такой ситуации.
Для начала проанализируем, как работает РИБ в 1С. Механизм распределенных баз подразумевает, что все узлы системы являются «родственниками». При создании периферийного узла из центральной базы, 1С копирует структуру и данные, сохраняя уникальные идентификаторы объектов — GUID (глобальные уникальные идентификаторы). Все объекты в Справочниках, Документах и Планах обмена имеют свои GUID, которые обеспечивают связность данных.
Когда у нас есть две независимые базы, которые развивались отдельно, ситуация следующая:
GUID в базе №1 и в базе №2.Следовательно, стандартного механизма создания РИБ «поверх» существующих баз не существует. Попытка сделать это приведет к тому, что результат вас не порадует, и база, скорее всего, станет неработоспособной.
Если перед вами стоит задача объединить учет двух магазинов, рассмотрим альтернативные варианты действий. Разберем их по шагам.
Если обе базы имеют идентичные конфигурации (один и тот же релиз 1С:Розница), можно воспользоваться инструментом Выгрузка и загрузка данных XML. Это стандартная обработка, позволяющая перенести данные из одной базы в другую. Однако здесь кроется серьезная ловушка.
Важно: этот метод сработает только в том случае, если в ваших справочниках и ПВХ (планах видов характеристик) нет предопределенных элементов, которые конфликтуют между собой. В реальных условиях «боевых» баз предопределенные элементы есть почти всегда.
Порядок действий:
Выгрузка и загрузка данных XML.РИБ для периферийного магазина.Это самый надежный способ, который требует «похоронить» одну из баз как самостоятельную единицу учета.
Поступление товаров или Ввод начальных остатков).РИБ, где все GUID будут соответствовать друг другу.При переносе остатков из базы во внешние файлы (например, Excel или XML) для загрузки в основную базу, обратите внимание на идентификаторы поиска:
Для того чтобы система корректно нашла товары, убедитесь, что в обеих базах совпадают:
Артикулы товаров.Штрихкоды (уникальные коды товаров).Коды элементов справочника (если они используются для обмена).Пример логики для переноса остатков через внешний файл:
// Примерный алгоритм поиска номенклатуры при загрузке остатков
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ Штрихкод = &Штрихкод";
Запрос.УстановитьПараметр("Штрихкод", ТекущийШтрихкод);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
// Заполняем документ найденным товаром
НоваяСтрока.Номенклатура = Результат.Ссылка;
КонецЕсли;
Попытка «насильственного» создания РИБ из двух независимых баз — это путь, полный подводных камней и рисков потери данных. В 90% случаев для бизнес-задач (например, «два магазина должны обмениваться документами») гораздо эффективнее использовать:
GUID к единому значению. Вы просто настраиваете правила сопоставления по ключевым реквизитам.РИБ из одной «чистой» базы — самый безопасный метод, обеспечивающий стабильную работу системы в будущем.Помните, что прежде чем приступать к таким работам, всегда делайте резервную копию обеих баз данных!