|
Как получить двумерный массив из веб-сервиса? | ☑ | ||
---|---|---|---|---|
0
ETurdymuratov
28.07.15
✎
08:32
|
Привет все! Делал как описано в примере http://codenotes-1c.blogspot.com/2013/06/1-8_18.html?showComment=1438061337137#c8037017510524313498
Задался целью вернуть не простой массив, а двумерный. Когда переделал код под себя возвращается ошибка {WebСервис.WebСервис.Модуль(23)}: Получение элемента по индексу для значения не определено. Проверял в SoapUI. Подскажите пожалуйста как правильно переделать? |
|||
1
ETurdymuratov
28.07.15
✎
08:47
|
Функция ВозвратитьМассив(IdTov, CntInt)
ТипXDTOТипОбъекта1 = ФабрикаXDTO.Тип("http://ghostaz.no-ip.org", "ТипОбъекта1"); ТипОбъекта1 = ФабрикаXDTO.Создать(ТипXDTOТипОбъекта1); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Код как Код |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура.Код = &КодТовара) КАК ТоварыНаСкладахОстатки"; Запрос.УстановитьПараметр("КодТовара", IdTov); Выборка = Запрос.Выполнить().Выбрать(); i = 0; Если Выборка.Следующий() Тогда Если CntInt <= Выборка.КоличествоОстаток Тогда СтатусТовара = "Ok" Иначе СтатусТовара = "Error" КонецЕсли; ТипОбъекта1[i][0] = СтатусТовара; ТипОбъекта1[i][1] = Выборка.КоличествоОстаток; ТипОбъекта1[i][2] = Выборка.Код; i=i+1; КонецЕсли; Возврат ТипОбъекта1; КонецФункции |
|||
2
Остап Сулейманович
28.07.15
✎
08:53
|
(0) Ошибка не имеет никакого отношения именно к ВЕБ-сервису. Разве что возникает в его модуле. Чисто одноэсная ошибка.
ЗЫ. Хоть бы примерно намекнул что же представляет из себя строка 23. |
|||
3
ETurdymuratov
28.07.15
✎
09:05
|
(2) ТипОбъекта1[i][0] = СтатусТовара;
|
|||
4
hhhh
28.07.15
✎
09:17
|
(3) там неправильно
Для Ай = 0 по 3 Цикл |
|||
5
ETurdymuratov
28.07.15
✎
09:47
|
(4) не понял?
|
|||
6
ETurdymuratov
28.07.15
✎
09:49
|
Сам пример по ссылке работает у меня, просто решил для своих целей переделать эту функцию. Мне возвратить двумерный массив, примерно что я хочу привел в моем коде
|
|||
7
ETurdymuratov
28.07.15
✎
09:50
|
Мне сказали что в веб сервисах можно только вложенные структуры создавать, массивы нельзя
|
|||
8
Serginio1
28.07.15
✎
10:34
|
Можешь сериализовать массив массивов.
Массив=Новый Массив(2); Массив[0]=Новый Массив(2); Массив[1]=Новый Массив(2); ОбъектXdto=СериализаторXDTO.ЗаписатьXDTO(Массив); Добавь к вэб сервису пакет http://v8.1c.ru/8.1/data/core И сделай возвращаемое значение Array |
|||
9
ETurdymuratov
29.07.15
✎
06:31
|
(8) Ошибка проверки модели XDTO: xdto-model-1 пакет: http://v8.1c.ru/8.1/data/core
Дублирование определений пакетов типов для пространства имен 'http://v8.1c.ru/8.1/data/core' |
|||
10
Serginio1
29.07.15
✎
10:34
|
Значит он уже добавлен. Установи возвращаемому значению тип Array из пакета http://v8.1c.ru/8.1/data/core
|
|||
11
Serginio1
29.07.15
✎
11:11
|
(9) То есть открываешь твой Вэб сервис. У него есть поле ПакетыXDTO отмечаешь http://v8.1c.ru/8.1/data/core
У тебя в какой момент происходит ошибка? Второй вариант можешь сериализовать в строку. Метод ЗначениеВСтрокуВнутр |
|||
12
ETurdymuratov
30.07.15
✎
08:55
|
(11) Сделал возвращаемое значение типа Array из пакета http://v8.1c.ru/8.1/data/core
дальше в модуле: Функция ВозвратитьМассив(IdTov, CntInt) Массив = Новый Массив(2); Массив[0]=Новый Массив(2); Массив[1]=Новый Массив(2); Массив[0].Добавить("1", "2"); Массив[1].Добавить("3", "4"); ОбъектXdto=СериализаторXDTO.ЗаписатьXDTO(Массив); Возврат ОбъектXdto; КонецФункции выдает ошибку: <detail>Неизвестная ошибка. {WebСервис.WebСервис.Модуль(34)}: Индекс находится за границами массива по причине: {WebСервис.WebСервис.Модуль(34)}: Индекс находится за границами массива</detail> |
|||
13
Serginio1
30.07.15
✎
10:21
|
Массив = Новый Массив(2);
Массив[0]=Новый Массив(2); Массив[1]=Новый Массив(2); Массив[0][0]="1"; Массив[0][1]="2"; Массив[1][0]="3"; Массив[1][1]="4"; ОбъектXdto=СериализаторXDTO.ЗаписатьXDTO(Массив); ПоказатьОбъект(ОбъектXdto); |
|||
14
Serginio1
30.07.15
✎
10:23
|
Но проще использовать ТаблицуЗначений. Там можно типизировать поля. Смотри 11
|
|||
15
ETurdymuratov
30.07.15
✎
10:59
|
(14) Заработало!!!! Благодарю уважаемый!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |