Имя: Пароль:
1C
1С v8
Не передавать данные из центральной базы РИБ
, ,
0 factorasia
 
31.08.12
13:21
Есть РИБ. В ней непериодический, независимый регистр сведений. Как сделать так, чтобы данные из распределенных баз все попадали в центр, а из центра не попадали в распределенные базы?
1 Fish
 
31.08.12
13:25
(0) В модуле плана обмена надо прописать в Процедуре ПриОтправкеДанныхПодчиненному пару строк.
2 factorasia
 
31.08.12
13:27
Каких?
3 Fish
 
31.08.12
13:29
(2) Например такую: ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
И почитай СП по этому поводу.
4 factorasia
 
31.08.12
13:39
ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
Сделал. Все равно уходят изменения (
5 Fish
 
31.08.12
13:44
(4) Тогда попробуй в процедуре ПриПолученииДанныхОтГлавного прописать
ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать;

В общем экспериментируй, должно сработать.
6 Обработка
 
31.08.12
13:50
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента)
....

ИначеЕсли ИмяБазовогоТипа = "РегистрыСведений" Тогда
далее определяем какой вид регистра если тот котрый нам нужен то
ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
....
7 Fish
 
31.08.12
13:53
(6) Да, точно, невнимательно прочитал (0). Надо ещё тип проверять, если нужно чтобы какие-то данные уходили.
8 Kashemir
 
31.08.12
14:02
ПриОтправкеДанныхПодчиненному можно блокировать отправку. Но по хорошему надо изначально не регистрировать
9 factorasia
 
03.09.12
04:40
Делаю так:    
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза)
Если ТипЗнч(ЭлементДанных) = Тип("РегистрСведенийНаборЗаписей.ИмяМоегоРегистраСведений") Тогда
       ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
   КонецЕсли;
КонецПроцедуры

Данные все равно уходят.

Делал еще так. Тот же результат (модуль набора записей регистра):
Процедура ПередЗаписью(Отказ, Замещение)
   ЭтоЦентральныйУзел = (ПланыОбмена.ГлавныйУзел() = Неопределено);
Если ЭтоЦентральныйУзел Тогда
       ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
       ОбменДанными.Получатели.Очистить();
   КонецЕсли;
КонецПроцедуры
10 factorasia
 
03.09.12
04:53
Только что попробовал отключить фильтр в процедуре

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза)
   ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
КонецПроцедуры

Т.е., по идее, запретил вообще всю отправку. И, что вы думаете, данные по регистру все равно выгружаются. Регистр заговоренный какой-то...
11 dmpl
 
03.09.12
08:24
(8) А что лучше - влезть в типовую для запрета регистрации кучи объектов или влезть в один модуль плана обмена, где игнорировать ненужные объекты (причем, возможно, по хитрым условиям решать, выгружать или нет)? А если надо еще и настройки на лету менять?

(10) Может план обмена не тот? При выгрузке до этих строк дело вообще доходит?
12 factorasia
 
03.09.12
09:04
(11)Конечно.

   ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;

Сюда заходит.
13 dmpl
 
03.09.12
09:26
(12) Что за конфигурация? Если посмотреть сформированное сообщение, то внутри объекты есть или нет?
14 sergei123654
 
03.09.12
09:31
При записи регистра сведений

Процедура РегистрацияИзменийРегистровДляПланаОбмена(ТекОбъект)

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

КонецПроцедуры

Процедура ПриЗаписиРегистровДляПлановОбменаПриЗаписи(Источник, Отказ, Замещение) Экспорт
   Если Источник.ОбменДанными.Получатели.АвтоЗаполнение
       И Не Источник.ОбменДанными.Загрузка
       Тогда
       РегистрацияИзменийРегистровДляПланаОбмена(Источник);
   КонецЕсли;
КонецПроцедуры


я так по организциям обмениваюсь... вроде все работает, куда надо туда и отправляется
15 Serg_1960
 
03.09.12
09:57
"Регистр заговоренный какой-то" :) Имхо: укажите конфигурацию и релиз. Скорее всего обмен реализован "программно" в конфигурации и то, что вы пишите в событиях объекта - игнорируется обработкой обмена.
16 Serg_1960
 
03.09.12
10:16
(10) Перед проверкой "заговорённости" регистра (офф: прикольный термин :), надеюсь, вы не забыли удалить "предыдущую" регистрацию изменений? А то как то не ловко получается: процедура работает, новая регистрация - игнорируется, а в плане обмена - уже ранее зарегистрированое изменение :)
17 dmpl
 
03.09.12
10:19
(16) В ПриОтправкеДанныхПодчиненному() существующая регистрация до лампочки. Если безусловно стоит Игнорировать, то в сообщение для периферийной базы ничего не должно попасть.
18 factorasia
 
03.09.12
12:54
(13)УТ 10.3 (8.2) Регистр который не должен уходить в подчиненные узлы самописный. Объекты есть.
(14) Сделал как во фрагменте кода. Тот же результат.
(15)(16)Сделал. Не помогло.
19 Skylark
 
03.09.12
12:59
У объекта отменяем автоматическую регистрацию. Делаем подписку на событие при изменении объекта, в котором сами регистрируем изменения в плане обмена в нужном случае. Вот так будет православно, все остальное от лукавого.
20 Шапокляк
 
03.09.12
13:00
(12)    ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;

Возврат; // добавь попробуй

А то есть подозрение, что после    ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;

программа еще что-то проверяет и устанавливает    ОтправкаЭлемента = ОтправкаЭлементаДанных.Авто;
21 sergei123654
 
03.09.12
13:43
(18) Авторегистрация для данного регистра сведений Запретить поставили?