|
веб -сервисы 8.2 | ☑ | ||
---|---|---|---|---|
0
Dagmanor
02.05.13
✎
12:22
|
Доброго времени суток. Может кто-то подсказать как передать в веб-сервис массив строк.
|
|||
1
Wobland
02.05.13
✎
12:24
|
и кто же это?
|
|||
2
Dagmanor
02.05.13
✎
12:25
|
Тип входящего параметра я поставил AnyType, при попытке получить элемент массива по индексу
"Перем1 = полученныймассив[0]" получаю ошибку: {WebСервис.Smart.Модуль(97)}: Отримання елементу за індексом для значення не визначено'. Подскажите как правильно с ним работать |
|||
3
Dagmanor
02.05.13
✎
12:29
|
Может я не правильно определил тип входящего параметра? или неправильно обращаюсь к элементам массива?
|
|||
4
Dagmanor
02.05.13
✎
12:49
|
Помогите, кто-нибудь.
|
|||
5
Нуф-Нуф
02.05.13
✎
12:52
|
поставль демо базу документооборота последнего релиза. там все есть
|
|||
6
Dagmanor
02.05.13
✎
12:56
|
На всякий случай уточню, массив передаю из Delphi
|
|||
7
Dagmanor
02.05.13
✎
13:15
|
Если не трудно, выложите пример.
|
|||
8
yukon
02.05.13
✎
13:19
|
(5) > поставль демо базу документооборота последнего релиза. там все есть
такого там нет. И похожего тоже. (2) Отладчик в руки и смотри чего там в переменной. А вообще неплохо бы код вызова показать. |
|||
9
Нуф-Нуф
02.05.13
✎
13:29
|
(8) там нет передачи массива значений?
|
|||
10
yukon
02.05.13
✎
13:33
|
(9) В параметрах функции? нет.
|
|||
11
yukon
02.05.13
✎
13:39
|
(6) Вот ты и влип очкарик! (с)
Чтобы получить массив как параметр, этот параметр в вэб-сервисе должен иметь тип {http://v8.1c.ru/8.1/data/core}Array. Сомневаюсь, что ты в Delphi формируешь объект именно этого типа. |
|||
12
alexei366
02.05.13
✎
13:57
|
(11) Да создай свой тип или импортируй в 1С XDTO пакет со стандартным массивом, а из делфи его создавай и передавай
|
|||
13
yukon
02.05.13
✎
14:00
|
(12) Да зачем нам легкие пути? Там 99% на входе СписокXDTO, "для каждого" в руки и вперед.
|
|||
14
Jaap Vduul
02.05.13
✎
14:10
|
>> Тип входящего параметра я поставил AnyType
Надо объявлять примерно таким образом: <xs:complexType name="МассивСтрок"> <xs:sequence> <xs:element name="Строка" type="xs:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> Тогда извне это действительно будет выглядеть как массив строк. В самой же 1цэ поскольку такого типа как "массив строк" не существует, параметр будет представлен типом "ОбъектXDTO". И к элементам массива можно обращаться примерно так: СтрокаМассиваНомерОдин = МассивСтрок.ПолучитьСписок("Строка")[0]; |
|||
15
alexei366
02.05.13
✎
14:23
|
(13) "{WebСервис.Smart.Модуль(97)}: Отримання елементу за індексом для значення не визначено'. ". Походу для Каждого уже не прокатит))
|
|||
16
yukon
02.05.13
✎
14:24
|
(15) Сделай
ВызватьИсключение Строка(ТипЗнч(полученныймассив)); |
|||
17
Dagmanor
02.05.13
✎
14:41
|
всем спасибо за ответы, попробую и отпишусь
|
|||
18
alexei366
02.05.13
✎
14:57
|
(16) Какое тут ВызватьИсключение, этож тебе не интерфейс а веб сервис
|
|||
19
Dagmanor
02.05.13
✎
15:00
|
(11) параметру в вэб-сервисе поставил тип {http://v8.1c.ru/8.1/data/core}Array.
ВДелфи импортировал wsdl ссылку получил описание типов: ======== Value = type string; { "http://v8.1c.ru/8.1/data/core"[Alias] } Array_ = array of Value; { "http://v8.1c.ru/8.1/data/core"[GblCplx] } ========== Далее передаю параметром : var p:Value; _arr : Array_; begin SetLength(_arr,Length(_arr)+1); p:= trim(Phone.Text); _arr[High(_arr)]:=p; GetSmartPortType.sendSMS(Парам1,Парам2,_arr,Парам4); end; ======= После чего получаю следующую ошибку...: raised exception class ERemotableException with message 'Невідома помилка. Помилка перетворення даних XDTO: Читання об`єкта типу: {http://v8.1c.ru/8.1/data/core}Array - [2,219] Перевірка додаткової властивості: форма: Атрибут ім`я: {http://www.w3.org/2003/05/soap-encoding}itemType через: Помилка перетворення даних XDTO: Читання об`єкта типу: {http://v8.1c.ru/8.1/data/core}Array - [2,219] Перевірка додаткової властивості: форма: Атрибут ім`я: {http://www.w3.org/2003/05/soap-encoding}itemType через: Помилка перевірки даних XDTO: Структура об’єкта не відповідає типу: {http://v8.1c.ru/8.1/data/core}Array '. =========================================== |
|||
20
Dagmanor
02.05.13
✎
15:01
|
Ткните меня носом... а то я с вэб-сервисами не сильно дркжу... :(
|
|||
21
Jaap Vduul
02.05.13
✎
15:14
|
(20)
Создаёшь новый XDTO пакет (или используешь свои, уже существующие), добавляешь в него тип объекта "МассивСтрок". В этот тип добавляешь свойство "Строка" (минимальное кол-во = 0, максимальное кол-во = -1, тип = string (http://www.w3.org/2001/XMLSchema)). Параметру веб-сервиса назначаешь этот новый тип "МассивСтрок". Из дельфей передаёшь обычный массив строк. В 1цэ в модуле метода веб-сервиса с элементами массива обращаешься как с типом СписокXDTO - см. (14). |
|||
22
Dagmanor
02.05.13
✎
15:28
|
(21) Та же ошибка что и в (19) :
============= Невідома помилка. Помилка перетворення даних XDTO: Читання об`єкта типу: {http://localhost/smartws/str_arr/}МассивСтрок - [2,224] Перевірка додаткової властивості: форма: Атрибут ім`я: {http://www.w3.org/2003/05/soap-encoding}itemType через: Помилка перетворення даних XDTO: Читання об`єкта типу: {http://localhost/smartws/str_arr/}МассивСтрок - [2,224] Перевірка додаткової властивості: форма: Атрибут ім`я: {http://www.w3.org/2003/05/soap-encoding}itemType через: Помилка перевірки даних XDTO: Структура об’єкта не відповідає типу: {http://localhost/smartws/str_arr/}МассивСтрок ----------- |
|||
23
Dagmanor
02.05.13
✎
15:40
|
АП
|
|||
24
Dagmanor
02.05.13
✎
15:59
|
ап
|
|||
25
toypaul
гуру
02.05.13
✎
16:37
|
В Дельфи не знаю как. В 1С недавно делал.
|
|||
26
Dagmanor
02.05.13
✎
16:52
|
Всем спасибо за помощь, проблема решена.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |