1С 8.3 Упорядочивание в запросе
Данные > Примеры кода 1С > 1С 8.3 Запросы
Упорядочивание в запросе 1С 8.3 - это функция сортировки результата запроса, для которой используются операторы УПОРЯДОЧИТЬ ПО и АВТОУПОРЯДОЧИВАНИЕ.
- В секции с оператором УПОРЯДОЧИТЬ ПО можно использовать агрегатные функции (СУММА, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, КОЛИЧЕСТВО [РАЗЛИЧНЫЕ]), которые были использованы для группировки результата. Сортировка для строк, чисел и булево (примитивных типов) происходит по алфавиту и возрастанию. Для ссылочных типов сортировка происходит не по коду (или представлению ссылки), а по уникальному идентификатору (внутреннему представлению ссылки). Если указано свойство иерархичности, то возможно упорядочивание в соответствии с иерархией.
- Оператор АВТОУПОРЯДОЧИВАНИЕ включает режим автоматического упорядочивания полей и используется для вывода записей в неизменном (постоянном) порядке. Аналогичен сортировки по умолчанию: для документов это дата и номер, а для справочников это код или наименование. В том случае, когда поле для упорядочивания ссылается на иерархический справочник, то будет применена иерархическая сортировка по данному справочнику. Автоупорядочивание в запросе может сильно тормозить процесс. Если сортировка не нужна, лучше вообще ее не использовать. Во многих случаях эффективнее записать сортировку через ключевое слово УПОРЯДОЧИТЬ ПО.
Если результат запроса содержит предложение ИТОГИ, то каждый уровень упорядочивается отдельно.
Оглавление:
Упорядочивание результата запроса по определенным полям в 1С 8.3:
&НаСервере
Процедура УпорядочиваниеРезультатаЗапросаПоОпределеннымПолям()
// Выборка материалов, упорядоченных сперва по возрастанию срока использования,
// а потом по убыванию веса
Запрос = Новый Запрос("ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Вес
|ИЗ
| Справочник.Материалы
|УПОРЯДОЧИТЬ ПО
| СрокИспользования ВОЗР,
| Вес УБЫВ");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
Процедура УпорядочиваниеРезультатаЗапросаПоОпределеннымПолям()
// Выборка материалов, упорядоченных сперва по возрастанию срока использования,
// а потом по убыванию веса
Запрос = Новый Запрос("ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Вес
|ИЗ
| Справочник.Материалы
|УПОРЯДОЧИТЬ ПО
| СрокИспользования ВОЗР,
| Вес УБЫВ");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
Упорядочивание результата запроса по иерархии в 1С 8.3:
&НаСервере
Процедура УпорядочиваниеРезультатаЗапросаПоИерархии()
// Выборка контрагентов в порядке их следования в иерархии
Запрос = Новый Запрос("ВЫБРАТЬ
| Наименование
|ИЗ
| Справочник.Контрагенты КАК Производитель
|УПОРЯДОЧИТЬ ПО
| Наименование Иерархия");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
Процедура УпорядочиваниеРезультатаЗапросаПоИерархии()
// Выборка контрагентов в порядке их следования в иерархии
Запрос = Новый Запрос("ВЫБРАТЬ
| Наименование
|ИЗ
| Справочник.Контрагенты КАК Производитель
|УПОРЯДОЧИТЬ ПО
| Наименование Иерархия");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
Упорядочивание результата запроса по выражению в 1С 8.3:
&НаСервере
Процедура УпорядочиваниеРезультатаЗапросаПоВыражению()
// Выборка материалов, упорядоченных сперва по убыванию максимальной фасовке и плотности вместе
Запрос = Новый Запрос("ВЫБРАТЬ
| Наименование,
| Фасовка,
| Плотность
|ИЗ
| Справочник.Материалы
|УПОРЯДОЧИТЬ ПО
| (Фасовка + Плотность) УБЫВ");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
Процедура УпорядочиваниеРезультатаЗапросаПоВыражению()
// Выборка материалов, упорядоченных сперва по убыванию максимальной фасовке и плотности вместе
Запрос = Новый Запрос("ВЫБРАТЬ
| Наименование,
| Фасовка,
| Плотность
|ИЗ
| Справочник.Материалы
|УПОРЯДОЧИТЬ ПО
| (Фасовка + Плотность) УБЫВ");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
Упорядочивание результата запроса по агрегатной функции группировки в 1С 8.3:
&НаСервере
Процедура УпорядочиваниеРезультатаЗапросаПоАгрегатнойФункцииГруппировки()
// Выборка материалов с минимальным весом и группировкой по сроку использования
// Запрос отсортируем по минимальному весу
Запрос = Новый Запрос("ВЫБРАТЬ
| СрокИспользования,
| МИНИМУМ(Вес)
|ИЗ
| Справочник.Материалы
|СГРУППИРОВАТЬ ПО
| СрокИспользования
|УПОРЯДОЧИТЬ ПО
| МИНИМУМ(Вес) ВОЗР");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
Процедура УпорядочиваниеРезультатаЗапросаПоАгрегатнойФункцииГруппировки()
// Выборка материалов с минимальным весом и группировкой по сроку использования
// Запрос отсортируем по минимальному весу
Запрос = Новый Запрос("ВЫБРАТЬ
| СрокИспользования,
| МИНИМУМ(Вес)
|ИЗ
| Справочник.Материалы
|СГРУППИРОВАТЬ ПО
| СрокИспользования
|УПОРЯДОЧИТЬ ПО
| МИНИМУМ(Вес) ВОЗР");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
Автоупорядочивание результата запроса в 1С 8.3:
&НаСервере
Процедура АвтоупорядочиваниеРезультатаЗапроса()
// Сортировка по полю Ссылка и использование ключевого слова АВТОУПОРЯДОЧИВАНИЕ. При этом
// поле Ссылка в секции УПОРЯДОЧИТЬ ПО будет автоматически изменена на дату документа.
Запрос = Новый Запрос("ВЫБРАТЬ
| ПоступлениеМатериалов.Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов КАК ПоступлениеМатериалов
|УПОРЯДОЧИТЬ ПО
| ПоступлениеМатериалов.Ссылка
|АВТОУПОРЯДОЧИВАНИЕ");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
Процедура АвтоупорядочиваниеРезультатаЗапроса()
// Сортировка по полю Ссылка и использование ключевого слова АВТОУПОРЯДОЧИВАНИЕ. При этом
// поле Ссылка в секции УПОРЯДОЧИТЬ ПО будет автоматически изменена на дату документа.
Запрос = Новый Запрос("ВЫБРАТЬ
| ПоступлениеМатериалов.Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов КАК ПоступлениеМатериалов
|УПОРЯДОЧИТЬ ПО
| ПоступлениеМатериалов.Ссылка
|АВТОУПОРЯДОЧИВАНИЕ");
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
КонецПроцедуры
💡 Шаблоны (готовые модели) кода 1С 8.3 с тегом #Запросы:
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник