1С 8.3 Итоги в запросе - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Итоги в запросе

Данные > Примеры кода 1С > 1С 8.3 Запросы
Итоги в запросе 1С 8.3 - это вычисление итогов по одним полям в разрезе других полей. Сперва в секции ИТОГИ указываются поля по которым нужно вывести суммарные значения и обязательно используется одна из агрегатных функций (СУММА, СРЕДНЕЕ, МАКСИМУМ, МИНИМУМ, КОЛИЧЕСТВО). После в секции с ПО нужно указать поля, в разрезе которых, вычисляются итоги.

Во время подведения итогов в таблицу добавляются строки с самими итогами. Если мы подводим итоги в разрезе поля которое имеет иерархическую структуру (например: Справочник), то можно использовать ключевое слово ИЕРАРХИЯ, чтобы подвести итоги по всем уровням вложенности. При использовании ключевого слова ТОЛЬКО ИЕРАРХИЯ, итоги будут подводиться только по группам, без расчёта итогов в элементах.
Получение итогов в целом по таблице в 1С 8.3:
&НаСервере
Процедура ПолучениеИтоговВЦеломПоТаблице()

   
// Получение среднего веса материалов по всему справочнику
   
Запрос = Новый Запрос("ВЫБРАТЬ
    |   Наименование,
    |   Вес
    |ИЗ
    |   Справочник.Материалы
    |ГДЕ
    |   ЭтоГруппа = Ложь
    |ИТОГИ
    |   СРЕДНЕЕ(Вес)
    |ПО
    |   ОБЩИЕ"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Получение итогов по одному полю в разрезе другого поля в 1С 8.3:
&НаСервере
Процедура ПолучениеИтогоВПоОдномуПолюВРазрезеДругогоПоля()

   
// Получение итогов по весу материалов в разрезе Срока Использования
   
Запрос = Новый Запрос("ВЫБРАТЬ
    |   СрокИспользования,
    |   Наименование,
    |   Вес
    |ИЗ
    |   Справочник.Материалы
    |ГДЕ
    |   ЭтоГруппа = Ложь
    |ИТОГИ
    |   СУММА(Вес)
    |ПО
    |   СрокИспользования"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Получение итогов одних полей в разрезе нескольких других в 1С 8.3:
&НаСервере
Процедура ПолучениеИтоговОднихПолейВРазрезеНесколькихДругих()

   
// Получение итогов веса, плотности и фасовки материалов
    // в разрезе производителей и сроков использования, по всему справочнику
   
Запрос = Новый Запрос("ВЫБРАТЬ
    |   СрокИспользования,
    |   Производитель,
    |   Наименование,
    |   Вес,
    |   Плотность,
    |   Фасовка,
    |ИЗ
    |   Справочник.Материалы
    |ГДЕ
    |   ЭтоГруппа = Ложь
    |ИТОГИ
    |   СУММА(Вес),
    |   СУММА(Плотность),
    |   СУММА(Фасовка),
    |ПО
    |   ОБЩИЕ,
    |   СрокИспользования,
    |   Производитель"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Получение итогов по иерархии в 1С 8.3:
&НаСервере
Процедура ПолучениеИтоговПоИерархии()

   
// Получение средней цены поступления на материалы
    // в разрезе элементов и групп справочника материалов
   
Запрос = Новый Запрос("ВЫБРАТЬ
    |   Период,
    |   Материалы,
    |   ВходящаяЦена
    |ИЗ
    |   РегистрСведений.ВходящаяЦенаМатериалов КАК ВходящаяЦенаМатериалов
    |ИТОГИ
    |   СРЕДНЕЕ(ВходящаяЦена)
    |ПО
    |   Материалы ИЕРАРХИЯ"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 14.06.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому