Похоже, что в Б24 Роботах Входящие параметры Множественные работают, а вот исходящие нет.
Код |
---|
Если РезультатВыполнения.Успешно Тогда
Метод = "/rest/bizproc.event.send";
ТелоHTTPЗапроса = "EVENT_TOKEN="+Б24_К_RestApiВызовСервера.ЗакодироватьСтрокуСервер(ТокенСобытияРобота);
Для каждого ТекПараметр Из ДополнительныеПараметры.Результат.ВозвращаемыеПараметры Цикл
ТелоHTTPЗапроса = ТелоHTTPЗапроса + "&RETURN_VALUES["+Б24_К_RestApiВызовСервера.ЗакодироватьСтрокуСервер(ТекПараметр.Ключ)+"]="+Б24_К_RestApiВызовСервера.ЗакодироватьСтрокуСервер(ТекПараметр.Значение);
КонецЦикла;
СтруктураОтвета = Б24_К_RestApiВызовСервера.ОтправкаДанныхНаПортал(СтруктураНастроек, Метод, ТелоHTTPЗапроса);
Если СтруктураОтвета = Неопределено Тогда
СформированныеЗапросыУдаления.Добавить("cmd[]=" + Б24_К_RestApiВызовСервера.ЗакодироватьСтрокуСервер("entity.item.delete?ENTITY="+Б24_К_RestApiВызовСервера.ЗакодироватьСтрокуСервер(ПолучитьСтроковыйИдентификаторХранилищаДанныхРоботов())+"&ID="+Б24_К_RestApiВызовСервера.ЗакодироватьСтрокуСервер(ИдЗаписиОРоботе)));
КонецЕсли;
КонецЕсли; |
и в этой строке из кода выше:
Код |
---|
Б24_К_RestApiВызовСервера.ЗакодироватьСтрокуСервер(ТекПараметр.Значение) |
не ждём массив строк, а только примитивы. И обрубается с ошибкой
Код |
---|
Ошибка при вызове метода контекста (XMLСтрока)
{Битрикс24КомплексERP ОбщийМодуль.Б24_К_RestApiВызовСервера.Модуль(863)}:Возврат КодироватьСтроку(XMLСтрока(?(ТипЗнч(ЗначениеСтроки) = Тип("Булево"), Число(ЗначениеСтроки), ЗначениеСтроки)), СпособКодированияСтроки.КодировкаURL, "UTF8");
{Битрикс24КомплексERP ОбщийМодуль.Б24_КА_РоботыИТриггерыВызовСервера.Модуль(1267)}:ТелоHTTPЗапроса = ТелоHTTPЗапроса + "&RETURN_VALUES["+Б24_К_RestApiВызовСервера.ЗакодироватьСтрокуСервер(ТекПараметр.Ключ)+"]="+Б24_К_RestApiВызовСервера.ЗакодироватьСтрокуСервер(ТекПараметр.Значение);
{(1)}:Б24_КА_РоботыИТриггерыВызовСервера.robotAction(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5381)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1449)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1426)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры); |
Сам робот только для проверки - на входе Строка с множественным значением, на выходе строка со множественным значением:
Код |
---|
[Результат].Успешно=Истина;
ЗначениеВходящегоПараметра = [ПараметрыРобота].Получить("multe_in");
[Результат].ВозвращаемыеПараметры.Вставить("multe_out", ЗначениеВходящегоПараметра );
|
В отладчике видно, что ЗначениеВходящегоПараметра - это массив строк, но этот же массив строк в [Результат].ВозвращаемыеПараметры уже приводит к ошибке.
Исправьте в новой версии.
И есть ли "костыль", чтоб обойти проблему? Мне действительно нужно вернуть массив значений.