Ответы пользователя по тегу RESTful API
  • 1с передача текста запроса в http-service, возврат рузультат в json?

    @milofaq Автор вопроса
    c# , java developer
    Наверно можно както обойти написание обработчик для каждого запроса.
    От пример web-сервиса которий так и работает , но вертает Таблицу а нэ 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;
    	Возврат Истина;
    КонецФункции
    Ответ написан
    Комментировать