|
обмен с помощью web-сервисов | ☑ | ||
---|---|---|---|---|
0
Pe3HuK
28.12.15
✎
01:41
|
Есть код:
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ОбработкаКомандыСервер() КонецПроцедуры &НаСервере Процедура ОбработкаКомандыСервер() Адрес = "http://193.17.213.186/pex/ws/Obmen/?wsdl"; Определения = Новый WSОпределения(Адрес); URI = "Obmen"; Прокси = Новый WSПрокси(Определения, URI, "Obmen", "ObmenSoap"); СисИнфо = Новый СистемнаяИнформация; КодМобильногоКомпьютера = Строка(СисИнфо.ИдентификаторКлиента); Узел = ПланыОбмена.OrderDocument.ЭтотУзел(); Если НЕ ЗначениеЗаполнено(Узел.Код) ИЛИ Узел.Код <> КодМобильногоКомпьютера Тогда ОбъектУзла = Узел.ПолучитьОбъект(); ОбъектУзла.Код = КодМобильногоКомпьютера; ОбъектУзла.Наименование = КодМобильногоКомпьютера; ОбъектУзла.Записать(); КонецЕсли; ЦентральныйУзелОбмена = ПланыОбмена.OrderDocument.НайтиПоКоду("1"); Если ЦентральныйУзелОбмена.Пустая() Тогда НовыйУзел = ПланыОбмена.OrderDocument.СоздатьУзел(); НовыйУзел.Код = "1"; НовыйУзел.Наименование = "OrderDoc"; ЦентральныйУзелОбмена = НовыйУзел.Ссылка; КонецЕсли; ДанныеОбмена = Прокси.ВыполнитьОбмен(КодМобильногоКомпьютера, СформироватьПакетОбмена(ЦентральныйУзелОбмена)); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ДанныеОбмена.Получить()); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); НачатьТранзакцию(); Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл Данные = ПрочитатьXML(ЧтениеXML); Если НЕ Данные = Неопределено Тогда Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; Данные.ОбменДанными.Загрузка = Истина; Данные.Записать(); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); КонецПроцедуры Функция СформироватьПакетОбмена(УзелОбмена) Экспорт ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку("UTF-8"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http//http://www.w3.org/2001/XMLSchema-instance"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл Данные = ВыборкаИзменений.Получить(); ЗаписатьXML(ЗаписьXML, Данные); КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись(); Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9)); КонецФункции Ругается вот здесь ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена); по причине: Неизвестный получатель, в чем может быть проблема? |
|||
1
Чайник Рассела
28.12.15
✎
02:08
|
так сложно в отладчике посмотреть что у тебя в узле обмена?
|
|||
2
Pe3HuK
28.12.15
✎
17:44
|
&НаСервере
Процедура ОбработкаКомандыСервер() Адрес = "http://193.17.213.186/pex/ws/Obmen/?wsdl"; Определения = Новый WSОпределения(Адрес); URI = "Obmen"; Прокси = Новый WSПрокси(Определения, URI, "Obmen", "ObmenSoap"); СисИнфо = Новый СистемнаяИнформация; КодМобильногоКомпьютера = Строка(СисИнфо.ИдентификаторКлиента); Узел = ПланыОбмена.OrderDocument.ЭтотУзел(); Если НЕ ЗначениеЗаполнено(Узел.Код) ИЛИ Узел.Код <> КодМобильногоКомпьютера Тогда ОбъектУзла = Узел.ПолучитьОбъект(); ОбъектУзла.Код = КодМобильногоКомпьютера; ОбъектУзла.Наименование = КодМобильногоКомпьютера; ОбъектУзла.Записать(); КонецЕсли; ЦентральныйУзелОбмена = ПланыОбмена.OrderDocument.НайтиПоКоду("001"); Если ЦентральныйУзелОбмена.Пустая() Тогда НовыйУзел = ПланыОбмена.OrderDocument.СоздатьУзел(); НовыйУзел.Код = "001"; НовыйУзел.Наименование = "OrderDoc"; ЦентральныйУзелОбмена = НовыйУзел.Ссылка; КонецЕсли; ДанныеОбмена = Прокси.ВыполнитьОбмен(КодМобильногоКомпьютера, СформироватьПакетОбмена(ЦентральныйУзелОбмена)); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ДанныеОбмена.Получить()); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); НачатьТранзакцию(); Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл Данные = ПрочитатьXML(ЧтениеXML); Если НЕ Данные = Неопределено Тогда Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; Данные.ОбменДанными.Загрузка = Истина; Данные.Записать(); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |