Содержание статей: 1С:Предприятие 8. Веб-сервисы
Предыдущая статья: 1С:Предприятие 8. Веб-сервисы. Классы Платформы 1С для вызова операций веб-сервис
При вызове ws-операций очень часто надо вернуть массив значений. В этой статье я расскажу как это сделать используя XDTOОбъект.
Создайте веб-сервис. В задайте свойство "URI пространства имен" веб-сервиса например "http://ghostaz.no-ip.org".
И создайте ws-операцию, например "ВозвратитьМассив".
Далее создайте XDTO-пакет и добавьте в него Тип объекта как это показано на картинке:
У свойства укажите "Максимальное количество" равное -1. Это свойство и указывает что Элемент объекта "Свойство1" может быть повторен любое количество раз. Не забудьте указать тип свойства например string.
Теперь в ws-операции можно указывать XDTOОбъект "ТипОбъекта1" как Тип возвращаемого значения, но перед этим необходимо в у веб сервиса указать XDTO пакет:
После этого можно у ws-операции "ВозвратитьМассив" указать Тип возвращаемого значения:
Можно приступать к написанию кода. В обработке вызова операции мы создадим тип объекта XDTO, затем сам объект и в цикле добавим ему несколько элементов.
Функция ВозвратитьМассив()
ТипXDTOТипОбъекта1 = ФабрикаXDTO.Тип("http://ghostaz.no-ip.org", "ТипОбъекта1");
ТипОбъекта1 = ФабрикаXDTO.Создать(ТипXDTOТипОбъекта1);
Для Ай = 1 по 4 Цикл
//добавим строку в массив
ТипОбъекта1.Свойство1.Добавить("Строка"+Ай);
КонецЦикла;
Возврат ТипОбъекта1;
КонецФункции
Вот и все. Можно публиковать и смотреть результат. А результат такой:
Подскажите, а как передать массив в качестве параметра?
ОтветитьУдалитьОтветил в отдельной статье http://codenotes-1c.blogspot.ru/2014/04/1-8-1.html Описал очень простой случай. Сам же я не в практических целях не передавал массив в качестве параметра.
УдалитьЗдравствуйте, а как можно вернуть двумерный массив?
ОтветитьУдалитьДля Ай = 1 по 4 Цикл
//добавим строку в массив
ТипОбъекта1[Ай][0] = "Строка1"
ТипОбъекта1[Ай][1] = "Строка2"
КонецЦикла;
Система матерится: {WebСервис.WebСервис.Модуль(23)}: Получение элемента по индексу для значения не определено
Надо придумать свой разделитель:
УдалитьТекст = "";
Пока Выборка.Следующий() цикл
Текст = строка(Выборка.Организация) + ";" + строка(Выборка.СуммаПродаж);
ТипОбъекта1.Свойство1.Добавить(Текст);
КонецЦикла;
";" - есть разделитель
либо делать еще одно свойство.
Надо придумать свой разделитель:
УдалитьТекст = "";
Пока Выборка.Следующий() цикл
Текст = строка(Выборка.Организация) + ";" + строка(Выборка.СуммаПродаж);
ТипОбъекта1.Свойство1.Добавить(Текст);
КонецЦикла;
";" - есть разделитель
либо делать еще одно свойство.
Владимир, спасибо что ты есть!)
ОтветитьУдалитьЯ хочу поделиться свидетельством о том, как г-н Бенджамин помог мне с займом в 2 000 000,00 долларов США для финансирования моего проекта по выращиванию марихуаны, я очень благодарен и пообещал поделиться этой законной финансирующей компанией с любым, кто ищет способ расширить свой бизнес-проект. .финансирующая компания. Любой, кто ищет финансовую поддержку, должен связаться с ними по адресу lfdsloans@outlook.com. Г-н Бенджамин также работает в WhatsApp + 1-989-394-3740, чтобы облегчить задачу любому заявителю.
ОтветитьУдалитькупить семена адениума в москве
ОтветитьУдалитьадениумы и плюмерии