|
УРБД, 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.Закрыть(); Возврат Ложь; КонецПопытки; Возврат Истина; КонецЕсли; // конец односторонний обмен!!! вроде работает. надо теперь попробовать "потерять " сообщения и проверить. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |