![]() |
|
Веб-сервис и передача-прием XML | ☑ | ||
---|---|---|---|---|
0
toypaul
гуру
30.05.11
✎
17:34
|
Есть веб-сервис у него есть методы - экспорт/импорт, которые выдают и принимают XML (XmlElement). Как в 1С это обработать - передать и получить?
|
|||
1
Serginio1
30.05.11
✎
18:07
|
Например
Функция СоздатьТзАтрибутов() Тз=Новый ТаблицаЗначений; Колонки=Тз.Колонки; Колонки.Добавить("Имя",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(0)); Колонки.Добавить("Значение",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(0)); Возврат Тз КонецФункции Функция СоздатьТзУзлов() Тз=Новый ТаблицаЗначений; Колонки=Тз.Колонки; Колонки.Добавить("Имя",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(0)); Колонки.Добавить("Значение",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(0)); Колонки.Добавить("Узел",Новый ОписаниеТипов("ТаблицаЗначений")); Колонки.Добавить("Атрибуты",Новый ОписаниеТипов("ТаблицаЗначений")); Возврат Тз КонецФункции Процедура ПрочитатьУзел(СтрокаТз,Чтение,ИмяУзла) Пока Чтение.Прочитать() Цикл Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда НовИмяУзла = Чтение.Имя; Сообщить("Тип Узла="+Чтение.ТипУзла+" Имя узла" + НовИмяУзла); Тз=СтрокаТз.Узел; СтрУзла=Тз.Добавить(); НовТз=СоздатьТзУзлов(); СтрУзла.Имя=НовИмяУзла; СтрУзла.Узел=НовТз; СтрУзла.Атрибуты=неопределено; // Атрибуты элементов можно читать только если текущая часть - // начало элемента Пока Чтение.ПрочитатьАтрибут() Цикл Если Не ЗначениеЗаполнено(СтрУзла.Атрибуты) Тогда СтрУзла.Атрибуты=СоздатьТзАтрибутов(); КонецЕсли; // Прочитать данные узла атрибута. ТипУзла = Чтение.ТипУзла; Имя = Чтение.Имя; Значение = Чтение.Значение; Сообщить(""+ТипУзла+" "+ Чтение.Значение); // Обработать полученные значения. Стр=СтрУзла.Атрибуты.Добавить(); Стр.Имя=Чтение.Имя; Стр.Значение=Чтение.Значение; КонецЦикла; ПрочитатьУзел(СтрУзла,Чтение,НовИмяУзла); ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда // В примере просто выводим текст в окно сообщений. Сообщить("Текст:" + Чтение.Значение); СтрокаТз.Значение=Чтение.Значение; СтрокаТз.Узел=неопределено; ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда // В примере просто выводим признак конца элемента // в окно сообщений Сообщить("--Конец:" + Чтение.Имя); Если Чтение.Имя<>ИмяУзла Тогда сообщить("Ошибка "+Имя+"<>"+ИмяУзла); КонецЕсли; возврат Иначе Сообщить("Неизвестный Тип узла "+Чтение.ТипУзла); КонецЕсли; КонецЦикла; КонецПроцедуры Функция ПрочитатьXMLСтрока(Строка) Чтение= новый ЧтениеXML; Чтение.УстановитьСтроку(Строка); Тз=СоздатьТзУзлов(); Пока Чтение.Прочитать() Цикл // Прочитать "структурные части" элементов. // Проверить, какая часть элемента - текущая. Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ИмяУзла = Чтение.Имя; Сообщить("Тип Узла="+Чтение.ТипУзла+" Имя узла" + ИмяУзла); СтрУзла=Тз.Добавить(); СтрУзла.Имя=ИмяУзла; НовТз=СоздатьТзУзлов(); СтрУзла.Узел=НовТз; СтрУзла.Атрибуты=неопределено; // Атрибуты элементов можно читать только если текущая часть - // начало элемента Пока Чтение.ПрочитатьАтрибут() Цикл Если Не ЗначениеЗаполнено(СтрУзла.Атрибуты) Тогда СтрУзла.Атрибуты=СоздатьТзАтрибутов(); КонецЕсли; // Прочитать данные узла атрибута. ТипУзла = Чтение.ТипУзла; Имя = Чтение.Имя; Значение = Чтение.Значение; // Обработать полученные значения. Стр=СтрУзла.Атрибуты.Добавить(); Стр.Имя=Имя; Стр.Значение=Значение; КонецЦикла; ПрочитатьУзел(СтрУзла,Чтение,ИмяУзла); ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда // В примере просто выводим текст в окно сообщений. Сообщить("Текст:" + Чтение.Значение); Стр=Тз.Добавить(); Стр.Имя=ИмяУзла; Стр.Значение=Чтение.Значение; ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда // В примере просто выводим признак конца элемента // в окно сообщений Сообщить("--Конец:" + Чтение.Имя); Иначе Сообщить("Неизвестный Тип узла "+Чтение.ТипУзла); КонецЕсли; КонецЦикла; Возврат Тз; КонецФункции |
|||
2
acsent
30.05.11
✎
18:11
|
ФабрикаXDTO
|
|||
3
toypaul
гуру
31.05.11
✎
08:54
|
(1) вот это я не понял к чему. у меня нет проблемы в чтении есть непониманием в каком виде передавать\принимать эти значения в методы.
(2) примеры есть? |
|||
4
toypaul
гуру
31.05.11
✎
10:12
|
поясню задачу
У меня есть веб-сервис с методом XmlElements ИмпортКлиентов() вопрос состоит в том что в 1С мне вернет этот метод. и есть метод ЭкспортПлатежей(XmlElements) вопрос в том что мне передать в этот метод (есть просто XML в виде текста). |
|||
5
Serginio1
31.05.11
✎
10:39
|
(4) А попрбовать? Второй вариант экспортировать схему в C# и сохранить в DLL и вытащить методы и в 1С через v8: Объекты Net в IDispatch
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |