Перейдем на закладку Связи. Так как в запросе теперь участвуют несколько таблиц, требуется определить связь между ними. По умолчанию платформой уже будет создана связь по полю Номенклатура. Но нам нужно снять флажок Все у таблицы ОстаткиНоменклатуры.Остатки и установить его у таблицы спрНоменклатура. Тем самым мы задаем тип связи как Левое соединение, то есть в результат запроса будут включены записи обеих таблиц, удовлетворяющих условию связи по полю Номенклатура. Кроме того, у таблицы спрНоменклатура, которая будет слева в тексте запроса, будут отражаться в отчете все записи, независимо от того, найдено ли им соответствие в таблице справа ОстаткиНоменклатуры.Остатки или нет. Это нужно потому, что в регистре ОстаткиНоменклатуры отражаются записи только по материалам, а отчет выводится по всем видам номенклатуры (рис. 2.60).
Рис. 2.60. Определение связи между таблицами
Перейдем на закладку Условия и на уровне запроса установим отбор, чтобы наименования групп не попадали в отчет. Для этого раскроем таблицу спрНоменклатура, перетащим мышью поле ЭтоГруппа в список условий, установим флажок Произвольное и внесем в поле Условие следующий текст (листинг 2.3).
Листинг 2.3. Условие запроса
спрНоменклатура.ЭтоГруппа = ЛОЖЬ
Закладка Условия примет вид (рис. 2.61).
Рис. 2.61. Создание условия запроса
СОВЕТ
Отбор можно применять и в самом запросе, и в настройках отчета. То же касается сортировки и группировки. Отбор лучше применять в запросе, если записи, не удовлетворяющие условию запроса, наверняка не понадобятся в отчете. Сортировку и группировку лучше применять уже в настройках отчета, чтобы сделать его более гибким.
На закладке Объединения/Псевдонимы изменим имена у полей запроса на более понятные (рис. 2.62).
Рис. 2.62. Установка псевдонимов полей запроса
СОВЕТ
Имена полей лучше изменять в запросе, так как в этом случае в схему компоновки данных они перенесутся сразу в три колонки: Поле, Путь и Заголовок, и не нужно будет лишний раз их изменять.
Нажмем ОК и вернемся в конструктор схемы компоновки данных. Текст запроса, сформированный платформой, примет вид (листинг 2.4).
Листинг 2.4. Текст запроса
ВЫБРАТЬ
спрНоменклатура.Ссылка КАК Номенклатура,
спрНоменклатура.Родитель КАК Группа,
спрНоменклатура.ВидНоменклатуры КАК Вид,
ОстаткиНоменклатурыОстатки.Склад,
ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК Остаток
ИЗ
Справочник.Номенклатура КАК спрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки
КАК ОстаткиНоменклатурыОстатки
ПО ОстаткиНоменклатурыОстатки.Номенклатура = спрНоменклатура.Ссылка
ГДЕ
спрНоменклатура.ЭтоГруппа = ЛОЖЬ
Для решения нашей задачи – вывода списка номенклатуры с остатками – мы выбрали вариант соединения двух таблиц в запросе, чтобы продемонстрировать эту возможность системы компоновки данных. Но эту же задачу можно решить с использованием двух связанных наборов данных – данных из справочника Номенклатура и регистра накопления ОстаткиНоменклатуры.Остатки.
Второй вариант лучше использовать в том случае, если получение данных одним запросом породит слишком сложный запрос, когда необходимо выводить в отчет данные с расчетом итогов, без учета дублирующихся записей, при выводе в результат данных из различных типов наборов данных (например, из запроса и таблицы значений).
Определим структуру отчета. На закладке Настройки выделим корневой элемент Отчет и добавим в него группировку по полю Группа. Выделим группировку Группа и добавим подчиненную ей группировку, не указывая группировочное поле, – Детальные записи. Затем на закладке Выбранные поля перенесем из списка доступных полей поля (рис. 2.63):
Рис. 2.63. Определение полей и группировок отчета
На закладке Другие настройки установим Макет оформления () – Яркий. Запустим отчет на исполнение в режиме 1С:Предприятие. Нажмем кнопку Сформировать. Наш отчет примет следующий вид (рис. 2.64).
Рис. 2.64. Результат отчета