Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.03.2019
Просмотров: 51782
Скачиваний: 8724
содержащая результат запроса, который включает единственное поле Сумма (рис. 1.35).
Рис. 1.35. Вывод данных из документов «ЗаказТовара» в консоли запросов
При выполнении этих запросов в консоли запросов вместо данных вложенной таблицы
будет выведен текст ТаблицаЗначений. Это значит, что данные табличной части,
выбранные в качестве вложенного результата запроса, могут быть обработаны только с
помощью встроенного языка.
подробнее
Обход результата запроса, содержащего данные табличной части, рассматривается в
разделе «
Обход выборки результата запроса, содержащего данные табличной части
».
Как получить записи иерархической таблицы и расположить их в порядке иерархии
В этом примере мы рассмотрим особенности получения данных из иерархического
справочника.
В нашей демонстрационной конфигурации существует иерархический справочник Товары
с типом иерархии Иерархия групп и элементов. Такой справочник состоит из групп и
элементов. Группы – это элементы справочника, которые имеют (или могут иметь)
подчиненные себе элементы или другие группы. В отличие от них, элементы не имеют (и
не могут иметь) подчиненных себе записей.
Иерархия может быть многоуровневой, то есть внутри групп могут быть другие группы и
элементы, не являющиеся группами (рис. 1.36).
Рис. 1.36. Структура иерархического справочника
У рассмотренного на рис. 1.36 иерархического справочника есть стандартные поля: поле
Родитель (ссылка на родительские записи у дочерних записей) и поле ЭтоГруппа
(ИСТИНА для записей, являющихся группой, и ЛОЖЬ для записей, не являющихся
группой).
В нашей демонстрационной конфигурации справочник Товары имеет трехуровневую
иерархию и выглядит следующим образом (рис. 1.37).
Рис. 1.37. Справочник «Товары» в режиме «1С:Предприятие»
Выберем поля Код, Наименование, Родитель, ЭтоГруппа из справочника Товары и
отсортируем их по наименованию уже знакомым нам запросом (листинг 1.44).
Листинг 1.44. Вывод записей иерархического справочника «Товары»
Результат выполнения запроса представлен на рис. 1.38.
Рис. 1.38. Вывод записей иерархического справочника «Товары»
Мы видим, что записи справочника отсортированы по наименованию, но элементы групп
(Обувь, Детская обувь, Продукты) идут вперемешку. Поскольку справочник является
иерархическим, гораздо привычнее видеть записи этого справочника расположенными в
иерархическом порядке. По умолчанию так и сделано в «1С:Предприятии».
Для этого изменим текст запроса. В предложении УПОРЯДОЧИТЬ ПО после имени поля
Наименование напишем ключевое слово ИЕРАРХИЯ (листинг 1.45).
Листинг 1.45. Вывод записей справочника «Товары», расположенных в порядке иерархии
В результате выполнения этого запроса записи справочника будут расположены в
порядке иерархии – начиная от самых верхних корневых записей до самых последних
элементов в цепочке иерархии (рис. 1.39).
Рис. 1.39. Вывод записей справочника «Товары», расположенных в порядке иерархии
Теперь покажем, как получать запросом реквизиты иерархического справочника с
иерархией групп и элементов. Справочник Товары в демонстрационной конфигурации
имеет реквизит Производитель, свойство Использование которого установлено в
значение Для элемента.
Следует учитывать тот факт, что реквизиты, которые используются только для
элементов справочника, будут содержать значение NULL в записях, которые являются
группами. Аналогично реквизиты, у которых свойство Использование установлено в
значение Для группы, будут содержать NULL в записях-элементах. Важно понимать, что
значение NULL не является нулем или пустой строкой. Значения данного типа обозначают
отсутствующие значения или значения, не имеющие смысла.
Для примера выполним запрос, в котором для записей, содержащих значение NULL в
поле Производитель, выводится строка «NULL». В противном случае выводится
содержимое поля Производитель (листинг 1.46).
Листинг 1.46. Вывод значения реквизита иерархического справочника
Для формирования поля выборки Производитель используется операция выбора
(ВЫБОР (КОГДА … ТОГДА) ИНАЧЕ … КОНЕЦ). В этой операции после ключевого слова
КОГДА записывается условие выбора, после ключевого слова ТОГДА следует значение
поля выборки в случае, если условие истинно. В общем случае в операции выбора может
указываться неограниченное количество альтернативных одиночных выборов КОГДА …
ТОГДА. Значение выражения, указанного после слова ИНАЧЕ, используется в качестве
результата операции выбора в том случае, если ни одно из ранее указанных
альтернативных условий выбора не было выполнено.
В результате выполнения запроса мы видим, что для записей, являющихся группами
(Обувь, Детская обувь, Продукты), в поле выборки запроса Производитель выводится
строка «NULL», а для элементов справочника, не являющихся группой, выводится
содержимое поля Производитель (рис. 1.40).
Рис. 1.40. Вывод реквизитов иерархического справочника
При этом значения этого поля для некоторых записей (Пинетки, Кроссовки, Сметана)
содержат пустую строку, но это не значение NULL – просто для этих элементов
справочника значение реквизита Производитель было не заполнено (см. рис. 1.37).