Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.03.2019
Просмотров: 51765
Скачиваний: 8724
Рис. 1.55. Вывод всех записей из состава приходных накладных с итоговыми данными для каждого товара
Заметьте, что итоговые поля могут рассчитываться необязательно для всех полей
выборки запроса, как в данном случае. Например, итог может рассчитываться только для
поля Сумма или не рассчитываться вовсе.
Расчет итогов для иерархического справочника
В данном примере в качестве детальных записей для расчета итогов мы также будем
использовать записи из состава приходных накладных.
Поскольку поле Товар, для которого рассчитываются итоги, имеет тип ссылки на
иерархический справочник Товары, то в результат запроса можно включить также итоги
по иерархии этого справочника. Для этого после имени поля необходимо указать
ключевое слово ИЕРАРХИЯ (листинг 1.58).
Листинг 1.58. Вывод итоговых данных по товарам с итогами по иерархии
Обратите внимание, что для полей, по которым рассчитываются итоги, также как и для
полей выборки запроса, можно назначить псевдоним для последующего обращения к ним
из встроенного языка.
При необходимости можно рассчитать только итоги значений по иерархии, без расчета
итогов в контрольных точках. Для этого перед ключевым словом ИЕРАРХИЯ нужно
указать ключевое слово ТОЛЬКО (листинг 1.59).
Листинг 1.59. Вывод итоговых данных только по иерархии товаров
В результате выполнения запросов, представленных в листингах 1.58 и 1.59, на рис. 1.56
в левой нижней таблице мы видим записи из состава приходных накладных с итогами по
каждому товару, и дополнительно к этому рассчитываются итоги по иерархии для этих
товаров. В правой нижней таблице рассчитываются итоги только по иерархии, без итогов
по каждому товару. В верхней таблице для сравнения приведен состав приходных
накладных с итогами только по товарам, без иерархии.
Рис. 1.56. Вывод итоговых данных по каждому товару с иерархией, без иерархии и итогов только по иерархии товаров
Возможность построения иерархических итогов относится ко всем видам иерархических
данных, таких как справочники, планы видов характеристик, планы видов расчета и т. п.
Расчет итогов по нескольким полям
Часто требуется рассчитать итоги результата запроса по значению нескольких полей
сразу. Для этого после ключевого слова ПО нужно перечислить через запятую список
полей – контрольных точек.
Например, нам нужно вывести все данные из состава приходных накладных, в разрезе
товаров и поставщиков, при этом рассчитать итоги по полям Товар и Поставщик.
Итоговые строки должны содержать для каждого товара общее количество и сумму его
поступления по каждому поставщику, а также показатели поступлений по каждому
поставщику в целом. Это можно сделать с помощью следующего запроса (листинг 1.60).
Листинг 1.60. Вывод всех записей из состава приходных накладных с итоговыми данными для каждого товара по
каждому поставщику
Обратите внимание, что в тексте запроса имена итоговых полей и контрольных точек
принято располагать на разных строках со смещением относительно ключевых слов
ИТОГИ и ПО.
В результате итоговые поля рассчитываются сначала для каждого товара по каждому
поставщику и затем отдельно для каждого поставщика по всем товарам в целом (рис.
1.57).
Рис. 1.57. Вывод всех записей из состава приходных накладных с итоговыми данными для каждого товара по каждому
поставщику
Расчет общих итогов
Помимо итогов по контрольным точкам, можно задать расчет общих итогов результата
запроса. Для этого после ключевого слова ПО необходимо указать ключевое слово
ОБЩИЕ.
Например, нам нужно вывести все данные из состава приходных накладных для каждого
поставщика и при этом рассчитать общие итоги и итоги по полю Поставщик. Итоговые
строки должны содержать для каждого поставщика общее количество и сумму
поставленных им товаров, а также эти же показатели по всем поступлениям в целом. Это
можно сделать с помощью следующего запроса (листинг 1.61).
Листинг 1.61. Вывод всех записей из состава приходных накладных с итоговыми данными для каждого поставщика и в
целом для всех поступлений
В результате итоговые поля рассчитываются для каждого поставщика, и, кроме того, в
результат запроса добавляется самая верхняя итоговая строка, содержащая итоги для
всех поступлений в целом (рис. 1.58).
Рис. 1.58. Вывод всех записей из состава приходных накладных с итоговыми данными для каждого поставщика и в
целом для всех поступлений
Итоги часто используются совместно с группировкой. В этом случае для итогов может
быть не указан список агрегатных функций, так как он будет автоматически
формироваться из агрегатных полей списка выборки (листинг 1.62).
Листинг 1.62. Совместное применение расчета итогов и группировки записей
В данном запросе после ключевого слова ИТОГИ не указаны итоговые поля, но в
результате запроса они рассчитываются, исходя из агрегатных функций в списке полей
выборки.
В целом результат запроса практически такой же, как при выполнении предыдущего
запроса (см. рис. 1.58), но количество записей в нем меньше, так как строки с
одинаковыми значениями полей группировки (Поставщик и Товар) сворачиваются в одну
запись (рис. 1.59).
Рис. 1.59. Совместное применение расчета итогов и группировки записей
Примеры использования выражений в списке полей выборки запроса
С помощью языка запросов можно решать широкий спектр задач благодаря тому, что в
тексте запросов можно использовать разнообразные выражения: литералы, агрегатные
функции, функции языка запросов, операции выбора и т. п.
В данном разделе мы разберем несколько примеров использования выражений в списке
полей выборки запроса. Заметим сразу, что все эти примеры придуманы просто для
демонстрации тех или иных возможностей языка запросов и никакого прикладного
значения не имеют.