В схеме компоновки данных можно также определить и набор данных, при помощи которого будет осуществляться проверка иерархии. Так, для отчета Поступление товаров можно определить набор данных, при помощи которого пользователь сможет использовать иерархические виды сравнения с элементами построенной иерархии. Функционально это аналог отбора с видом сравнения <В группе> для обычного иерархического справочника.
В предыдущем примере мы вывели в отчет Поступление товаров иерархическую группировку Номенклатура. При этом иерархия строилась не по группам справочника Номенклатура (полю Родитель), а произвольным образом – по полю справочника Мой родитель.
Запустим отчет в режиме 1С:Предприятие. Изменим вариант отчета Иерархия и на закладке Отбор установим отбор <Номенклатура> <В группе> <Комплектующие> (рис. 3.57).
Рис. 3.57. Установка отбора
В результате мы получим тот же отчет, что и раньше (см. рис. 3.56). То есть мы использовали отбор с видом сравнения <В группе> по стандартной иерархии.
Допустим, мы хотим использовать в отборе иерархические виды сравнения с элементами нашей произвольной иерархии. Но в данном случае отбор с видом сравнения <В группе> произвольной иерархии, например, <Номенклатура> <В группе> <Основные детали> не даст никаких данных. Для решения данной задачи нужно определить в схеме компоновки данных набор данных для проверки иерархии.
Для этого в схеме компоновки данных отчета создадим набор данных ПроверкаИерархии (листинг 3.6).
Листинг 3.6. Текст запроса
ВЫБРАТЬ
Номенклатура.Ссылка КАК ПроверкаИерархииНоменклатуры,
Номенклатура.МойРодитель КАК РодительИерархииНоменклатуры
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.МойРодитель В(&ПроверкаИерархииНоменклатуры)
На закладке Связи наборов данных для набора данных ПроверкаИерархии определим связь самого к себе. В качестве выражения источника укажем поле ПроверкаИерархииНоменклатуры, а в качестве выражения приемника – поле РодительИерархииНоменклатуры. При этом укажем параметр связи ПроверкаИерархииНоменклатуры с возможностью использования списка параметров (рис. 3.58).
Рис. 3.58. Установка связей наборов данных для проверки иерархии
Теперь следует указать данный набор как набор данных проверки иерархии поля Номенклатура набора данных Приход. Это делается на закладке Наборы данных, в таблице полей набора данных (рис. 3.59).
Рис. 3.59. Установка набора данных и параметра для проверки иерархии
Запустим отчет в режиме 1С:Предприятие. Изменим вариант отчета Иерархия и на закладке Отбор установим отбор <Номенклатура> <В группе> <Основные детали> (рис. 3.60).
ПРИМЕЧАНИЕ
Поскольку элемент справочника Основные детали не является группой, то, чтобы задать такое условие отбора, нужно сначала установить вид сравнения Равно, выбрать нужный элемент собственной иерархии из группы Моя иерархия, а затем изменить вид сравнения на В группе.
Рис. 3.60. Установка отбора
Выполним отчет. В результат будут выводиться только записи в иерархии элемента Основные детали. При этом сохранится вся построенная нами иерархическая структура отчета (рис. 3.61).
Рис. 3.61. Результат отчета
ВНИМАНИЕ
После указания набора для проверки иерархии отбор по стандартной иерархии с видом сравнения <В группе> работать не будет.
Таким образом, мы рассмотрели пример построения собственной иерархии для любого, в том числе неиерархического объекта.