Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обмен данными (РИБ) установить фильтр передачи данных
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
poritskiy
Есть база УТП, ...
сделал РИБ через план обменна Полный ,в такую же базу, все нормально работает но теперь захотели чтобы обмен происходил по тому Контрагенту в которого указа определенный "Основной менеджер"...
Как организовать такой фильтр?
При этом лутше переделать "Полный" план обмена или писать свой с нуля?
Если переделать полный план, то в каких процедурах это реализовывать ...
Познания в программировании слабые, подскажите что делать для решения этой задачи
Batchir
Модуль плана обмена.

Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
КонецПроцедуры

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента)
КонецПроцедуры

Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
КонецПроцедуры

Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
КонецПроцедуры
MATEVI
Посмотреть как в бухии организован обмен по организации.
poritskiy
Люди расскажите глупому как правильно ....
Проблема вот в чем ...
В фирмы есть оптовый менеджер который ездит по регионам, связи через интернет нет ...
Решили делать распределенку... Но с таким условием чтобы в переферийную базу попадали только те данные в которых в контрагенте в реквизите основнойменеджерпокупателя указан этот менеджер...
Спрашиваю с какими доками работает этот менеджер мне отвечают:"заказ покупателя, резервирование а дальше не знаю, с остальными сам разберешься".
Вот теперь самый главный вопрос КАК ОПРЕДЕЛИТЬ СОСТАВ ПЛАНА ОБМЕНА?
Я отбираю документы в шапке которых есть реквизит контрагент, но вот не пойму еще одного
допустим док предал в переферийною базу движения которые он сделал главной базе нужно тоже передавать тоесть включать в состав плана обмена регистры или док в переферийной базе нужно перепроводить...
MATEVI
Цитата(poritskiy @ 26.09.11, 19:48) необходимо зарегистрироваться для просмотра ссылки
тоесть включать в состав плана обмена регистры

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


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