Answer the question
In order to leave comments, you need to log in
1s passing the request text to the http-service, returning the result in json?
Hi, I found such an http service on the Internet under 1s. Working.
Функция mainGet(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Если НРЕГ(Запрос.ПараметрыЗапроса.Получить("action")) = "getusers" Тогда
Ответ.УстановитьТелоИзСтроки(ВернутьСписокПользователей());
КонецЕсли;
Возврат Ответ;
КонецФункции
Функция ВернутьСписокПользователей()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пользователи.Ссылка
|ИЗ
| Справочник.Пользователи КАК Пользователи";
Выборка = Запрос.Выполнить().Выбрать();
ОтветМассив = Новый Массив;
Пока Выборка.Следующий() Цикл
ОтветМассив.Добавить(Новый Структура("name,id",Выборка.Ссылка.Наименование,""+Выборка.Ссылка.УникальныйИдентификатор()));
КонецЦикла;
Ответ = Новый ЗаписьJSON;
Ответ.УстановитьСтроку();
ЗаписатьJSON(Ответ,ОтветМассив); // сериализует ОтветМассив в формат JSON
Возврат Ответ.Закрыть();
КонецФункции
Answer the question
In order to leave comments, you need to log in
Функция ВыполнитьЗапрос(ТекстЗапроса, ПараметрыJSON)
Запрос = Новый Запрос(ТекстЗапроса);
//Тут парсим ПараметрыJSON
тзРезультат = Запрос.Выполнить().Выгрузить();
мОтвет = Новый Массив;
Для Каждого ТекСтрока Из тзРезультат Цикл
НовСтрокаОтвета = Новый Массив;
Для Каждого ТекКолонка Из тзРезультат.Колонки Цикл
НовСтрокаОтвета.Добавить(Новый Структура("key, val", ТекКолонка.Имя, XMLСтрока(ТекСтрока[ТекКолонка.Имя]));
КонецЦикла;
мОтвет.Добавить(НовСтрокаОтвета);
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб));
ЗаписатьJSON(ЗаписьJSON, мОтвет);
Возврат ЗаписьJSON.Закрыть();
КонецФункции
Probably it is necessary to write the handler for each request.
Probably you can somehow bypass writing a handler for each request.
From an example of a web service that works like this, but returns a Table and not json
//Возврат результата запроса в JSON
Функция Request1C(Request1C, ТableData, ColumnsData)
Запрос = Новый Запрос;
ТableData = "";
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
ТекстЗапроса = Сериализатор.ПрочитатьXDTO(Request1C);
Запрос.Текст = ТекстЗапроса;
//Запрос.Текст = "ВЫБРАТЬ Документ1.Ссылка, Документ1.Проведен ИЗ Документ.Документ1 КАК Документ1";
//Результат - таблица значений
Попытка
ТабЗапроса = Запрос.Выполнить().Выгрузить();
Исключение
ЗаписьЖурналаРегистрации("Request1C",,,,Строка(Request1C) + " !!! "+ОписаниеОшибки());
Возврат Ложь;
Конецпопытки;
//Тестовый вариант
//РазделительСтрокДляТестирования = Символы.ПС
РазделительСтрокДляТестирования = "";
//массив колонок
Массив = Новый Массив;
Для каждого колонка Из ТабЗапроса.Колонки Цикл
Стр = """"+"sTitle"+"""";
стр = Стр + " : ";
Стр = Стр + """"+ СокрЛП(колонка.Заголовок) + """";
Массив.Добавить(Стр);
КонецЦикла;
Разделитель="";
Стр="[";
Для Каждого Элемент Из Массив Цикл
Стр=Стр+Разделитель+РазделительСтрокДляТестирования+"{"+Элемент+"}";
Разделитель=","
КонецЦикла;
ColumnsData = Стр+РазделительСтрокДляТестирования+"]";
//таблица данных
Массив.Очистить();
РазделительСтрок="";
Стр="["+РазделительСтрокДляТестирования;
Для строка=0 По ТабЗапроса.Количество()-1 Цикл
Стр = Стр + РазделительСтрок + "[";
РазделительСтрок = "]," + РазделительСтрокДляТестирования;
Разделитель="";
Для кол=0 По ТабЗапроса.колонки.Количество()-1 Цикл
Стр = Стр + Разделитель+""""+Строка(ТабЗапроса[строка][кол])+"""";
Разделитель=",";
КонецЦикла;
КонецЦикла;
Если ТабЗапроса.Количество() > 0 Тогда
Стр=Стр+"]";
КонецЕсли;
ТableData=Стр+РазделительСтрокДляТестирования+"]";
Возврат Истина;
КонецФункции
//Возврат результата запроса в web table
Функция Request1CWebTable(Request1C, ТableData)
Запрос = Новый Запрос;
ТableData = "";
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
ТекстЗапроса = Сериализатор.ПрочитатьXDTO(Request1C);
Запрос.Текст = ТекстЗапроса;
//Результат - таблица значений
Попытка
ТабЗапроса = Запрос.Выполнить().Выгрузить();
Исключение
ЗаписьЖурналаРегистрации("Request1C",,,,Строка(Request1C) + " !!! "+ОписаниеОшибки());
Возврат Ложь;
Конецпопытки;
//строка заголовка
ТableData = "
";
Для каждого колонка Из ТабЗапроса.Колонки Цикл
ТableData = ТableData + "" + СокрЛП(колонка.Заголовок) + "";
КонецЦикла;
ТableData = ТableData + "";
//таблица данных
ТableData = ТableData + "";
Для строка=0 По ТабЗапроса.Количество()-1 Цикл
ТableData = ТableData + "";
Для кол=0 По ТабЗапроса.колонки.Количество()-1 Цикл
ТableData = ТableData + "" + Строка(ТабЗапроса[строка][кол]) + "";
КонецЦикла;
ТableData = ТableData + "";
КонецЦикла;
ТableData = ТableData + "";
ТабЗапроса = 0;
Возврат Истина;
КонецФункции