Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.03.2019
Просмотров: 51800
Скачиваний: 8725
будет находиться слева на закладке Связи. Кроме того, мы можем поменять условие
связи таблиц или выбрать другую таблицу из списка источников запроса относительно
того варианта связи, который был предложен нам конструктором.
Нажмем ОК и вернемся в модуль формы. Запрос, сформированный с помощью
конструктора запроса, будет выглядеть следующим образом (листинг 2.6).
Листинг 2.6. Запрос, созданный конструктором
Таким образом, при описании связи таблиц к тексту запроса конструктор добавляет
ключевые слова ВНУТРЕННЕЕ / ЛЕВОЕ / ПРАВОЕ / ПОЛНОЕ СОЕДИНЕНИЕ… ПО. В
результате мы получили текст запроса, аналогичный тому, который мы писали вручную
(см. листинг 2.5).
Объединение запросов
Теперь попробуем выполнить с помощью конструктора запроса более сложную задачу –
создадим запрос, объединяющий информацию из двух запросов, в котором записи
каждого запроса сгруппированы, а также рассчитаны итоговые данные для результата
объединения запросов. Этот пример мы рассматривали в разделе «
из разных таблиц, не связывая, а дополняя их
Листинг 2.7. Объединение данных о заказах товаров клиентами и данных о продажах товаров этим клиентам
Для того чтобы получить такой запрос с помощью конструктора запроса, нужно сначала
задать исходную таблицу и список полей выборки первого запроса, а также на закладке
Группировка установить порядок группировки записей исходной таблицы запроса. Затем
на закладке Объединения/Псевдонимы добавить еще один запрос и задать исходную
таблицу, список полей выборки и порядок группировки записей второго запроса. После
этого на закладке Итоги нужно указать, какие итоги требуется рассчитать для
результата объединения запросов.
Итак, сформируем первый запрос. На закладке Таблицы и поля перенесем табличную
часть Состав документа ЗаказТовара в список источников запроса и выберем из этой
таблицы поля: Товар и Количество. Для того чтобы выбрать поле основной таблицы
документа Клиент, раскроем поле Ссылка табличной части Состав, выберем поле
Клиент и получим обращение через точку от ссылки –
ЗаказТовараСостав.Ссылка.Клиент. Затем в списке выбранных полей запроса нажмем
кнопку Добавить и укажем произвольное выражение – «0» (рис. 2.12).
Рис. 2.12. Окно конструктора запроса
ПРИМЕЧАНИЕ
Порядок выбираемых полей очень важен для объединяемых запросов. Он должен
соответствовать рисунку 2.12.
Затем перейдем на закладку Объединения/Псевдонимы и зададим псевдонимы полей
Количество и произвольного выражения как Заказано и Продано соответственно (рис.
2.13).
Рис. 2.13. Окно конструктора запроса
Затем перейдем на закладку Группировка и зададим порядок группировки записей
исходной таблицы запроса. В окно Групповое поле перенесем поля выборки запроса
Клиент и Товар, а в окно Суммируемое поле перенесем поля Количество и 0.
Агрегатная функция, применяемая по умолчанию к суммируемым полям – СУММА, но
можно выбрать и другие агрегатные функции (рис. 2.14).
Рис. 2.14. Окно конструктора запроса
Тем самым мы указали, что записи исходной таблицы запроса ЗаказТовараСостав нужно
сгруппировать по полям Клиент и Товар, а в результате группировки вывести суммарное
значение полей Количество и 0.
Нажмем кнопку Запрос и посмотрим, как изменился текст запроса (рис. 2.15).
Рис. 2.15. Текст запроса, созданный конструктором
Итак, мы полностью сформировали описание первого запроса, входящего в объединение
запросов.
Теперь объединим с этим запросом еще один запрос. Для этого перейдем на закладку
Объединения/Псевдонимы, в списке запросов (слева) нажмем кнопку Добавить и
добавим запрос. После этого на закладке Таблицы и поля, а также на закладках
Группировка, Условия, Дополнительно станут доступны отдельные вкладки для каждого
запроса.
Определим исходные данные для второго запроса. Перенесем табличную часть Состав
документа РасходнаяНакладная в список источников запроса и выберем из этой таблицы
поля: Товар и Количество. Для того чтобы выбрать поле основной таблицы документа
Покупатель, раскроем поле Ссылка табличной части Состав, выберем поле
Покупатель и получим обращение через точку от ссылки –
РасходнаяНакладнаяСостав.Ссылка.Покупатель. Также в списке выбранных полей
запроса нажмем кнопку Добавить и укажем произвольное выражение – «0» (рис. 2.16).
Рис. 2.16. Окно конструктора запроса
ПРИМЕЧАНИЕ
Порядок выбираемых полей очень важен для объединяемых запросов. Он должен
соответствовать рисунку 2.16.
На закладке Группировка, на соответствующей вкладке, зададим порядок группировки
записей исходной таблицы второго запроса. В окно Групповое поле перенесем поля
выборки запроса Покупатель и Товар, а в окно Суммируемое поле перенесем поля
Количество и 0. Тем самым мы указали, что записи исходной таблицы запроса
РасходнаяНакладнаяСостав нужно сгруппировать по полям Покупатель и Товар, а в
результате группировки вывести суммарное значение полей Количество и 0 (рис. 2.17).
Рис. 2.17. Окно конструктора запроса
Теперь перейдем на закладку Объединения/Псевдонимы и сопоставим поля второго
запроса полям первого запроса, в частности поле Клиент первого запроса и поле
Покупатель второго запроса (рис. 2.18).