Кратко задача: Существует центральный офис (ЦО) и множество периферийных баз (ПБ). Наши внедренцы предлагают нам полную миграцию всех документов между всеми базами, мы же хотим миграцию только тех документов, которые были относятсся непосредственно к ПБ.
Ваши советы? Рекомендации? Вообще, как это реализовано в других организациях (алгоритм)?

===============================

90 % что если вы будите использовать полную миграцию как предлагает ваш внедренец, настанет полная ж*па. Они наверно не представляют себе размер файлов обмена для каждой базы. Слабо представляют что могут наделать в переферийной базе с чужими документами, думают что обороудование в переферии стоит такое же как и в центре, не думают о востонавлении последовательностей. Все известные мне примеры попытки внедрения полного обмена провалились утащив с собой всю систему.

====================================

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

Реализовать это тривиально, на скорость повлияет только положительно, на простоту обновлений не повлияет

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

=======================================

Начальные сведения лучше почитать на ИТС и посмотреть в примерах где описывается именно распределенная база а не обмен с любой конфигурацией. Трудно в формате форума все это написать.

==============================================

В узле обмена несколько реквизитов, по которым производится фильтрация:

Код 1c:
Организация
Подразделение
Касса
ТипЦенНоменклатуры
ТипЦенНоменклатурыКонтрагентов
...

фильтруются все документы, регистры и т.п.
Справочники редактируются/пополняются только в центральном узле - это аксиома. Иначе проблемы обязательно будут.
кроме этого, номера документов и коды некоторых других элементов префиксируются на основании данных (реквизит - Префикс) узла (а не организации).
Даже если накосячат с реквизитами документов, всё поправимо. В центре исправят, автоматом всё в перифирийном узле выправится.
Для моего случая (продуктовый ритейл, сеть) этот код отлично делит все данные:

Код 1c:
Процедура ПриОтправкеДанныхПодчиненному( ЭлементДанных, ОтправкаЭлемента )
    Попытка
        ОтправкаЭлемента    = ОтправкаЭлементаДанных.Авто;
        ТипДанных            = ТипЗнч(ЭлементДанных);
        ОбъектМетаданных    = ?(ТипДанных = Тип("УдалениеОбъекта"), ЭлементДанных.Ссылка.Метаданные(), ЭлементДанных.Метаданные());
        // Все удаления реплицируем во все узлы
 
        Если (ТипДанных <> Тип("УдалениеОбъекта")) Тогда
            Игнорировать = Ложь;
            ОписаниеТиповДокументы = Документы.ТипВсеСсылки();
 
            // отбор по: Организация, Подразделение, Склад.Подразделение, Касса
 
            //----
 
            // Документы
 
            Если Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
                Документ            = ЭлементДанных;
                ДокументМетаданные    = ОбъектМетаданных;
            //----
 
            // Регистры Накопления
 
            // Регистры Сведений
 
            ИначеЕсли Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных) ИЛИ (Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) И (ОбъектМетаданных.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору)) Тогда
                Документ            = ЭлементДанных.Отбор.Регистратор.Значение;
                ДокументМетаданные    = Документ.Метаданные();
            Иначе
                Документ            = Неопределено;
                ДокументМетаданные    = Неопределено;
            Конецесли;
 
            //Если (ТипДанных = Тип("УдалениеОбъекта")) И (Документ <> Неопределено) Тогда
 
            //    Документ = Документ.Ссылка;
 
            //КонецЕсли;
 
 
            ЦиклПоДокументамОснованиям = Истина;
            Пока ЦиклПоДокументамОснованиям И (Документ <> Неопределено) И (ДокументМетаданные <> Неопределено) Цикл
                Для Каждого Реквизит Из ДокументМетаданные.Реквизиты Цикл
                    ЗначениеРеквизита = Документ[Реквизит.Имя];
                    Если (ЗначениеРеквизита <> Неопределено) И (Не ЗначениеНеЗаполнено(ЗначениеРеквизита)) Тогда
                        ТипРеквизита = ТипЗнч(ЗначениеРеквизита);
                        //Сообщить(Реквизит.Представление());
 
                        Игнорировать =    Игнорировать
                                        ИЛИ (
                                        (ТипРеквизита = Тип("СправочникСсылка.Организации"))
                                        И (ЗначениеРеквизита <> Организация));
 
                        Игнорировать =    Игнорировать
                                        ИЛИ (
                                        (ТипРеквизита = Тип("СправочникСсылка.Подразделения"))
                                        И (ЗначениеРеквизита <> Подразделение));
 
                        Игнорировать =    Игнорировать
                                        ИЛИ (
                                        (ТипРеквизита = Тип("СправочникСсылка.Склады"))
                                        И (Не ЗначениеНеЗаполнено(ЗначениеРеквизита.Подразделение))
                                        И (ЗначениеРеквизита.Подразделение <> Подразделение));
 
                        Игнорировать =    Игнорировать
                                        ИЛИ (
                                        (ТипРеквизита = Тип("СправочникСсылка.Кассы"))
                                        И (ЗначениеРеквизита <> Касса));
 
                        Игнорировать =    Игнорировать
                                        ИЛИ (
                                        (ТипРеквизита = Тип("СправочникСсылка.ДоговорыКонтрагентов"))
                                        И (Не ЗначениеНеЗаполнено(ЗначениеРеквизита.ТипЦен))
                                        И
                                        (((ТипЗнч(ЗначениеРеквизита.ТипЦен) = Тип("СправочникСсылка.ТипыЦенНоменклатурыКонтрагентов")) И (ЗначениеРеквизита.ТипЦен.ТипЦеныНоменклатуры <> ТипЦенНоменклатурыКонтрагентов))
                                        ИЛИ
                                        ((ТипЗнч(ЗначениеРеквизита.ТипЦен) = Тип("СправочникСсылка.ТипыЦенНоменклатуры")) И (ЗначениеРеквизита.ТипЦен <> ТипЦенНоменклатуры))));
 
                        Если Игнорировать Тогда
                            Прервать;
                        КонецЕсли;
                    КонецЕсли;
                КонецЦикла;
 
                ЦиклПоДокументамОснованиям =    (НЕ Игнорировать)
                                                И ЕстьРеквизитДокумента("Основание", ДокументМетаданные)
                                                И (Не ЗначениеНеЗаполнено(Документ.Основание))
                                                И ОписаниеТиповДокументы.СодержитТип(ТипЗнч(Документ.Основание));
                Если ЦиклПоДокументамОснованиям Тогда
                    Документ            = Документ.Основание;
                    ДокументМетаданные    = Документ.Метаданные();
                Иначе
                    ЦиклПоДокументамОснованиям =    (НЕ Игнорировать)
                                                    И ЕстьРеквизитДокумента("ДокументОснование", ДокументМетаданные)
                                                    И (Не ЗначениеНеЗаполнено(Документ.ДокументОснование))
                                                    И ОписаниеТиповДокументы.СодержитТип(ТипЗнч(Документ.ДокументОснование));
                    Если ЦиклПоДокументамОснованиям Тогда
                        Документ            = Документ.ДокументОснование;
                        ДокументМетаданные    = Документ.Метаданные();
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
 
            Если Игнорировать Тогда
                ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить;
            Иначе
                //----
 
                // Регистры Сведений
 
                //----
 
                Если РепликацияШтрихкодов Тогда
                    // Запрет нестандартных штрих-кодов
 
                    Если ТипДанных = Тип("РегистрСведенийНаборЗаписей.Штрихкоды") И (ЭлементДанных.Количество() > 0) Тогда
                        ШК = ЭлементДанных.Получить(0);
                        Если (ШК <> Неопределено) Тогда
                            Игнорировать = (Лев(ШК.Штрихкод,1) = "2") ИЛИ (НЕ СтандартныйШК(ШК.ТипШтрихкода));
                        Конецесли;
                    КонецЕсли;
                Иначе
                    Игнорировать = Игнорировать ИЛИ (ТипДанных = Тип("РегистрСведенийНаборЗаписей.Штрихкоды"));
                КонецЕсли;
 
                // Запрет весовых кодов
 
                Игнорировать = Игнорировать ИЛИ (ТипДанных = Тип("РегистрСведенийНаборЗаписей.КодыВесовогоТовара"));
 
                // Запрет значений свойств объектов
 
                Игнорировать = Игнорировать ИЛИ (ТипДанных = Тип("РегистрСведенийНаборЗаписей.ЗначенияСвойствОбъектов"));
 
                Если Игнорировать Тогда
                    ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
                Конецесли;
            Конецесли;
        Конецесли;
    Исключение
        Сообщить("ОШИБКА при обработке элемента:"+ОбъектМетаданных.Представление()+":"+Строка(ТипЗнч(ЭлементДанных)));    
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры