Слайд 2
Для анализа хранящейся в системе информации или, например,
представления информации в отчет, часто приходится получать данные сразу
из нескольких источников (например, информация по товару может храниться в справочнике, в документе и в регистрах одновременно).
Такой способ работы с данными позволяет получать сложные выборки данных, сгруппированные и отсортированные определенным образом. Для этих выборок могут быть рассчитаны общие и промежуточные итоги, наложены ограничения на количество или состав записей .
Слайд 3
Типы таблиц источников данных
По происхождению таблицы источников можно
поделить на три группы:
Реальные – данные физически хранятся
в базе данных;
Виртуальные (расчетные) – данные вычисляются системой 1С:Предприятие 8 в момент обращения к источнику;
Временные (внешние) – данные находятся в памяти компьютера.
Типы полей
Набор данных результата определяется полями. Поля результата могут определяться двумя способами:
через определение полей источников (колонок);
расчетным способом на основании значений нескольких полей, либо вообще без обращения к полям источника (Вычисляемые поля).
Типы значений в полях
В качестве типов значения полей таблиц может выступать значение типа Null.
Слайд 4
Реальные таблицы
Реальные таблицы хранятся в базе данных, то
есть интерпретируются из реально существующей таблицы базы данных. В
качестве примера реальных таблиц можно привести следующие таблицы:
таблицы справочников и документов;
таблицы регистров.
Из реальных таблиц можно выделить несколько подклассов:
Объектные – предназначены для хранения объектов, таких как справочники, документы, счета и т. п.
В качестве примера объектных таблиц можно привести следующие таблицы:
таблица констант;
таблицы справочников;
таблицы документов;
таблицы плана счетов;
таблицы плана видов характеристик;
таблицы плана видов расчета;
Вложенные таблицы – предназначены для хранения данных, представленных в виде табличных частей справочников и документов.
Слайд 5
Виртуальные таблицы
В качестве примера виртуальных таблиц можно привести
следующие
таблицы:
таблицы наиболее поздних (среза последних) записей периодического регистра
сведений;
таблицы наиболее ранних (среза первых) записей регистра сведений;
таблицы остатков и/или оборотов регистра накоплений, бухгалтерии.
Временные таблицы
Временные таблицы – это таблицы произвольной структуры, создаваемые разработчиком в любой момент времени в памяти компьютера. Они позволяют определить в качестве источников в табличном виде абсолютно любую информацию:
из памяти компьютера, например из незаписанного документа;
из внешних источников, например, внешних СУБД;
данные, рассчитанные произвольным образом. В отличие от виртуальных таблиц неограниченное разнообразие алгоритмов .
Слайд 6
Механизмы чтения данных из таблиц
Для чтения данных из
таблиц в системе 1С:Предприятие 8 применяются различные механизмы:
Механизм компоновки
данных – это механизм определения схемы источников данных и способов их обработки и представления. Позволяет упростить процесс разработки и использования запросов конечными пользователями.
Главным инструментом данного механизма является конструктор схемы компоновки данных:
Слайд 7
Механизм запросов - это механизм доступа к данным,
который поддерживает платформа. Используя этот механизм, разработчик может читать
и обрабатывать данные. Данный механизм может использоваться:
системой компоновки данных для получения данных;
при программном обращении к данным.
На программном уровне доступ может осуществляться с помощью разных объектов встроенного языка:
Построитель запроса – позволяет использовать динамические запросы для получения данных;
Построитель отчета – позволяет использовать динамические запросы для получения и вывода данных.
Запрос – позволяет использовать статические запросы для получения данных:
Для получения данных предусмотрен метод Выполнить.
В результате исполнения запроса система 1С:Предприятие 8 возвращает объект встроенного языка РезультатЗапроса
Слайд 8
Для передачи в запрос внешних параметров, которые нельзя
получить из базы (например, текущий документ) реализован метод УстановитьПараметр:
Передача
параметров должна осуществляться до выполнения запроса.
Полный перечень свойств, методов объекта Запрос и их описание можно получить в документации или электронной справке:
Слайд 9
Язык запросов - является языком описания инструкций для
компьютера в части получения данных и основан на SQL,
но имеет некоторые расширения, позволяющие упростить и расширить возможности механизма запросов. Язык запросов существенно отличается от встроенного языка технологической платформы:
Главным инструментом разработчика по созданию текстов на языке запросов является конструктор запросов:
Слайд 10
Конструктор позволяет не только повысить скорость создания текстов
запроса, но и избежать огромного количества трудноуловимых ошибок при
ручном описании текста запроса.
Обращение к конструктору запроса может осуществляться средствами встроенного языка.
Данный инструмент позволяет, как создавать новые тексты запросов, так и редактировать уже существующие:
Слайд 11
При программном использовании текста запроса необходимо передать в
соответствующий объект встроенного языка механизма запросов (Запрос, ПостроительЗапроса, ПостроительОтчета,
КонструкторЗапроса).
Например, через свойство Текст:
В процессе разработки можно загрузить текст запроса в конструктор через специальное окно по кнопке Запрос в режиме редактирования, при этом текущая структура запроса в конструкторе будет удалена:
Слайд 12
Если текст запроса передается в конструктор, то он
автоматически проверяется системой:
если запрос верный, он форматируется с
учетом правил генерации запроса. При чтении свойства Текст мы получим уже отформатированный и структурированный текст запроса:
на корректность
Слайд 13
Язык запросов
Русско-английские возможности языка запросов
Система 1С:Предприятие 8 поддерживает
возможность написания текста запросов на английском языке:
Основная настройка конфигурации
«Вариант встроенного языка» позволяет определить язык синтаксических конструкций, используемый в конструкторе запроса (русский либо английский):
Слайд 14
Структура и синтаксис запроса
Текст запроса составляется на языке
запросов и его возможную структуру можно описать следующим синтаксическим
правилом:
Слайд 15
Секция ВЫБРАТЬ.
Текст запроса всегда начинается с обязательного ключевого
слова ВЫБРАТЬ. Данное ключевое слово позволяет указать:
Список полей
для выборки
либо, используя символ звездочка (*) выбрать все именованные поля из источника
либо через имена полей выбрать определенные именованные поля из таблиц-источников данных через запятую
В качестве полей выборки можно использовать вложенные таблицы:
В качестве полей могут использоваться вычисляемые выражения, например, параметры запроса, арифметические, логические, строковые выражения и выражения с оператором выбора
Слайд 16
Виртуальные поля. Виртуальные поля – это поля,
которые не хранятся в базе данных, а генерируются системой
«на лету», например, поле «Представление» для таблицы справочника и документа, или поле «МоментВремени» для документа:
Без виртуальных полей:
С виртуальными полями:
Условия появления ВИРТУАЛЬНЫХ ПОЛЕЙ
При использовании в тексте запроса в качестве списка полей выборки символа ЗВЕЗДОЧКА (*) виртуальные поля не подставляются автоматически программно и конструктором в список выбранных полей. Их использование надо задать в явном виде, т.е. указанием их имен из списка возможных полей.
Слайд 17
Псевдонимы полей выборки присваиваются с помощью (необязательного) ключевого
слова КАК, либо в конструкторе на закладке"Объединения и Псевдонимы":
Если
полю выборки назначить псевдоним, то в дальнейшем к этому полю можно будет обращаться, используя его псевдоним в результатах запроса (например, для автозаполнения печатных форм данными из запроса) и в некоторых конструкциях языка запросов:
Слайд 18
В предложениях УПОРЯДОЧИТЬ ПО и ИТОГИ можно использовать
псевдонимы.
Обращение к полям через точку (".") - если поля
какой-либо таблицы имеют ссылочный тип (хранят ссылки на объекты другой таблицы), разработчик может в тексте запроса ссылаться на них через ".", как в встроенном языке (для упрощения запроса), при этом количество уровней вложенности таких ссылок система не ограничивает:
Слайд 19
В результате исполнения запроса система может возвращать повторяющиеся
записи (зависит от запроса получаемых данных). Например, в запросе
всех товаров, указанных в документах «Приход товара»:
Для сворачивания таких записей (показа их только один раз) существует ключевое слово РАЗЛИЧНЫЕ:
Слайд 20
Ключевое слово РАЗРЕШЕННЫЕ означает, что запрос выберет только
те записи, на которые у текущего пользователя есть права.
Если данное слово не указать, то в случае, когда запрос выберет записи, на которые у пользователя нет прав, запрос отработает с ошибкой и пользователь получит сообщение:
Данное ключевое слово идет сразу за конструкцией ВЫБРАТЬ и может задаваться как вручную в тексте запроса, либо в конструкторе запроса на закладке «Дополнительно»:
Условия применения конструкции РАЗРЕШЕННЫЕ
Может присутствовать предложении ВЫБРАТЬ только верхнего уровня и распространяется на весь запрос, включая вложенные запросы
Слайд 21
Конструкция ПЕРВЫЕ позволяет задать предельное количество строк
в результате запроса. Будут отобраны самые первые (в соответствии
с правилами упорядочивания результатов запроса) строки. <Количество> задается целым числом:
Если упорядочить список по возрастанию, то получим «Первые»
Если упорядочить по убыванию, то – «Последние»
Слайд 22
Секция ИЗ.
В языке запросов источники данных можно определять
двумя способами:
Упрощенный вариант - в имени поля выборки
(применяется при запросах с одним источником и небольшим количеством выбираемых полей 1-2)
Стандартный вариант – используется конструкция ИЗ <Список источников>. Описание источников может быть опущено только в том случае, если они полностью определены в списке полей выборки:
Слайд 23
Для таблиц, как и для полей, могут применяться
псевдонимы через ключевое слово КАК (не обязательное, но желательное):
При
использовании псевдонимов таблиц, обращение к полям осуществляется через заданные псевдонимы. Конструктор запроса всегда указываем псевдоним таблицы, если он не задан явно. Имя псевдонима определяется системой по имени таблицы:
Слайд 24
Секция ГДЕ.
Условие на выбор конкретных записей задается с
помощью конструкции ГДЕ . В конструкторе запроса условие
определяется на закладке «Условия»:
В условиях можно использовать логические операторы И, ИЛИ, НЕ, а так же операторные скобки, при помощи которых можно задавать более сложные условия отбора. Приоритеты выполнения операторов: НЕ, потом И, потом ИЛИ.
Произвольные условия в конструкторе отмечаются флажком в колонке «П..»(Произвольное):
Слайд 25
Для создания произвольных условий в конструкторе существует конструктор
произвольных выражений:
Полное описание всех функций языка запроса и примеры
использования определены в документации и электронной справке (F1):
Слайд 26
Секция СГРУППИРОВАТЬ ПО
Конструкция СГРУППИРОВАТЬ ПО , которая
в конструкторе запроса отображается на закладке «Группировка»:
Слайд 27
Все поля выборки запроса должны делиться на две
группы:
агрегатные функции (конструктор предлагает быстрый выбор допустимых агрегатных
функций):
поля, по которым ведется группировка.
Исключение составляют ситуации, когда агрегатные (агрегировать-собирать) функции применены к полям вложенной таблицы. В этом случае в списке полей выборки возможны обращения к полям таблицы верхнего уровня, без группировки результатов по этим полям.
Слайд 28
Секция ИМЕЮЩИЕ.
Предложение «ИМЕЮЩИЕ» позволяет накладывать условия на значения
агрегатных функций и результаты группировок. В других конструкциях языка
запросов, например, в предложении ГДЕ, использовать агрегатные функции в условиях нельзя.
В условии отбора ИМЕЮЩИЕ можно использовать только агрегатные функции и поля, по которым осуществляется группировка:
Слайд 29
Секция ДЛЯ ИЗМЕНЕНИЯ.
Предложение ДЛЯ ИЗМЕНЕНИЯ предназначено для указания
необходимости блокировки считываемых в транзакции данных. В конструкторе запроса
данная настройка осуществляется на закладке «Дополнительно»:
1. с установкой флажка "Блокировать получаемые данные для последующего изменения" появится конструкция «ДЛЯ ИЗМЕНЕНИЯ»;
2. в область «Таблицы для изменения» переносим необходимые для блокировки таблицы из области «Таблицы».
Слайд 30
Секция УПОРЯДОЧИТЬ ПО.
Данная возможность реализуется с помощью ключевого
слова УПОРЯДОЧИТЬ ПО. Список полей упорядочивания может состоять из
одного или нескольких имен полей, разделенных запятыми. Настройка упорядочивания в конструкторе запроса производится на закладке «Порядок»:
Слайд 31
Существует несколько вариантов упорядочивания:
Возрастание - упорядочивание по
указанному полю в порядке возрастания значений. Является вариантом по
умолчанию. Если в запросе не указан способ, но можно указать явно – «ВОЗР».
Убывание - упорядочивание по указанному полю в порядке убывания значений (указание в тексте запроса требует явного указания – «УБЫВ»).
Слайд 32
Следующие настройки работают только для иерархических (по своему
происхождению) таблиц:
Иерархия (по возрастанию) – добавляет в результат
группы элементов. Сортировка элементов по возрастанию.
Слайд 33
Иерархия по убыванию – добавляет в результат группы
элементов. Сортировка элементов по убыванию.
АВТОУПОРЯДОЧИВАНИЕ используется автономно (в тексте
запроса отсутствуют предложения: УПОРЯДОЧИТЬ ПО, ИТОГИ, СГРУППИРОВАТЬ ПО)
Результат запроса будет упорядочен по полям сортировки по умолчанию для таблиц, выбранных в качестве источников данных:
Слайд 34
АВТОУПОРЯДОЧИВАНИЕ + УПОРЯДОЧИТЬ ПО.
Каждая ссылка на таблицу, перечисленная
после предложения УПОРЯДОЧИТЬ ПО, будет заменена полями, по которым
по умолчанию сортируется таблица.
АВТОУПОРЯДОЧИВАНИЕ + СГРУППИРОВАТЬ ПО
(в тексте запроса отсутствуют предложения УПОРЯДОЧИТЬ ПО и ИТОГИ) Результат запроса будет упорядочен по полям, перечисленным после предложения СГРУППИРОВАТЬ ПО.
Слайд 35
АВТОУПОРЯДОЧИВАНИЕ + ИТОГИ
(в тексте запроса отсутствует предложение УПОРЯДОЧИТЬ
ПО) Результат запроса будет упорядочен по полям, перечисленным после
предложения ИТОГИ ПО. А если вывод итогов осуществлялся по ссылочным полям, то и по полям сортировки по умолчанию для этих таблиц.
В случае если запрос содержит предложение ИТОГИ, каждый уровень итогов упорядочивается отдельно.
Слайд 36
Секция ИТОГИ
С помощью ключевого слова ИТОГИ можно включить
в результат запроса дополнительные записи, в которых содержатся данные
об общих и промежуточных итогах по полям и группировкам, с использованием агрегатных функций.
Существует несколько вариантов вывода итогов:
Общие итоги;
Итоги по группировкам;
Итоги по иерархии;
Комбинация вышеперечисленных вариантов;
Настройка секции ИТОГИ в конструкторе запросе осуществляется на закладке «Итоги»:
Слайд 37
Определение и использование источников
Вложенные таблицы – система 1С:Предприятие
8 хранит данные табличных частей документов, справочников, планов счетов
и прочих объектов во вложенных таблицах:
Слайд 38
В табличной модели обращения к данным система поддерживает
два способа обращения к вложенной таблице:
обращение в «упрощенном»
варианте через точку, как к реквизиту,
похоже на объектный способ (например, ПриходТовара.Товары);
«стандартный» вариант, прямое обращение к вложенной таблиц.
Обращение к вложенной таблице через владельца записей
Прямое обращение к таблице
Слайд 39
Вложенные запросы (не путать с вложенными таблицами)
Бывают ситуации,
когда для запроса необходимо определить в качестве источника данных
результат другого запроса:
В качестве полей такого источника доступны все поля, описанные в списке полей выборки вложенного запроса.
Вложенный запрос может использоваться не только для определения источника данных, но также и для определения сложных условий в тексте запроса в операторах «В» и «НЕ В»: == при задании параметров виртуальной таблицы
Слайд 40
Виртуальные таблицы
Виртуальные таблицы, предоставляемые системой, позволяют получить практически
готовые данные для большинства прикладных решений без необходимости составления
сложных запросов. Например, такая виртуальная таблица может предоставить данные по остаткам товаров в разрезе периодов на какой-то момент времени. При этом виртуальные таблицы максимально используют хранимую информацию, например, ранее рассчитанные итоги и т.д. Свои виртуальные таблицы нельзя создавать. Можно обращаться только к тем, которые уже есть в системе. Увидеть весь перечень виртуальных таблиц можно в конструкторе запроса:
Слайд 41
Использование нескольких источников
[ВНУТРЕННЕЕ] СОЕДИНЕНИЕ означает, что из обеих
исходных таблиц ― источников данных в результат запроса необходимо
включить только те комбинации записей, которые соответствуют указанному условию. Остальные записи в результат не попадают.
ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отличие от внутреннего соединения, в результат запроса надо включить также еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из второго источника.
ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и записи из второго (указанного справа от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из первого источника.
ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и те записи из обоих источников, для которых не найдено соответствий.
Слайд 42
Получение и вывод результатов запроса
Использование данных запроса
в алгоритмах – применяется в основном при необходимости программного
анализа полученных данных и выполнении на их основании каких-либо действий,
например, проведение документов.
Вывод информации на экран в определенном виде – используется в основном при формировании отчетов и печатных форм первичных документов. Существуют как механизмы интерактивной настройки с возможностью модификации в пользовательском режиме, так и средства представления информации без возможности модификации внешнего вида в пользовательском режиме.
Слайд 43
ОБХОД РЕЗУЛЬТАТА – основное назначение, генерация конструкций на
встроенном языке для работы с выборками из результата.
Слайд 44
Линейный обход – выборка будет выдавать записи
в той последовательности, в которой они располагаются в результате
запроса. Для получения линейной выборки необходимо вызвать метод Выбрать объекта РезультатЗапроса без параметров, либо с параметром ОбходРезультатаЗапроса.Прямой.
Иерархический обход – обходятся только записи, находящиеся на одном уровне. Для получения иерархической выборки из результата необходимо вызвать метод Выбрать объекта РезультатЗапроса с параметром ОбходРезультатаЗапроса.ПоГруппировкамСИерархией
Чтобы получить остальные записи результата запроса у объекта ВыборкаИзРезультатаЗапроса можно получить еще одну выборку, которая будет обходить подчиненные записи текущей записи выборки.
Обход по группировкам – обходятся только записи одного уровня, при этом записи с иерархическими итогами рассматриваются как детальные записи, а не как узловые. Стоит отметить, что группировочные записи и запись общих итогов относятся к более высокому уровню, чем детальные записи. Для получения выборки по группировкам из результата запроса необходимо вызвать метод Выбрать объекта РезультатЗапроса с параметром
ОбходРезультатаЗапроса.ПоГруппировкам