Как организовать односторонний обмен данными в РИБ?
Есть переферийная база, мне нужно сделать так, что бы она принимала изменения от центральной базы, а обратно посылала только уведомление о получении данных.
Взял большую красивую книжку и написал как в ней написано. Т.е. создал только заголовок с помощью метода ЗаписатьОбъявлениеXML()
в итоге пишет мне ошибку: Ошибка формата представления данных! :evil:
пробывал через событие ПриОтправкеДанныхГлавному(), так это событие не вызывается...
помогите, как можно реализовать такой обмен?
Взял большую красивую книжку и написал как в ней написано. Т.е. создал только заголовок с помощью метода ЗаписатьОбъявлениеXML()
в итоге пишет мне ошибку: Ошибка формата представления данных! :evil:
пробывал через событие ПриОтправкеДанныхГлавному(), так это событие не вызывается...
помогите, как можно реализовать такой обмен?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) мысль правильная, пишишь неправильно:
надо было НЕ ЗаписатьОбъявлениеXML(), а что типа этого:
надо было НЕ ЗаписатьОбъявлениеXML(), а что типа этого:
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);
//А это не надо!!!
//Выборка = ПланыОбмена.ВыбратьИзменения(Узел, ЗаписьСообщения.НомерСообщения);
//Пока Выборка.Следующий() Цикл
//
// Данные = Выборка.Получить();
// ЗаписатьXML(ЗаписьXML, Данные);
//
//КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
Показать
вот что в файле:
<v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">
<v8msg:Header>
<v8msg:ExchangePlan>Полный</v8msg:ExchangePlan>
<v8msg:To>ЦБ</v8msg:To>
<v8msg:From>БУ</v8msg:From>
<v8msg:MessageNo>7</v8msg:MessageNo>
<v8msg:ReceivedNo>9</v8msg:ReceivedNo>
</v8msg:Header>
<v8msg:Body/>
</v8msg:Message>
<v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">
<v8msg:Header>
<v8msg:ExchangePlan>Полный</v8msg:ExchangePlan>
<v8msg:To>ЦБ</v8msg:To>
<v8msg:From>БУ</v8msg:From>
<v8msg:MessageNo>7</v8msg:MessageNo>
<v8msg:ReceivedNo>9</v8msg:ReceivedNo>
</v8msg:Header>
<v8msg:Body/>
</v8msg:Message>
<v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">
<v8msg:Header>
<v8msg:ExchangePlan>Полный</v8msg:ExchangePlan>
<v8msg:To>ЦБ</v8msg:To>
<v8msg:From>БУ</v8msg:From>
<v8msg:MessageNo>7</v8msg:MessageNo>
<v8msg:ReceivedNo>9</v8msg:ReceivedNo>
</v8msg:Header>
<v8msg:Body/>
</v8msg:Message>
Показать
(8) кажется все правильно
тогда делаем так: на диске ИТС, а также в УТ и БП есть обработка "РегистрацияИзмененийДляОбмена", удаляем все изменения, выгружаем через контекстное меню плана обмена в итоге должны получить такой (за исключением номеров сообщений) файл как и в (8)
ага, пока писал сам попробовал вот что получилось:
тогда делаем так: на диске ИТС, а также в УТ и БП есть обработка "РегистрацияИзмененийДляОбмена", удаляем все изменения, выгружаем через контекстное меню плана обмена в итоге должны получить такой (за исключением номеров сообщений) файл как и в (8)
ага, пока писал сам попробовал вот что получилось:
<v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">
<v8msg:Header>
<v8msg:ExchangePlan>Полный</v8msg:ExchangePlan>
<v8msg:To>002</v8msg:To>
<v8msg:From>001</v8msg:From>
<v8msg:MessageNo>2</v8msg:MessageNo>
<v8msg:ReceivedNo>0</v8msg:ReceivedNo>
</v8msg:Header>
<v8msg:Body>
<v8de:Changes xmlns:v8de="http://v8.1c.ru/dataexchange/2005/02" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v8="http://v8.1c.ru/data">
<v8de:Signature>5d066455-924c-4fbe-9c9b-73b516a6c94d</v8de:Signature>
<v8de:Config xmlns:v8md="http://v8.1c.ru/metadata/2005/08">
<v8de:Version>106.0</v8de:Version>
<v8de:Digest1>00000000000000000000000000000000</v8de:Digest1>
<v8de:Digest2>57b1dc3deddc0d02b1b3131d81a822d2</v8de:Digest2>
</v8de:Config>
<v8de:Nodes>
<v8de:Node>
<v8de:DeletionMark>false</v8de:DeletionMark>
<v8de:Code>001</v8de:Code>
<v8de:Description/>
</v8de:Node>
<v8de:Node>
<v8de:DeletionMark>false</v8de:DeletionMark>
<v8de:Code>002</v8de:Code>
<v8de:Description>свав</v8de:Description>
</v8de:Node>
</v8de:Nodes>
<v8de:Data/>
</v8de:Changes>
</v8msg:Body>
</v8msg:Message>
Показать
ну значит вывод такой: надо либо
а) удалять регистрацию перед формированием сообщения примерно так
б) нерегистрировать изменения, что более правильно, но гораздо трудоемкее чем способ а)
а) удалять регистрацию перед формированием сообщения примерно так
ПланыОбмена.УдалитьРегистрациюИзменений(НашУзел)
б) нерегистрировать изменения, что более правильно, но гораздо трудоемкее чем способ а)
кстати события ПриОтправкеДанныхГлавному и ПриОтправкеДанныхПодчиненному вызываются если выгрузить через контекстное меню или способом:
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);
// без это строчки в РИБе нельзя оказывается
ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения);
ЗаписьСообщения.ЗакончитьЗапись();
Показать
а ты лови оба события, я тоже сначала в главной базе не мог поймать событие ПриОтправкеДанныхГлавному, а потом допер что в главной базе будет событие ПриОтправкеДанныхПодчиненному, ведь в переферийной базе неудобно работать, там конфигурацию изменять нельзя.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот