Имя: Пароль:
1C
1С v8
УРБД, 8.2, обмен в одну сторону
0 svmix
 
19.07.11
11:22
Считаю своим долгом запостить работающий пример САБЖА.
До сих пор на мисте ничего внятного находил. Так чтобы скопировать и заработало. И без нарастающих файликов обмена со временем.  К сожалению. При этом не скажу, что я разобрался в теме. Но код работает.

Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
   // Вставить содержимое обработчика.
   НашУзел = ПланыОбмена.Полный.ЭтотУзел();

   Если НашУзел.ТолькоВПериферию=Истина Тогда
//  у узла сделал реквизит "ТолькоВПериферию" - признак односторонней  периферийки. Так как есть не и  односторонние периферийки.
       ГлУзел =  ПланыОбмена.ГлавныйУзел();
       ОтправкаЭлемента=ОтправкаЭлементаДанных.Игнорировать;    
       ПланыОбмена.УдалитьРегистрациюИзменений(ГлУзел,Неопределено);
   КонецЕсли;

   
КонецПроцедуры
1 Живой Ископаемый
 
19.07.11
11:25
да что ж тут военного? это лежит на поверхности, но просто твой центральный узе никогда не знает - дошли ли сообщения об изменений в периферию или нет - так как он кладет на квитанции, и сразу удаляет регистрацию изменений, просто  предполагая что сообщения обязательно дойдут.
2 mikecool
 
19.07.11
11:26
(1) зато скопировал и работает
3 Живой Ископаемый
 
19.07.11
11:27
2(2) да ради бога, лишь бы отдавал себе в этом отчет
4 mikecool
 
19.07.11
11:30
(3) не перед кем пока видно отчет держать ))
а придется
5 svmix
 
19.07.11
11:33
Издеваетесь хлопцы :)
Дык, а как тогда отправлять квитанции-подтверждения о получении, не отправляя изменения?
В этом суть задачи.
6 Живой Ископаемый
 
19.07.11
11:37
"дык, а как тогда отправлять квитанции-подтверждения о получении, не отправляя изменения? " - чего-чего?
7 Живой Ископаемый
 
19.07.11
11:39
http://v8.1c.ru/book/devenc/maitenance.htm#15
4-й снизу пункт:
"Организация одностороннего обмена"

и тоже - скопировал и будет работать, но уже с квитанциями о получении сообщения, и только после их получения удаления регистрации...
8 svmix
 
19.07.11
11:39
ОтправкаЭлемента=ОтправкаЭлементаДанных.Игнорировать;
 - тут я запрещаю отправлять любую инфу из периф. в центр.
А надо бы отправлять квитанции о том что центральную инфу получили и усвоили. Раз мы можем потерять сообщения.
Где вставить код про квитанции? И что это за код?
9 Живой Ископаемый
 
19.07.11
11:40
читай (7)
10 Живой Ископаемый
 
19.07.11
11:40
сначала купи, потом читай. :)
11 svmix
 
19.07.11
11:49
Собственно этот желтый кирпич и грызу с утра. И именно этот пункт.
Не совсем понятно куда вставлять код создания Записи сообщения обмена, если это о нем речь.

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML .ОткрытьФайл("c:\out.xml);
ЗаписьXML.ЗаписатьОбъявлениеXML();


Узел = ПланыОбмена.Магазины.НайтиПоКоду("Магазин");
Узел = ПланыОбмена.СоздатьЗаписьСообщения();
ЗАписьСообщения = НачатьЗАпись(ЗаписьXML,Узел );
ЗАписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
12 Живой Ископаемый
 
19.07.11
11:53
я не помню... нужно делать
13 svmix
 
19.07.11
12:09
В Функцию ВыгрузитьИзмененияДляУзлаВФайлОбмена(УзелОбмена, КоличествоЭлементовВТранзакцииНаВыгрузкуДанных, ЗаписьXML) Экспорт


в начало вставляю след блок
//  начало односторонний обмен!!!
   НашУзел = ПланыОбмена.Полный.ЭтотУзел();
   Если НашУзел.ТолькоВПериферию=Истина Тогда
   ЗаписьXML.ЗаписатьОбъявлениеXML();
       // Создаем новое сообщение
       ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
       ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
       
       // считаем количество записанных объектов
       КоличествоЗаписанныхОбъектов = 0;
       КоличествоНайденныхДляЗаписиОбъектов = 0;
       // начинаем транзакцию
       Попытка
           // Завершаем запись сообщения
           ЗаписьСообщения.ЗакончитьЗапись();
           ЗаписьXML.Закрыть();
       Исключение
       #Если Клиент Тогда
               ОбщегоНазначения.СообщитьОбОшибке("" + ОписаниеОшибки());
           #КонецЕсли
           ЗаписьXML.Закрыть();
           Возврат Ложь;
       КонецПопытки;
       
       Возврат Истина;
   КонецЕсли;
//  конец односторонний обмен!!!

вроде работает.  надо теперь попробовать "потерять " сообщения и проверить.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.