суббота, 27 января 2018 г.

Особенности построения запросов с учетом иерархии справочников

Начнем с того, что объект конфигурации типа Справочник может быть (либо не быть) иерархичным, причем иерархия может быть групп (папки) либо элементов (дерево):
В случае, если справочник иерархичен, среди его стандартных реквизитов доступен Родитель, то есть вышестоящий элемент:
По нему-то и нужно вести отбор, если требуется выбрать позиции в пределах подчинения. Возможны два варианта построения запроса с ограничением выборки по иерархии:
  • Выбор элементов на уровне "Родитель минус один". При этом если внутри родителя есть дальнейшие уровни вложенности, в выборку они не попадут. Для этого, достаточно указать, в пределах какого родителя нужна выборка:
  • .Выбор всех элементов всех уровней вложенности в пределах родителя. Для этого используется оператор В ИЕРАРХИИ:
При этом, в качестве аргумента оператора можно задать как одно значение, так и список; но в качестве источника списка должен выступать вложенный запрос:

ВЫБРАТЬ
   Справочник.Номенклатура.Наименование

ГДЕ
   Справочник.Номенклатура.Ссылка В ИЕРАРХИИ
   (
      ВЫБРАТЬ
         Справочник.Номенклатура.Ссылка
      ГДЕ
         Справочник.Номенклатура.Наименование = "Одежда"
   )
В зависимости от иерархии справочника, можно выводить итоги каких-то связанных таблиц. Для этого предназначена закладка Итоги конструктора запросов:

В ней указывается:
  1. Поле, по которому группируем, и тип его итогов (элементы - итоги только по конечным элементам, иерахия - только по папкам, эелемнты и иерархия - все вместе)
  2. Общие итоги (да/нет) - нужно суммировать все-все полученные запросом строки на самом верхнем уровне
  3. Итоговое поле - по чем собственно считаем итоги.
Результатом запроса с итогами будет дерево значений; пример его отображения:

***
Вопрос 07.07 экзамена 1С:Профессионал по платформе. Можно ли, используя конструктор запроса, получить итоги по иерархии?
  1. Можно, если для группировочного поля указать тип итогов "Элементы и иерархия"
  2. Можно, если для группировочного поля указать тип итогов "Только иерархия"
  3. Верны ответы 1 и 2
  4. Нельзя
Правильный ответ третий, разбор выше.

***
Вопрос 07.33 экзамена 1С:Профессионал по платформе. Как изменится количество записей в результате запроса при использовании секции "ИТОГИ ПО"?
  1. Количество записей увеличится (по сравнению с их количеством без секции "ИТОГИ ПО")
  2. Количество записей останется неизменным (по сравнению с их количеством без секции " ИТОГИ ПО")
  3. Количество записей уменьшится (по сравнению с их количеством без секции "ИТОГИ ПО") 
Правильный ответ первый, число записей увеличится на число собственно итоговых строк.

1 комментарий:

  1. варианты ответов вопроса 7.07 немного изменились:

    7.7 Можно ли, используя конструктор запроса, получить итоги по иерархии?
    1. Можно, если для итогового группировочного поля указать тип итогов "Элементы и
    иерархия"
    2. Можно, если для итогового группировочного поля указать тип итогов "Только иерархия"
    3. Можно, если для итогового группировочного поля указать тип итогов "Элементы"
    4. Можно, при этом ничего делать не нужно итоги по иерархии получаются системой автоматически
    5. Варианты 1 и 2
    6. Варианты 1 и 2 и 3

    ответ тот же - вариант 5, проверено в официальном тренажере 1с

    ОтветитьУдалить