Имя: Пароль:
1C
1С v8
Передача данных из 1с на стронний веб-сервис
,
0 santapod
 
06.09.12
15:08
Ситуация такая: надо передать xml на веб-сервис. Получил нужный xml в строку Стр = ЗаписьXML.Закрыть(); (Стр и есть этот xml).
Теперь возникает вопрос непосредственно с отправкой на веб-сервис.
Код такой:

Прокси = WSСсылки.Локальный.СоздатьWSПрокси("http://wwwSQLWEBServices.usoft.ru/","Service","ServiceSoap");
   XMLStringТип =Прокси.ФабрикаXDTO.Пакеты.Получить("http://wwwSQLWEBServices.usoft.ru/").Получить("DataTransfer1c");
Парам = Прокси.ФабрикаXDTO.Создать(XMLStringТип);
   Парам.StringText =1;
   Результат = Прокси.DataTransfer1c(Парам);
   Парам.Добавить(Стр)

Пишет что недостаточно фактических параметров (Парам.Добавить(Стр)
). Подскажите что не так делаю.
1 Fragster
 
гуру
06.09.12
15:14
Купи СП уже у кого-нибудь...

ОбъектXDTO (XDTODataObject)
Добавить (Add)
Вариант синтаксиса: Установка значения нового произвольного свойства
Описание:
Добавляет значение произвольного свойства. Имя свойства будет создано автоматически, на основе локального имени XML представления свойства.
В случае, если произвольное свойство с полученным именем уже существует и, если предыдущая установка значения произвольного свойства выполнялась для данного произвольного свойства, либо другого свойства в случае наличия последовательности, - свойство становится списковым с неограниченной верхней границей.
В противном случае будет инициировано исключение.
Тип создаваемого свойства всегда устанавливается anyType пространства имен схемы XML.
Синтаксис:
Добавить(<Форма>, <URI пространства имен>, <Локальное имя>, <Элемент данных>)
Параметры:
<Форма> (обязательный)
Тип: ФормаXML. Форма XML представления произвольного свойства.
Может принимать значения Элемент или КартинкаКнопкиВыбора.
<URI пространства имен> (обязательный)
Тип: Строка. URI пространства имен XML представления произвольного свойства.
<Локальное имя> (обязательный)
Тип: Строка. Локальное имя произвольного свойства.
<Элемент данных> (обязательный)
Тип: ЗначениеXDTO, ОбъектXDTO. Элемент данных XDTO (значение или объект), являющийся значением произвольного свойства.
Вариант синтаксиса: Установка значения существующего произвольного свойства
Описание:
Добавляет значение произвольного свойства с указанным именем.
Если свойства с указанным именем не существует, то будет инициировано исключение.
Если предыдущая установка значения произвольного свойства выполнялась для данного произвольного свойства, либо другого свойства в случае наличия последовательности, - свойство становится списковым с неограниченной верхней границей.
В противном случае будет инициировано исключение.
Синтаксис:
Добавить(<Имя>, <Элемент данных>)
Параметры:
<Имя> (обязательный)
Тип: Строка. Имя произвольного свойства.
<Элемент данных> (обязательный)
Тип: ЗначениеXDTO, ОбъектXDTO. Элемент данных XDTO (значение или объект), являющийся значением произвольного свойства.
Описание:
Добавляет в объект значения произвольного свойства.
Примечание:
Вызов метода может быть осуществлен только для объектов типов с установленным свойством Открытый, в противном случае будет инициировано исключение.
2 santapod
 
06.09.12
15:22
(1) "Купи СП уже у кого-нибудь..." что это?
3 Serginio1
 
06.09.12
15:28
4 santapod
 
06.09.12
15:30
(3) Описанный пример работает на получение данных со стороннего сервиса,мне же нужно на сторонний сервис передавать свои данные
5 santapod
 
06.09.12
15:33
(1) вот нашел полное описание http://forum-1c.ru/index.php?PHPSESSID=a7bt13tbi18ignc8ol9tbn04c7&topic=11521.0
я вот только не пойму,этот пример подходит для использования со сторонним веб-сервисом(не 1с)??? Тут разве описан не веб-сервис 1с?
6 Fragster
 
гуру
06.09.12
15:34
(2) это когда контрол+ф1 нажимаешь - такая фигня справа
7 santapod
 
06.09.12
15:36
(6) спасибо за совет...учту
8 Serginio1
 
06.09.12
16:08
(4) А чем получение данных с передачей параметров отличается от от передачи данных? Кстати параметры могут быть с пометкой OUT только располагаться они должны в конце описания параметров. Если ты их опишешь не в конце, то система при описании Вэб сервиса и при вызове  все равно поместит в конце
9 santapod
 
07.09.12
12:07
Подскажите с чем может быть связана эта ошибка:

Несоответствие типов XDTO:
Тип '{http://wwwSQLWEBServices.usoft.ru/}DataTransfer1c' не найден
Тип объекта не является открытым
10 zladenuw
 
07.09.12
12:17
я делал так и все работает.
   Определения = Новый WSОпределения(АдресВебСервиса + "?wsdl", Пользователь, Пароль);
             ТекСервисEurocar=Новый WSПрокси(Определения, "eurocar.com.ua", "Main", "MainSoap");
           ТекСервисEurocar.Пользователь = Пользователь;
           ТекСервисEurocar.Пароль = Пароль;
               ТипДок =  ТекСервисEurocar.Определение.ФабрикаXDTO.Тип("itek", "Документ");
           Док =ТекСервисEurocar.Определение.ФабрикаXDTO.Создать(ТипДок);
И все работает
11 santapod
 
07.09.12
12:24
(10) а где добавление данных?
12 zladenuw
 
07.09.12
12:31
а поиск где ? погугли или Яндексни.
13 santapod
 
07.09.12
12:36
(12) Все идентично,за исключением того,что ты подключаешься через динамическую ссылку

Прокси = WSСсылки.Локальный.СоздатьWSПрокси("http://wwwSQLWEBServices.usoft.ru/","Service","ServiceSoap");
   //XMLStringТип =Прокси.ФабрикаXDTO.Пакеты.Получить("http://wwwSQLWEBServices.usoft.ru/").Получить("DataTransfer1c");
   Прокси.Пользователь = "wwwSQLWEBServices";
   Прокси.Пароль = "FZQwGizK2BKgWVP";
   
   XMLStringТип = Прокси.ФабрикаXDTO.Тип("http://wwwSQLWEBServices.usoft.ru/","DataTransfer1c");
   XMLString = Прокси.ФабрикаXDTO.Создать(XMLStringТип);
   Результат = Прокси.DataTransfer1c(XMLString);
   XMLString.Добавить(ФормаXML.Элемент,"http://wwwSQLWEBServices.usoft.ru/",Стр,XMLString)
14 santapod
 
07.09.12
12:37
Я только прошу объяснить как решить эту проблему? Куда копать? Как сделать открытым?

Несоответствие типов XDTO:
Тип '{http://wwwSQLWEBServices.usoft.ru/}DataTransfer1c' не найден
Тип объекта не является открытым
15 santapod
 
07.09.12
12:39
Объясните пожалуйста надо ли в ветке конфигурации создавать пакетXDTO?
16 zladenuw
 
07.09.12
12:43
ФабрикаXDTO (XDTOFactory)
Создать (Create)
Вариант синтаксиса: Создание значения из значения

Синтаксис:

Создать(<Тип>, <Значение>)
Параметры:

<Тип> (обязательный)

Тип: ТипЗначенияXDTO.
Тип, значение которого необходимо создать.
<Значение> (обязательный)

Тип: Произвольный.
Произвольное значение, на основе которого должно быть создано значение XDTO.
Вариант синтаксиса: Создание значения по лексическому представлению

Синтаксис:

Создать(<Тип>, <Строка>)
Параметры:

<Тип> (обязательный)

Тип: ТипЗначенияXDTO.
Тип, значение которого необходимо создать.
<Строка> (обязательный)

Тип: Строка.
Лексическое представление значения.
Вариант синтаксиса: Создание объекта

Синтаксис:

Создать(<Тип>)
Параметры:

<Тип> (обязательный)

Тип: ТипОбъектаXDTO.
Тип, объект которого необходимо создать.
17 zladenuw
 
07.09.12
12:43
(15) нет не обязательно. у тебя ошибка тут XMLString = Прокси.ФабрикаXDTO.Создать(XMLStringТип);
18 zladenuw
 
07.09.12
12:43
читай СП
19 santapod
 
07.09.12
12:55
(18) Спасибо.То есть мне нужно делать вот так Создать(<Тип>, <Значение>) ?
20 zladenuw
 
07.09.12
13:00
а хотя соврал.
Можно и 1 параметр.
У тебя тут не так что то
  Результат = Прокси.DataTransfer1c(XMLString);
   XMLString.Добавить(ФормаXML.Элемент,"http://wwwSQLWEBServices.usoft.ru/",Стр,XMLString)
Что ты пытаешься добавить ?
21 santapod
 
07.09.12
13:03
(20) Записал XML в строку: ЗаписьXML.ЗаписатьКонецЭлемента();
   Стр = ЗаписьXML.Закрыть();
А затем хочу этот Стр добавить
22 zladenuw
 
07.09.12
13:04
такс. почитай как надо работать с ХДТО.
вот кусок с СП. читай там смотри
ФабрикаXDTO (XDTOFactory)
ЗаписатьXML (WriteXML)
Синтаксис:

ЗаписатьXML(<ЗаписьXML>, <Элемент>, <ЛокальноеИмя>, <URIПространстваИмен>, <Форма>, <УказаниеТипа>)
Параметры:

<ЗаписьXML> (обязательный)

Тип: ЗаписьУзловDOM, ЗаписьFastInfoset, ЗаписьXML.
Объект записи XML.
<Элемент> (обязательный)

Тип: ЗначениеXDTO; ОбъектXDTO; Неопределено.
Записываемое значение.
<ЛокальноеИмя> (необязательный)

Тип: Строка.
Локальное имя записываемого элемента данных.
<URIПространстваИмен> (необязательный)

Тип: Строка.
URI пространства имен записываемого элемента данных.
<Форма> (необязательный)

Тип: ФормаXML.
Форма представления элемента данных в XDTO.
Значение по умолчанию: Элемент
<УказаниеТипа> (необязательный)

Тип: НазначениеТипаXML.
Вариант назначения типа элемента данных XDTO.
Значение по умолчанию: Неявное
Описание:

Записывает указанный элемент данных XDTO в объект записи XML.
23 santapod
 
07.09.12
13:08
(22) Спасибо,щас буду разбираться.
24 santapod
 
07.09.12
13:18
(22) А еще вопрос: мне придется отбросить вариант с записью XML в строку и заполнять фабрикуXDTO и записывать вот так
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, XMLString);
   ЗаписьXML.Закрыть();

Правильно?
25 santapod
 
11.09.12
12:10
Подскажите пожалуйста как бороться с этой ошибкой?

{Форма.Отчет(128)}: Ошибка при вызове метода контекста (Добавить): Несоответствие типов XDTO:
Тип '{http://wwwSQLWEBServices.usoft.ru/}DataTransfer1cResponse' не найден
Тип объекта не является открытым
   Ответ = Результат.Добавить(ФормаXML.Элемент,"http://wwwSQLWEBServices.usoft.ru/",Стр,XMLString)
по причине:
Несоответствие типов XDTO:
Тип '{http://wwwSQLWEBServices.usoft.ru/}DataTransfer1cResponse' не найден
Тип объекта не является открытым

Вот код: Прокси = WSСсылки.Локальный.СоздатьWSПрокси("http://wwwSQLWEBServices.usoft.ru/","Service","ServiceSoap");    
   XMLStringТип = Прокси.ФабрикаXDTO.Тип("http://wwwSQLWEBServices.usoft.ru/","DataTransfer1c");
   XMLString = Прокси.ФабрикаXDTO.Создать(XMLStringТип);
   Результат = Прокси.DataTransfer1c(XMLString);
   Ответ = Результат.Добавить(ФормаXML.Элемент,"http://wwwSQLWEBServices.usoft.ru/",Стр,XMLString)

Если раскрыть ветку WS-ссылки, то там на вкладке Типы объектов у DataTransfer1c стоит "Открытый - Ложь". Где можно поменять это свойство на "Открытый"?
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший