Фирма «1С» анонсировала обновление в языке запросов, реализовав поддержку GROUPING SETS. Новая возможность появится в платформе «1С:Предприятие», начиная с версии 8.3.16.
Чем хорош GROUPING SETS
Конструкция GROUPING SETS предназначена для группировки по нескольким группам за одно сканирование таблицы, другими словами она эквивалентна конструкции ОБЪЕДИНИТЬ ВСЕ с запросами с СГРУППИРОВАТЬ ПО для указанных групп. Поля списка выборки, не попадающие в текущую группу, заменяются на NULL.
Предполагается, что группирующее наборы позволят избежать создания сложных конструкций и, в конечном итоге, позволят выиграть в производительности.
Как это будет работать
В качестве иллюстрации разработчики приводят решение задачи на базе регистра сведений ШтатноеРасписание, когда необходимо выбрать все возможные комбинации отдела, должности, руководителя, сгруппировав по ним и просуммировав зарплату. Ранее это можно было сделать только через три запроса и объединение их результатов.
Содержимое регистра и результат запроса
«С использованием GROUPING SETS этот запрос можно написать гораздо изящнее», – поясняют разработчики.
ВЫБРАТЬ
РегистрСведенийШтатноеРасписание.Отдел КАК Отдел,
РегистрСведенийШтатноеРасписание.Должность КАК Должность,
РегистрСведенийШтатноеРасписание.Руководитель КАК Руководитель,
СУММА(РегистрСведенийШтатноеРасписание.Зарплата) КАК Зарплата
ИЗ
РегистрСведений.ШтатноеРасписание КАК РегистрСведенийШтатноеРасписание СГРУППИРОВАТЬ ПО ГРУППИРУЮЩИМ НАБОРАМ
(
( РегистрСведенийШтатноеРасписание.Отдел,
РегистрСведенийШтатноеРасписание.Должность,
РегистрСведенийШтатноеРасписание.Руководитель),
( РегистрСведенийШтатноеРасписание.Отдел,
РегистрСведенийШтатноеРасписание.Должность),
( РегистрСведенийШтатноеРасписание.Должность,
РегистрСведенийШтатноеРасписание.Руководитель)
)
Таким образом, поддержка конструкции GROUPING SETS позволит в ряде случаев в разы сократить количество строк в запросах и сделать их более читаемыми.