Упорядочивание в запросах в языке 1С 8.3

Jul 08, 2022 16:22


/// Как упорядочить результат запроса по
/// определенным полям в 1с 8.3, 8.2

&НаСервере
Процедура КакУпорядочитьРезультатЗапросаПоПолямНаСервере()

// Чтобы сортировать строки в результате запроса
// используется секция УПОРЯДОЧИТЬ ПО.

// Требуется вывести продукты, упорядоченные
// сначала по возрастанию цвета, а затем
// по убыванию калорийности.

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Цвет,
| Калорийность
|ИЗ
| Справочник.Номенклатура
|УПОРЯДОЧИТЬ ПО
| Цвет ВОЗР,
| Калорийность УБЫВ"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры


/// Как упорядочить результат запроса по
/// выражению в 1с 8.3, 8.2

&НаСервере
Процедура КакУпорядочитьРезультатЗапросаПоВыражениюНаСервере()

// В секции УПОРЯДОЧИТЬ ПО можно использовать
// выражения.

// Например, упорядочим продукты по
// максимальному содержанию белков и углеводов
// вместе.

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Белки,
| Углеводы,
| Жиры,
| Вода
|ИЗ
| Справочник.Номенклатура
|УПОРЯДОЧИТЬ ПО
| (Белки + Углеводы) УБЫВ"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры

/// Как упорядочить результат запроса по
/// иерархии в 1с 8.3, 8.2

&НаСервере
Процедура КакУпорядочитьРезультатЗапросаПоИерархииНаСервере()

// Для таблиц, для которых задано свойство иерархичности
// возможно упорядочивание в соответствии с иерархией.

// К примеру, сделаем вывод элементов из
// справочника "Номенклатура" в порядке
// их следования в иерархии справочника.

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование
|ИЗ
| Справочник.Вкусы КАК Вкусы
|УПОРЯДОЧИТЬ ПО
| Наименование Иерархия"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры

/// Как упорядочить результат запроса по
/// агрегатной функции группировки в 1с 8.3, 8.2

&НаСервере
Процедура КакУпорядочитьРезультатЗапросаПоАгрегатнойФункцииНаСервере()

// В секции УПОРЯДОЧИТЬ ПО также возможно использование
// агрегатных функций, которые были использованы для
// группировки результата запроса.

// Для каждого цвета - выберем минимальную калорийность
// продукта, имеющиего такой цвет. А затем отсортируем
// результат по возрастанию этой минимальной калорийности.

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Цвет,
| МИНИМУМ(Калорийность)
|ИЗ
| Справочник.Номенклатура
|СГРУППИРОВАТЬ ПО
| Цвет
|УПОРЯДОЧИТЬ ПО
| МИНИМУМ(Калорийность) ВОЗР");

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры

/// Как работает автоупорядочивание результата
/// в 1с 8.3, 8.2

&НаСервере
Процедура КакРаботаетАвтоупорядочиваниеНаСервере()

// Предложение АВТОУПОРЯДОЧИВАНИЕ позволяет включить режим
// автоматического формирования полей для упорядочивания
// результата запроса.

// Автоупорядочивание работает по следующим принципам:

// Если в запросе было указано предложение УПОРЯДОЧИТЬ ПО,
// то каждая ссылка на таблицу, находящаяся в этом предложении,
// будет заменена полями, по которым по умолчанию сортируется таблица
// (для справочников это код или наименование, для документов - дата
// документа). Если поле для упорядочивания ссылается на иерархический справочник,
// то будет применена иерархическая сортировка по этому справочнику.

// Если в запросе отсутствует предложение УПОРЯДОЧИТЬ ПО,
// но есть предложение ИТОГИ, тогда результат запроса будет
// упорядочен по полям, присутствующим в предложении
// ИТОГИ после ключевого слова ПО, в той же последовательности и,
// в случае если итоги рассчитывались по полям - ссылкам,
// то по полям сортировки по умолчанию таблиц, на которые были ссылки.

// Если в запросе отсутствуют предложения УПОРЯДОЧИТЬ ПО и ИТОГИ,
// но есть предложение СГРУППИРОВАТЬ ПО, тогда результат запроса
// будет упорядочен по полям, присутствующим в предложении,
// в той же последовательности и, в случае если группировка велась
// по полям - ссылкам, то по полям сортировки по умолчанию таблиц,
// на которые были ссылки.

// В случае же, если в запросе отсутствуют предложения и
// УПОРЯДОЧИТЬ ПО, ИТОГИ и СГРУППИРОВАТЬ ПО, результат будет
// упорядочен по полям сортировки по умолчанию для таблиц,
// из которых выбираются данные, в порядке их появления в запросе.

// В случае, если запрос содержит предложение ИТОГИ, каждый уровень
// итогов упорядочивается отдельно.

// В примере ниже мы сортируем по полю Ссылка и используем
// ключевое слово АВТОУПОРЯДОЧИВАНИЕ. Система при этом
// заменит поле Ссылка в секции УПОРЯДОЧИТЬ ПО на дату документа.

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПродажаЕды
|УПОРЯДОЧИТЬ ПО
| Ссылка ВОЗР
|АВТОУПОРЯДОЧИВАНИЕ"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры

Смотрите также:
Электронный учебник по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, ни­дер­ландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С
Программирование в 1С 8.3 с нуля - краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

программирование

Previous post Next post
Up