Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Два различных плана обмена для разных удаленных баз
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Constantus
Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Имеется типовой обмен данными "Полный", без каких-либо изменений и модификаций.
По данному обмену осуществляется полный обмен данными с филиалом, где нужны все документы без исключения.

Но есть филиал (ситуацию я описывал ранее в необходимо зарегистрироваться для просмотра ссылки

Т.е. в этот филиал не должны перегоняться данные, например по ПКО, из Центра в Филиал.

Теперь намереваюсь сделать копию обмена данными "Полный" и сделать "ПолныйФилиал", там отменить авторегистрацию на ПКО и в ПКО на событие "ПриЗаписи" поставить код:

ПроцедурыОбменаДанными.ЗарегестрироватьДокумент(ЭтотОбъект);


Где

Процедура ЗарегестрироватьДокумент(Объект) Экспорт

    Если ПланыОбмена.ГлавныйУзел()=Неопределено Тогда
        
    Иначе    
        Если ЗначениеЗаполнено(ПланыОбмена.ГлавныйУзел()) Тогда
            ПланыОбмена.ЗарегистрироватьИзменения(ПланыОбмена.ГлавныйУзел(), Объект);
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры // ЗарегестрироватьДокумент()


Код срабатывает и действительно не отсылает документы Центра на филиалы...

Но вот сейчас сильно призадумался:
1. Да, я создам второй план обмена.
2. Создам образ филиальной базы по другому плану обмена

А вот теперь возникает вопрос: в приведенной процедуре не указывается конкретный план обмена, т.е. "Полный" или "ПолныйФилиал". Т.к. Центр работает на все базы, то что-то у меня вызывает сомнение, что 1с знает по какому плану обмена регистрировать изменения или нет.

Как правильно работать с удаленными базами, работающими по разным планам обмена в случае, если мне в одной из баз нужно осуществлять проверку отправлять данные из Центра или нет?

Constantus
Ситуация такая. Поставил код

    Если ПланыОбмена.ГлавныйУзел()=Неопределено Тогда
// Если узел Главный
        Узел = ПланыОбмена.Полный.НайтиПоКоду("FA");
        ПланыОбмена.ЗарегистрироватьИзменения(Узел, Объект);
    Иначе    
        Если ЗначениеЗаполнено(ПланыОбмена.ГлавныйУзел()) Тогда
            ПланыОбмена.ЗарегистрироватьИзменения(ПланыОбмена.ГлавныйУзел(), Объект);
        КонецЕсли;
    КонецЕсли;



Код срабатывает и на один филиал отправляет все данные (т.е. регистрирует данные для обмена), а на другой не регистрирует, например по документу ПКО, но...

Документ ПКО не регистрирует, но регистрирует все попутные к нему регистры сведений и накопления, т.е. на избранный филиал документ ПКО не отправляется, но отправляются все регистры...

Как не регистрировать изменения для регистров, если у Документа в настройках плана обмена у документа отменена Авторегистрация?
topitop
Constantus @ Сегодня, 13:00 необходимо зарегистрироваться для просмотра ссылки ,

А отменить авторегистрацию и регистрировать в подписке на событие как вам угодно ?
Constantus
topitop @ Сегодня, 16:18 необходимо зарегистрироваться для просмотра ссылки ,


А детальнее про регистрацию в подписке? Можно по-подробнее?
topitop
Constantus @ Сегодня, 14:32 необходимо зарегистрироваться для просмотра ссылки ,

необходимо зарегистрироваться для просмотра ссылки

На просторах интернета много инффы на эту тематику, создайте подписку на событие при записи или при провидении документа и регистрируйте для нужного узла документы или не регистрируйте smile.gif
Можете не снимать авторегистрацию , просто в подписке на событие программно регистрацию по этому объекту будете удалять.

Если Источник.ОбменДанными.Получатели.Автозаполнение Тогда    
        Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЗаказПоставщику") Тогда
            
                Запрос = Новый Запрос;
                Запрос.Текст =
                "ВЫБРАТЬ РАЗЛИЧНЫЕ
                |    ОбменФМ_ФТ.Ссылка
                |ИЗ
                |    ПланОбмена.ОбменФМ_ФТ КАК ОбменФМ_ФТ
                |ГДЕ
                |    ОбменФМ_ФТ.ФирменныйМагазин = &Подразделение";
                Запрос.УстановитьПараметр("Подразделение", Источник.Склад.Подразделение);
                Выборка = Запрос.Выполнить().Выбрать();
                
                Пока Выборка.Следующий() Цикл
                    Источник.ОбменДанными.Получатели.Добавить(Выборка.Ссылка);
                КонецЦикла;    
            КонецЕсли;
              КонецЕсли;



Вот вам как пример реализации регистрации.
Constantus
Если вопрос поставим по другому:

Получается так, Документ не переносится в базу Филиала, но движения по нему переносятся... На что может повлиять подобная ситуация?

Например, аналогичная ситуация будет и с документами "Реализация", т.е. документов нет, а движения по ним есть...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.