Для полного завершения картины мы создадим отчет, который будет показывать нам наличие материалов с теми или иными свойствами.
Создадим новый объект конфигурации Отчет и назовем его "ОстаткиМатериаловПоСвойствам". Запустим конструктор выходной формы, и займемся конструированием запроса.
Исходными данными для нашего запроса будут являться материал, свойство и значение свойства. Причем нужно предусмотреть возможность того, что материал выбираться не будет, а будут указываться только свойство и его значение.
Таким образом, алгоритм получения результирующих данных будет распадаться на две части: сначала, по указанным свойству и его значению, нам нужно будет выбрать все наборы свойств из регистра сведений "ЗначенияСвойствНоменклатуры", которым сопоставлены указанное свойство с указанным значением. Затем, для выбранных наборов свойств и их владельцев нам нужно будет получить остатки и обороты из регистра накопления "ОстаткиМатериалов".
Для того чтобы обеспечить такую "двухуровневую" выборку данных, мы воспользуемся возможностью создания вложенных запросов.
Сначала мы создадим вторую часть нашего алгоритма – запрос к регистру накопления "ОстаткиМатериалов".[277]
Выберем виртуальную таблицу регистра накопления "ОстаткиМатериалов.ОстаткиИОбороты". В параметрах виртуальной таблицы зададим условие отбора таким, что значение измерения регистра "НаборСвойств" должно находиться в списке, передаваемом в качестве параметра "СписокСвойств":
Для формирования такого списка наборов свойств нам и понадобится вложенный запрос к регистру сведений. Но этим мы займемся позже, а сейчас продолжим работать с регистром накопления.[278]
Из виртуальной таблицы регистра накопления "ОстаткиМатериалов.ОстаткиИОбороты" выберем следующие поля:
· | "ОстаткиМатериаловОстаткиИОбороты.Материал", |
· | "ОстаткиМатериаловОстаткиИОбороты.НаборСвойств, |
· | "ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток", |
· | "ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход", |
· | "ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход", |
· | "ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток": |