![]() |
|
Неизвестный получатель при обмене данными | ☑ | ||
---|---|---|---|---|
0
Ilqarupup
21.07.17
✎
10:20
|
Добрый день! Пытаюсь наладить обмен между пк и моб приложением по книге Рыбалки Mobile 1C!. Текст взял с диска, выдает ошибку "Неизвестный получатель", вот код, скорее всего запутался в отправителях и получателях, Центральный узел он как будто не находит. Пока пытаюсь делать обмен на пк, хотя при попытке на смартфоне дает такую же ошибку.
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ОбработкаКомандыСервер(); КонецПроцедуры &НаСервере Процедура ОбработкаКомандыСервер() Адрес = "http://192.168.1.115/money/ws/ws1.1cws?wsdl"; Определения = Новый WSОпределения(Адрес); URI = "http://localhost/ws1"; Прокси = Новый WSПрокси(Определения, URI, "WebОбмен", "WebОбменSoap"); СисИнфо = Новый СистемнаяИнформация; КодМобильногоКомпьютера = Строка(СисИнфо.ИдентификаторКлиента); //1. Инициализация (если нужно) Узел = ПланыОбмена.Мобильные.ЭтотУзел(); Если НЕ ЗначениеЗаполнено(Узел.Код) ИЛИ Узел.Код <> КодМобильногоКомпьютера Тогда ОбъектУзла = Узел.ПолучитьОбъект(); ОбъектУзла.Код = КодМобильногоКомпьютера; ОбъектУзла.Наименование = КодМобильногоКомпьютера; ОбъектУзла.Записать(); КонецЕсли; ЦентральныйУзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду("001"); Если ЦентральныйУзелОбмена.Пустая() Тогда НовыйУзел = ПланыОбмена.Мобильные.СоздатьУзел(); НовыйУзел.Код="001"; НовыйУзел.Наименование="Центральный"; НовыйУзел.Записать(); ЦентральныйУзелОбмена = НовыйУзел.Ссылка; КонецЕсли; //2. Обмен с центральной базой ДанныеОбмена = ВыполнитьОбмен(КодМобильногоКомпьютера, СформироватьПакетОбмена(ЦентральныйУзелОбмена)); //3. Обработка данных, полученных из центральной базы ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ДанныеОбмена.Получить()); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого); НачатьТранзакцию(); Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл Данные = ПрочитатьXML(ЧтениеXML); Если НЕ Данные = Неопределено Тогда Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; Данные.ОбменДанными.Загрузка = Истина; Данные.Записать(); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); КонецПроцедуры //&НаСервере //Процедура ОбработкаКомандыСервер() // Адрес = "http://192.168.1.115/money/ws/ws1.1cws?wsdl"; // Определения = Новый WSОпределения(Адрес); // URI = "http://localhost/ws1"; // Прокси = Новый WSПрокси(Определения, URI, "WebОбмен", "WebОбменSoap"); // // СисИнфо = Новый СистемнаяИнформация; // КодМобильногоКомпьютера = Строка(СисИнфо.ИдентификаторКлиента); // // //1. Инициализация (если нужно) // ЦентральныйУзелОбмена = ПланыОбмена.Мобильные.ЭтотУзел(); // //Если НЕ ЗначениеЗаполнено(Узел.Код) // // ИЛИ 0.Код <> КодМобильногоКомпьютера Тогда // // //ОбъектУзла = Узел.ПолучитьОбъект(); // // //ОбъектУзла.Код = КодМобильногоКомпьютера; // // //ОбъектУзла.Наименование = КодМобильногоКомпьютера; // // //ОбъектУзла.Записать(); // //КонецЕсли; // // МобильныйУзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду("001"); // Если ЦентральныйУзелОбмена.Пустая() Тогда // НовыйУзел = ПланыОбмена.Мобильные.СоздатьУзел(); // НовыйУзел.Код="001"; // НовыйУзел.Наименование="Центральный"; // НовыйУзел.ЭтотУзел = Истина; // НовыйУзел.Записать(); // ЦентральныйУзелОбмена = НовыйУзел.Ссылка; // КонецЕсли; // // // //2. Обмен с центральной базой // ДанныеОбмена = Прокси.ВыполнитьОбмен(КодМобильногоКомпьютера, СформироватьПакетОбмена(МобильныйУзелОбмена)); // // // //3. Обработка данных, полученных из центральной базы // ЧтениеXML = Новый ЧтениеXML; // ЧтениеXML.УстановитьСтроку(ДанныеОбмена.Получить()); // ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); // ЧтениеСообщения.НачатьЧтение(ЧтениеXML); // ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого); // НачатьТранзакцию(); // Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл // Данные = ПрочитатьXML(ЧтениеXML); // Если НЕ Данные = Неопределено Тогда // Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; // Данные.ОбменДанными.Загрузка = Истина; // Данные.Записать(); // КонецЕсли; // КонецЦикла; // ЗафиксироватьТранзакцию(); // ЧтениеСообщения.ЗакончитьЧтение(); // ЧтениеXML.Закрыть(); // //КонецПроцедуры Процедура ЗарегистрироватьИзмененияДанных(УзелОбмена) Экспорт СоставПланаОбмена = УзелОбмена.Метаданные().Состав; Для Каждого ЭлементСоставаПланаОбмена Из СоставПланаОбмена Цикл ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена,ЭлементСоставаПланаОбмена.Метаданные); КонецЦикла; КонецПроцедуры //Функция ВыполнитьОбмен(КодУстройства, ДанныеУстройства) // УстановитьПривилегированныйРежим(Истина); // // ////1. Инициализация (если нужно) // //УзелОбмена = ПланыОбмена.Мобильные.ЭтотУзел().ПолучитьОбъект(); // //Если НЕ ЗначениеЗаполнено(УзелОбмена.Код) Тогда // // УзелОбмена.Код="001"; // // УзелОбмена.Наименование="Центральный"; // // УзелОбмена.Записать(); // //КонецЕсли; // // // //УзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду("002"); // //Если УзелОбмена.Пустая() Тогда // // НовыйУзел = ПланыОбмена.Мобильные.СоздатьУзел(); // // НовыйУзел.Код = КодУстройства; // // НовыйУзел.Наименование = КодУстройства; // // НовыйУзел.Записать(); // // ЗарегистрироватьИзмененияДанных(НовыйУзел.Ссылка); // // УзелОбмена = НовыйУзел.Ссылка; // //КонецЕсли; // // // // // // ////2. Получение данных из мобильного устройства // //УзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду(КодУстройства); // // // ЧтениеXML = Новый ЧтениеXML; // ЧтениеXML.УстановитьСтроку(ДанныеУстройства); // // ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); // ЧтениеСообщения.НачатьЧтение(ЧтениеXML); // ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого); // НачатьТранзакцию(); // Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл // Данные = ПрочитатьXML(ЧтениеXML); // Если НЕ Данные = Неопределено Тогда // Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; // Данные.ОбменДанными.Загрузка = Истина; // Данные.Записать(); // КонецЕсли; // КонецЦикла; // ЗафиксироватьТранзакцию(); // ЧтениеСообщения.ЗакончитьЧтение(); // ЧтениеXML.Закрыть(); // // // //3. Выгрузка данных в мобильное устройство // УзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду(КодУстройства); // ЗаписьXML = Новый ЗаписьXML; // ЗаписьXML.УстановитьСтроку("UTF-8"); // ЗаписьXML.ЗаписатьОбъявлениеXML(); // ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); // ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена); // ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); // ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); // ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения); // Пока ВыборкаИзменений.Следующий() Цикл // Данные = ВыборкаИзменений.Получить(); // ЗаписатьXML(ЗаписьXML, Данные);// Записываем данные в сообщение // КонецЦикла; // ЗаписьСообщения.ЗакончитьЗапись(); // // Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9)); // //КонецФункции//ВыполнитьОбмен Функция ВыполнитьОбмен(КодУстройства, ДанныеУстройства) УстановитьПривилегированныйРежим(Истина); //1. Инициализация (если нужно) УзелОбмена = ПланыОбмена.Мобильные.ЭтотУзел().ПолучитьОбъект(); Если НЕ ЗначениеЗаполнено(УзелОбмена.Код) Тогда УзелОбмена.Код="001"; УзелОбмена.Наименование="Центральный"; УзелОбмена.Записать(); КонецЕсли; УзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду(КодУстройства); Если УзелОбмена.Пустая() Тогда НовыйУзел = ПланыОбмена.Мобильные.СоздатьУзел(); НовыйУзел.Код = КодУстройства; НовыйУзел.Наименование = КодУстройства; НовыйУзел.Записать(); ЗарегистрироватьИзмененияДанных(НовыйУзел.Ссылка); УзелОбмена = НовыйУзел.Ссылка; КонецЕсли; //2. Получение данных из мобильного устройства УзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду(КодУстройства); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ДанныеУстройства.Получить()); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого); НачатьТранзакцию(); Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл Данные = ПрочитатьXML(ЧтениеXML); Если НЕ Данные = Неопределено Тогда Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; Данные.ОбменДанными.Загрузка = Истина; Данные.Записать(); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); //3. Выгрузка данных в мобильное устройство УзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду(КодУстройства); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку("UTF-8"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл Данные = ВыборкаИзменений.Получить(); ЗаписатьXML(ЗаписьXML, Данные);// Записываем данные в сообщение КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись(); Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9)); КонецФункции//ВыполнитьОбмен Функция СформироватьПакетОбмена(УзелОбмена) Экспорт ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку("UTF-8"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл Данные = ВыборкаИзменений.Получить(); ЗаписатьXML(ЗаписьXML, Данные);// Записываем данные в сообщение КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись();; Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9)); КонецФункции мой хмл <?xml version="1.0" encoding="UTF-8"?> <v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages"> <v8msg:Header> <v8msg:ExchangePlan>Мобильные</v8msg:ExchangePlan> <v8msg:To>001</v8msg:To> <v8msg:From>6fdb3fa6-</v8msg:From> <v8msg:MessageNo>8</v8msg:MessageNo> <v8msg:ReceivedNo>0</v8msg:ReceivedNo> </v8msg:Header> <v8msg:Body xmlns:v8="http://v8.1c.ru/data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <AccumulationRegisterRecordSet.Кошельки> <Filter> <Recorder xsi:type="DocumentRef.Доход">3be5fd81-6dd7-11e7-83e1-701ce7f24bbb</Recorder> </Filter> <Records> <Record> <Recorder xsi:type="DocumentRef.Доход">3be5fd81-6dd7-11e7-83e1-701ce7f24bbb</Recorder> <Period>2017-07-21T09:46:46</Period> <MovementType>Receipt</MovementType> <Active>true</Active> <Кошелек>cfdb4db7-6d09-11e7-bd34-701ce7f24bbb</Кошелек> <Сумма>45</Сумма> <Статья>cfdb4db6-6d09-11e7-bd34-701ce7f24bbb</Статья> </Record> </Records> </AccumulationRegisterRecordSet.Кошельки> <DocumentObject.Доход> <Ref>3be5fd81-6dd7-11e7-83e1-701ce7f24bbb</Ref> <DeletionMark>false</DeletionMark> <Date>2017-07-21T09:46:46</Date> <Number>000000004</Number> <Posted>true</Posted> <Кошелек>cfdb4db7-6d09-11e7-bd34-701ce7f24bbb</Кошелек> <Статья>cfdb4db6-6d09-11e7-bd34-701ce7f24bbb</Статья> <Сумма>45</Сумма> <Комментарий/> </DocumentObject.Доход> </v8msg:Body> </v8msg:Message> мои узлы, с 6 начинается пк, 0 по моему смартфон http://imgur.com/a/x29MM |
|||
1
Ilqarupup
21.07.17
✎
10:23
|
в исходниках было Прокси.ВыполнитьОбмен , но я вынес сюда, т.к. в вебсервисе отладка не идет. Если писать Прокси.ВыполнитьОбмен то дает ту же ошибку, так что, это сути не меняет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |