Итоги в запросах в языке 1С 8.3, 8.2 (в примерах)

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры

См. урок для начинающих по итогам в языке запросов 1С
Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

/// Как получить итоги по одному полю в разрезе другого
/// поля в 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С программистов).



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться: