Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.03.2019
Просмотров: 51785
Скачиваний: 8724
Листинг 1.38. Отбор записей справочника «Клиенты» по условию
Нажмем кнопку Заполнить параметры и зададим значение параметра ШаблонТелефона
как «_-___-___-__-__». Результат запроса (рис. 1.30) полностью совпадает с
результатом при выполнении запроса, не использующего параметры в условии отбора
(см. рис. 1.28).
Рис. 1.30. Отбор записей справочника «Клиенты» по параметризированному условию
Как получить данные из табличной части некоторого документа
Часто может понадобиться вывести все данные из табличной части определенного
документа или элемента справочника или другого объекта конфигурации, имеющего
табличную часть.
Для этого в языке запросов существует удобная возможность – обращаться к табличной
части как к отдельной таблице. При этом в тексте запроса можно использовать все ранее
изученные нами конструкции: ВЫБРАТЬ, ИЗ и т. п. Синтаксис обращения к таблице-
источнику включает также имя табличной части – <Имя класса объектов>.<Имя объекта
конфигурации>.<Имя табличной части>, например Документ.ЗаказТовара.Состав.
Следующий запрос выводит данные всех табличных частей из всех документов
ЗаказТовара (листинг 1.39).
Листинг 1.39. Вывод данных всех табличных частей из всех документов «ЗаказТовара»
В начале главы "
Как хранятся данные в «1С:Предприятии»
" мы рассматривали, как
хранятся данные табличных частей в информационной базе «1С:Предприятия». Поля
выборки запроса Товар, Количество, Сумма – это реквизиты табличной части документа,
находящиеся в отдельной таблице базы данных, к которой мы обращаемся запросом. В
этой таблице хранятся данные всех табличных частей документов определенного вида.
Результат выполнения запроса представлен на рис. 1.31.
Рис. 1.31. Вывод данных всех табличных частей из всех документов «ЗаказТовара»
Однако в таком виде мы не можем сказать, к какому клиенту и к какому заказу относится
каждая из записей результата запроса. Для повышения информативности данных мы
можем добавить в список полей выборки реквизиты документа Номер и Клиент.
Мы знаем, что поля Номер и Клиент хранятся в основной таблице документа, а поля
Товар, Количество, Сумма из табличной части документа – в подчиненной таблице,
связанной с основной таблицей по полю Ссылка.
Поскольку в нашем примере источником запроса является подчиненная таблица
документа Документ.ЗаказТовара.Состав, то, чтобы получить данные из основной
таблицы документа, нужно обращаться к полям таблицы через точку от поля табличной
части Ссылка (листинг 1.40).
Листинг 1.40. Вывод данных из основной и подчиненной таблицы документов «ЗаказТовара»
Результат выполнения запроса представлен на рис. 1.32.
Рис. 1.32. Вывод данных из основной и подчиненной таблицы документов «ЗаказТовара»
Конечно, когда данных много, обычно требуется отобрать информацию из определенного
документа. Для этого нужно добавить в запрос параметризированное условие,
содержащее параметр, имеющий тип ссылки на документ ЗаказТовара (листинг 1.41).
Листинг 1.41. Вывод данных из определенного документа
Нажмем кнопку Заполнить параметры, и параметр Документ будет добавлен в окно
параметров консоли запросов. Причем консоль запросов из текста запроса автоматически
определяет не только имя, но и тип параметра. В предыдущем примере (см. рис. 1.29) мы
использовали в условии отбора параметр примитивного типа (Строка). В данном случае
параметр запроса имеет ссылочный тип – ДокументСсылка.ЗаказТовара.
В результате выполнения запроса мы увидим только те записи, которые относятся к
конкретному заказу товаров, указанному в параметре Документ (рис. 1.33).
Рис. 1.33. Вывод данных из определенного документа
На самом деле данные для этого запроса выбирались из двух взаимосвязанных таблиц
(основной и подчиненной таблиц документа, связанных по полю Ссылка), но подробнее
мы остановимся на этом позже.
подробнее
Раздел «
Как получить данные из таблицы, на которую ссылается поле другой таблицы
».
Как получить данные из табличной части документа в качестве вложенной таблицы
Информацию из табличной части документа можно получить также, не обращаясь к
подчиненной таблице, сразу из основной таблицы документа. В этом случае поле
результата запроса, содержащее данные из табличной части (например,
ЗаказТовара.Состав), будет иметь тип РезультатЗапроса, то есть содержать
вложенный результат запроса, сформированный на основе табличной части (листинг
1.42).
Листинг 1.42. Выбор данных из табличной части в качестве вложенной таблицы
Вложенный результат запроса к табличной части состоит из стандартных полей Ссылка,
НомерСтроки и полей с именами, соответствующими именам реквизитов табличной части
документа (рис. 1.34).
Рис. 1.34. Поля табличной части, выбираемые запросом
Можно указать конкретные поля табличной части, которые нужно выбрать запросом
(листинг 1.43).
Листинг 1.43. Выбор данных из табличной части в качестве вложенной таблицы
Важно понимать, что при выполнении первого запроса будет получена одна вложенная
таблица Состав, содержащая поля Товар, Количество и Сумма. А при выполнении
второго запроса будет получено две вложенных таблицы: таблица Состав, содержащая
результат запроса, который включает единственное поле Товар, и таблица Состав1,