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 с тегом #Запросы:
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник