Наверно можно както обойти написание обработчик для каждого запроса.
От пример 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;
Возврат Истина;
КонецФункции