@vadik007

Как отсортировать результат запроса по данному полю?

добрый вечер! Есть вот такой запрос
Функция ПолучитьАнкетуПоИмени(urlФормы)
	
	
	 
	Запрос = Новый Запрос;
		
	Запрос.Текст = "ВЫБРАТЬ
	               |	ВопросыШаблонаАнкеты.Ссылка КАК Ссылка,
	               |	ВЫБОР
	               |		КОГДА ВопросыШаблонаАнкеты.ТипВопроса = ЗНАЧЕНИЕ(Перечисление.ТипыВопросовШаблонаАнкеты.Табличный)
	               |			ТОГДА ВопросыШаблонаАнкеты.JSON
	               |		ИНАЧЕ ВопросыШаблонаАнкеты.ЭлементарныйВопрос.JSON
	               |	КОНЕЦ КАК JSON
	               |ИЗ
	               |	Справочник.ВопросыШаблонаАнкеты КАК ВопросыШаблонаАнкеты
	               |ГДЕ
	               |	ВопросыШаблонаАнкеты.ЭтоГруппа = ЛОЖЬ
	               |	И ВопросыШаблонаАнкеты.Владелец.Ссылка В
	               |			(ВЫБРАТЬ
	               |				ФормированиеЧПУ.ШаблоныАнкет
	               |			ИЗ
	               |				РегистрСведений.ФормированиеЧПУ КАК ФормированиеЧПУ
	               |			ГДЕ
	               |				ФормированиеЧПУ.URL = &URL)";
	
	Запрос.УстановитьПараметр("URL", urlФормы);
	
	МассивJSON = Новый Массив();
	МассивJSON = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("JSON");
	
	ВыходнаяСтрока = СтрСоединить(МассивJSON, ",");
		
	Возврат ВыходнаяСтрока;

Он возвращает вопросы шаблона анкет в разброс, а надо по такому порядку как на картинке 5f07781f1c433131188074.png
Т.е есть номера в шаблоне анкеты, но не могу понять как мне в отсортировать по данному полю. Т.е. я делаю разные запросы и не могу увидель данную нумерацию в консоле запросов, не понимаю где и как она находится. Вопрос: Как найти, отобразить в запросе эту нумерацию и отсортировать по ней?
  • Вопрос задан
  • 187 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Dementor
программист, архитектор, аналитик
Т.е есть номера в шаблоне анкеты, но не могу понять как мне в отсортировать по данному полю. Т.е. я делаю разные запросы и не могу увидель данную нумерацию в консоле запросов, не понимаю где и как она находится.

Судя по тексту вашего запроса, у вас все данные хранятся в JSON формате. Следовательно запросом к данным 1С у вас ничего не получится. Нужна дополнительная алгоритмическая обработка данных.

МассивJSON = Новый Массив();
МассивJSON = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("JSON");

Давайте смотреть сюда. Во первых, вы зря создаете в памяти объект типа Массив, так как следующей операцией вы создаете новый массив и помещаете ссылку на него в вашу переменную. Тем самым количество ссылок на первый массив обнуляется и он оставшееся время ожидает прихода сборщика мусора.

Далее можно просто выгрузить таблицу значений и не нужно выгружать из нее колонку JSON. Потом нужно добавить к этой таблице новую колонку для поля, по которому вы хотите сделать сортировку. Далее делайте цикл по строкам вашей таблицы, создавайте по тексту JSON объекты и значения полей сортировки закидываете в созданные вами колонки. После прохода цикла вызывайте метод Сортировать() по нужным вам колонкам в нужном направлении. И теперь вы можете вызвать ВыгрузитьКолонку("JSON") для своей таблицы - и там будут данные, которые отсортированы именно так как вам нужно.
Ответ написан
Комментировать
nki
@nki
bezkart.ru готовая система лояльности
Найдите реквизит в котором содержится номер вопроса и сортируйте по нему.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы