|
Взаимодействие 1С 8 и веб сервиса на asp.net | ☑ | ||
---|---|---|---|---|
0
FAR_E_R
13.10.11
✎
14:10
|
Создал веб сервис на asp.net, вот пример функции в VS 2010
[WebMethod(Description = "Get my messages", EnableSession = false)] public string GetMyMessagesTest(string userID) { return userID; } Из 1С 8.2 вызываю его. Сервис = WSСсылки.WSСсылка.СоздатьWSПрокси("http://...ru/", "..", "..Soap12"); Сообщение = Сервис.GetMyMessages("ELDAR"); Сообщение возвращается, все работает. Теперь мне надо передать в 1С список. В студии делаю так [WebMethod(Description = "Get messages", EnableSession = false)] public DataSet GetMyMessages(string userID) { // Здесь обрабатывается запрос, пропущу его. return dataSet; } В 1С делаю так: Сервис = WSСсылки.WSСсылка.СоздатьWSПрокси("http://...ru/", "..", "..Soap12"); Сообщение = Сервис.GetMyMessages("ELDAR").ПолучитьСписок("Table1");; Но возникает ошибка: Ошибка при вызове метода контекста (GetMyMessages) Сообщение = Сервис.GetMyMessages("123"); по причине: Несоответствие типов (параметр номер '1') Если посмотреть статью Книга знаний: v8: Использование внешних web-сервисов в 1С:Предприятие 8; то там автор делает так: СписокАэропортов=СервисАэрофлот.AirportList().ПолучитьСписок("list"); Подскажите какой тип данных необходимо возвращать из сервиса чтобы воспользоваться функцией 1С ПолучитьСписок(); Спасибо! |
|||
1
sikuda
13.10.11
✎
14:19
|
Типы которые возвращаются из WebService это из XDTO. А затем их надо приводить в типы 1С. Примитивные типы преобразуются сразу и разницу не заметно.
|
|||
2
FAR_E_R
13.10.11
✎
14:28
|
Не подскажете пример или ссылку.
|
|||
3
FAR_E_R
13.10.11
✎
17:25
|
Для DataSet есть схема на языке XSD. Ее можно так получить dataSet.GetXmlSchema()
Вот она: <?xml version="1.0" encoding="utf-16"?> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Table"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" minOccurs="0" /> <xs:element name="status" type="xs:int" minOccurs="0" /> <xs:element name="data" type="xs:dateTime" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> Далее ее надо загрузить в 1С в виде XDTO-пакета ? |
|||
4
Asmody
13.10.11
✎
17:27
|
(3) не понимает 1Ска датасеты.
|
|||
5
FAR_E_R
13.10.11
✎
23:41
|
Поискал по форуму…. v8: Web сервис и дата сет
но не смог найти способ использовать DataSet и ПолучитьСписок() в 1С. Поэтому решил сделать просто, передать из веб сервиса DataSet в виде string, например так dataSet.GetXml(). В 1С вернулся следующий текст: <NewDataSet> <Table> <name>Сообщение1</name> <data>2011-06-06T15:11:02+04:00</data> </Table> <Table> <name>Сообщение2</name> <data>2011-10-12T01:31:45.077+04:00</data> </Table> </NewDataSet> Его просто превращаю в xml вот так ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрокаXML); И далее читаю… Этот способ работает, но если кто подскажет более грамотный способ буду весьма благодарен. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |