Встроенный язык. Основные секции текста запроса

Создание отчетов

Работа с запросами

Для работы с запросами используется объект встроенного языка Запрос . Он позволяет получать информацию, хранящуюся в полях базы данных, в виде выборки, сформированной по заданным правилам.

Источники данных запросов

Исходную информацию запрос получает из набора таблиц. Эти таблицы представляют данные реальных таблиц базы данных в удобном для анализа виде. Их можно разделить на две большие группы: реальные и виртуальные.

Реальные таблицы, в свою очередь, могут быть объектными (ссылочными) или не объектными (не ссылочными):

Отличительной особенностью реальных таблиц является то, что они содержат данные какой-либо одной реальной таблицы, хранящейся в базе данных. Например, реальными таблицами являются таблица «Справочник.Клиенты», соответствующая справочнику «Клиенты» или таблица «РегистрНакопления.ОстаткиМатериалов», соответствующая регистру накопления «ОстаткиМатериалов».

Виртуальные таблицы формируются, в основном, из данных нескольких таблиц базы данных. Например, виртуальной таблицей является таблица «РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты», формируемая из нескольких таблиц регистра накопления «ОстаткиМатериалов». Иногда виртуальные таблицы могут формироваться и из одной реальной таблицы (например, виртуальная таблица «Цены.СрезПоследних» формируется на основе таблицы регистра сведений «Цены»). Однако общим для всех виртуальных таблиц является то, что им можно задать ряд параметров, которые будут определять, какие данные будут включены в эти виртуальные таблицы. Набор таких параметров может быть различным для разных виртуальных таблиц, и определяется данными, хранящимися в исходных таблицах базы данных.

Реальные таблицы подразделяются на объектные (ссылочные) и не объектные (не ссылочные).

В объектных (ссылочных) таблицах представлена информация ссылочных типов данных (справочники, документы, планы видов характеристик и т.д.). А в не объектных (не ссылочных) - всех остальных типов данных (константы, регистры и т.д.).

Отличительной особенностью объектных (ссылочных) таблиц является то, что они содержат поле «Ссылка», содержащее ссылку на текущую запись. Кроме этого для таких таблиц возможно получение пользовательского представления объекта, эти таблицы могут быть иерархическими и поля таких таблиц могут содержать вложенные таблицы (табличные части).

Язык запросов

Алгоритм, по которому данные будут выбраны из исходных таблиц запроса, описывается в тексте запроса на специальном языке - языке запросов. Текст запроса состоит из нескольких частей:

    описание запроса,

    объединение запросов,

    упорядочивание результатов,

    автоупорядочивание,

    описание итогов.

Обязательной частью запроса является только первая - описание запроса. Все остальные присутствуют по необходимости.

Описание запроса определяет источники данных, поля выборки, группировки и т.д.

Объединение запросов определяет, как будут объединены результаты выполнения нескольких запросов.

Упорядочивание результатов определяет условия упорядочивания строк результата запроса.

Автоупорядочивание позволяет включить режим автоматического упорядочивания строк результата запроса.

Описание итогов определяет, какие итоги необходимо рассчитывать в запросе и каким образом группировать результат.

Отчет РеестрДокументовОказаниеУслуги

Первым отчетом, на основе которого мы начнем знакомиться с языком запросов, будет отчет «РеестрДокументовОказаниеУслуги». Этот отчет просто будет выводить список существующих в базе данных документов «ОказаниеУслуги» в порядке их дат и номеров.

Создадим в конфигураторе новый объект конфигурации Отчет «РеестрДокументовОказаниеУслуги». Перейдем на закладку «Макет» и запустим конструктор выходной формы.

В качестве источника данных для запроса выберем объектную (ссылочную) таблицу документов «ОказаниеУслуги». Из этой таблицы выберем следующие поля:

  • «Мастер»,

    «Клиент»:

Обратите внимание, что при выборе полей «Склад», «Мастер» и «Клиент» в список выбранных полей подбираются также поля «Склад.Представление», «Мастер.Представление» и «Клиент.Представление». Дело в том, что в общем случае подразумевается, что эти поля будут выводиться в ячейки табличного документа. Поскольку соответствующие поля «Склад», «Мастер» и «Клиент» являются ссылочными, то в случае, если в качестве значения параметра для вывода будет передано значение-ссылка, система будет выполнять дополнительный запрос для получения представления этого поля (которое и будет выведено в документ), в результате чего вывод отчета замедлится. Поэтому система, при выборе ссылочных полей, предлагает сразу же включить в список выбранных полей и представления ссылочных полей, в расчете на то, что именно они и будут использованы для вывода в документ.

После этого перейдем на закладку «Порядок» и укажем, что результат запроса должен быть сначала упорядочен по значению поля «Дата», а затем - по значению поля «ОказаниеУслуги.Ссылка»:

Перейдем на закладку «Отчет» и сбросим флаг «Использовать построитель отчета»:

Сбросим флаг «Использовать построитель отчета»...

Нажмем «ОК». Конструктор сформирует форму отчета и макет. Откроем модуль формы и найдем в нем процедуру «РеестрДокументовОказаниеУслуги». В этой процедуре как разформируется текст запроса, который будет использован для получения интересующих нас данных:

Запрос.Текст = “ВЫБРАТЬ

ОказаниеУслуги.Дата КАК Дата,

ОказаниеУслуги.Номер КАК Номер,

ОказаниеУслуги.Склад,

ОказаниеУслуги.Склад.Представление,

ОказаниеУслуги.Мастер,

ОказаниеУслуги.Мастер.Представление,

ОказаниеУслуги.Клиент,

ОказаниеУслуги.Клиент.Представление

Документ.ОказаниеУслуги КАК ОказаниеУслуги

УПОРЯДОЧИТЬ ПО

Текст запроса начинается, как мы говорили выше, с части описания запроса:

I ОказаниеУслуги.Дата КАК Дата,

I ОказаниеУслуги.Номер КАК Номер,

I ОказаниеУслуги.Склад,

I ОказаниеУслуги.Склад.Представление,

I ОказаниеУслуги.Мастер,

I ОказаниеУслуги.Мастер.Представление,

I ОказаниеУслуги.Клиент,

1 ОказаниеУслуги.Клиеит.Представление

I Документ.ОказаниеУслуги КАК ОказаниеУслуги

Описание запроса начинается с обязательного ключевого слова ВЫБРАТЬ. Затем следует список полей выборки, в котором описываются поля, которые должны содержаться в результате запроса. Этот список может содержать как собственно поля, так и некоторые выражения, вычисляемые на основе значений полей.

После ключевого слова ИЗ указываются источники данных - исходные таблицы запроса, содержимое которых обрабатывается в запросе. В данном случае это объектная (ссылочная) таблица «Документ.ОказаниеУслуги». После ключевого слова КАК указывается псевдоним источника данных. В нашем случае это «ОказаниеУслуги». В дальнейшем к этому источнику данных можно будет обращаться в тексте запроса, используя псевдоним.

Такое обращение мы видим в описании полей выборки:

| ОказаниеУслуги.Дата КАК Дата,

| ОказаниеУслуги.Номер КАК Номер,

| ОказаниеУслуги.Склад,

| ОказаниеУслуги.Склад.Представление,

| ОказаниеУслуги.Мастер,

| ОказаниеУслуги.Мастер.Представление,

| ОказаниеУслуги.Клиент,

| ОказаниеУслуги.Клиент.Представление

Поля выборки также могут иметь псевдонимы, по которым в дальнейшем в тексте запроса можно обращаться к этому полю. В нашем случае это псевдонимы «Дата» и «Номер».

После части описания запроса в нашем примере следует часть упорядочивания результатов:

|УПОРЯДОЧИТЬ ПО

| Дата, | Номер";

Предложение УПОРЯДОЧИТЬ ПО позволяет сортировать строки в результате запроса. После этого ключевого предложения располагается выражение упорядочивания, которое, в общем случае, представляет собой перечисление полей (выражений) и порядка вывода. В нашем случае упорядочивание будет выполняться сначала По полю выборки, обращение к которому выполняется через псевдоним - «Код», а затем по полю - «Номер». В обоих случаях порядок сортировки будет по возрастанию, который является Порядком сортировки по-умолчанию.

Теперь обратим внимание на то, как выводится результат запроса в табличный документ.

Процедура РеестрДокументовОказаниеУслуги(ТабДок) Экспорт

//{{КОНСТРУКТОР_ВЫХОДНЬК_ФОРМ(РеестрДокументовОказаниеУслугн) // Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменения будут утеряны!!!

Макет = ПолучитьМакет("РеестрДокументовОказаниеУслуги"); Запрос = Новый Запрос;

Результат = Запрос.Выполнить();

ОбластъЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал =

Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей =

ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогрутшировкуСтрок();

ВыборкаДетали = Результат.Выбрать();

Пока ВыборкаДетали.Следукнций() Цикл

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);

ТабДок.Вывести(ОбластьДетальньпсЗаписей, ВыборкаДетали.Уровень()); КонецЦикла;

/Л}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ КонецПроцедуры

В форме отчета расположен элемент управления ПолеТабличногоДокумента с именем «ТабДок», который заполняется данными на основе макета, сформированного конструктором.

В начале процедуры мы получаем макет отчета, из которого затем получаем существующие в нем области в соответствующие переменные:

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал =

Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы =

Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы =

Макет.ПолучитьОбласть("ПодвалТаблицы""); ОбластьДетальныхЗаписей =

Макет.ПолучитьОбласть("Детали");

Затем мы очищаем табличный документ и выводим в него те области, которые не содержат данных, получаемых из результата запроса:

ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок);

ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок();

В последней строке конструктор добавил начало автогруппировки строк. В данном примере у нас нет строк, которые нужно было бы группировать, но по умолчанию конструктор всегда предлагает выполнить группировку строк в табличном документе. На скорость вывода отчета такой вызов влиять не будет, поэтому оставим текст конструктора без изменений.

После этого мы получаем выборку из результата запроса, которую перебираем в цикле:

В каждой итерации цикла мы заполняем параметры полученной ранее области макета значениями, полученными из очередной записи выборки результата запроса и выводим эту область в табличный документ.

В заключение процедуры, мы выводим в табличный документ завершающие области макета:

ТабДок.ЗакончитьАвтогруппировкуСтрок();

ТабДок.Вывести(ОбластьПодвалТаблицы);

ТабДок.Вывести(ОбластьПодвал);

Теперь запустим 1С:Предприятие в режиме отладки и посмотрим на результат работы нашего отчета:

Таким образом на примере этого отчета мы продемонстрировали, как использовать конструктор выходной формы и познакомились с некоторыми основными конструкциями языка запросов.

Отчет «Рейтинг услуг» будет содержать информацию о том, выполнение каких услуг принесло OOO «На все руки мастер» наибольшую прибыль в указанном периоде. На примере отчета «Рейтинг услуг» мы проиллюстрируем, как отбирать данные в некотором периоде, как задавать параметры запроса и как использовать в запросе данные из нескольких таблиц и включать в результат запроса все данные одного из источников.

Создадим новый объект конфигурации Отчет «РейтингУслуг». Перейдем на закладку «Макеты» и вызовем конструктор выходной формы.

Выберем объектную (ссылочную) таблицу справочника «Номенклатура» и виртуальную таблицу регистра накопления «Продажи.Обороты». Для того чтобы исключить неоднозначность имен в запросе, переименуем таблицу «Номенклатура» в «СпрНоменклатура» (контекстное меню правой кнопки мыши).

Затем установим курсор на таблицу «ПродажиОбороты» и вызовем диалог ввода параметров виртуальной таблицы:

Откроем диалог ввода параметров виртуальной таблицы

Укажем, что начало и конец периода будут переданы в соответствующих параметрах «ДатаНачала» и «ДатаОкончания» (символ «&» перед именем указывает, что это параметр запроса):

Затем выберем из таблиц поля «СпрНоменклатура.Ссылка» и «ПродажиОбороты.ВыручкаОборот»:

СпрНоменклатура.Представление

ПродажиОборотыВыручкаОборот

Перейдем на закладку «Связи» и увидим, что конструктор уже создал связь между двумя выбранными таблицами - значение изменения регистра «Номенклатура» должно быть равно ссылке на элемент справочника «Номенклатура».

Единственное, что нам останется сделать, это сбросить флаг «Все» у таблицы регистра и установить его у таблицы справочника.

Будем выбирать все элементы из справочника «Номенклатура»

Установка флага «Все» у таблицы справочника будет означать, что из справочника будут выбраны все элементы и этим элементам будет поставлено в соответствие значение оборота выручки из регистра. Таким образом, в результате запроса будут присутствовать все услуги, и для некоторых из них будут указаны обороты выручки. Для тех услуг, которые не оказывались в выбранном периоде, не будет указано ничего.

Перейдем на закладку «Условия» и зададим условия выбора элементов из справочника «Номенклатура». При задании условий выбора мы снова будем использовать параметры запроса. Первым условием должно быть то, что выбранный элемент не является группой (для этого следует переключиться в режим «Произвольное условие»).

Вторым условием должно быть то, что выбранный элемент является услугой (это - «Простое условие»):

В дальнейшем, перед выполнением запроса, мы передадим в параметр «ВидНоменклатуры» - соответствующее значение перечисления.

Перейдем на закладку «Объединения/Псевдонимы» и укажем, что представление элемента справочника будет иметь псевдоним «Услуга», а поле регистра будет иметь псевдоним «Выручка»:

Перейдем на закладку «Порядок» и укажем, что результат запроса должен быть отсортирован по убыванию значения поля «Выручка».

На закладке «Итоги» определим, что нужно выводить общие итоги, и они должны представлять собой сумму значений поля «Выручка»:

На закладке «Отчет» сбросим флаг «Использовать построитель отчета».

Теперь перейдем на закладку «Выходная форма». Укажем, что параметры «ДатаОкончания» и «ДатаНачала» будут редактироваться в форме в полях ввода с типом «Дата». Для параметра «ВидНоменклатуры» мы наоборот снимем признак редактирования в форме:

Нажмем «ОК». Платформа сформирует макет и форму отчета Откроем модуль формы и найдем в нем процедуру «РейтингУслуг».

В этой процедуре, в той части, где выполняется установка параметров запроса, определим значение параметра «ВидНоменклатуры» (исправления выделены жирным шрифтом):

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи,Обороты(&ДатаНачала,

| &ДатаОкончания,)

| КАК ПродажиОбороты

|УПОРЯДОЧИТЬ ПО | ВыручкаУБЫВ

|ИТОГИ СУММА(Выручка) ПО | ОБЩИЕ";

ЗапросУстановитьПараметрС"ВидНоменклатуры",

Перечисления.ВидыНоменклатуры.Услуга);

Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала); Запрос.УстановитьПараметрС"ДатаОкончания", ДатаОкончания);

Теперь рассмотрим текст запроса, сформированный конструктором:

| СпрНоменклатура.Представление КАК Представление,

|ПродажиОбороты.ВыручкаОборот КАК Выручка

| Справочник.Номенклатура КАК СпрНоменклатура

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНачала,

| КАК ПродажиОбороты

| ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка

| (СпрНоменклатура.ЭтоГруппа = Ложь) И

| СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры

|УПОРЯДОЧИТЬ ПО

| ВыручкаУБЫВ

|ИТОГИ СУММА(Выручка) ПО

Сначала, как обычно, идет часть описания запроса и в ней есть новые для нас конструкции.

При описании источников запроса (после ключевого слова ИЗ), использована возможность определения нескольких источников запроса:

| Справочник.Номенклатура КАК СпрНоменклатура

|&ДатаОкончания,)

| КАК ПродажиОбороты

| ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка

В данном случае выбираются записи из двух источников: «СпрНоменклатура» и «ПродажиОбороты», причем ключевым предложением ЛЕВОЕ СОЕДИНЕНИЕ ... ПО описан способ, которым будут скомбинированы между собой записи этих двух источников.

ЛЕВОЕ СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обоих источников, которые соответствуют указанному после ключевого слова ПО условию. Кроме этого, в результат запроса надо включить еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из второго источника.

В описании первого источника и условия соединения нет для нас ничего нового, а вот при описании второго источника, используется возможность задания параметров виртуальной таблицы запроса:

| РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания,)

Первым параметром передается начало периода расчета итогов, вторым - конец периода. В результате исходная таблица будет содержать только обороты, рассчитанные в переданном периоде. Здесь всегда следует помнить, что если мы передаем в качестве этих параметров дату (а в нашем случае так и будет), то дата содержит и время с точностью до секунды.

Если заранее известно, что пользователя не будут интересовать результаты работы отчета в периодах, указанных с точностью до секунд, то следует учесть следующую особенность: по умолчанию время в дате установлено в 00:00:00. Поэтому, если не предпринять специальных мер, получится, что когда пользователь задаст период отчета с 01.03.2004 по 31.03.2004, итоги регистра будут рассчитаны с начала дня 01.03.2004 00:00:00 по начало дня 31.03.2004 00:00:00. Таким образом, данные за 31 число, отличные от начала дня, в расчет не войдут, что сильно удивит пользователя.

Для того чтобы исключить эту ситуацию, следует сделать две вещи.

Во-первых, в форме отчета ограничить пользователя в возможностях ввода даты начала и даты окончания, установив для соответствующих полей ввода состав даты как «Дата»:

Определим состав даты...

Во-вторых, при передаче параметров использовать встроенную функцию КонецДня(). Для этого вернемся в модуль формы отчета и внесем необходимые изменения (добавления выделены жирным шрифтом):

ПроцедураДействияФормыРейтингУслугСформировать(Кнопка) //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(РейтингУслуг) //Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменения будут утеряны!!!

ТабДок = ЭлементыФормы.ТабличноеПоле;

//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА

КонецПроцедуры

Продолжим рассматривать текст запроса. В части описания запроса есть еще одна новая для нас конструкция - задание условий отбора данных из исходных таблиц:

| СпрНоменклатура.Представление КАК Представление,

| ПродажиОбороты.ВыручкаОборот КАК Выручка

| Справочник.Номенклатура КАК СпрНоменклатура

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНачала,

| &ДатаОкончания,

| КАК ПродажиОбороты

| ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссьшка

| СпрНоменклатура.ЭтоГруппа = Ложь И

| СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры

Условию отбора всегда предшествует ключевое слово ГДЕ. После него описывается само условие. Обратите внимание, что поля исходных таблиц, на которые накладывается условие, могут и не входить в список выборки (как в нашем случае). Кроме того, в нашем условии использован параметр запроса «ВидНоменклатуры».

ИТОГИ СУММА(Выручка) ПО

Она всегда начинается с ключевого слова ИТОГИ, за которым следует описание того, какие итоги будут присутствовать в результате запроса. Сразу после слова ИТОГИ описываются агрегатные функции, которые необходимо рассчитывать в итогах. В нашем случае будет рассчитываться сумма по полю «Выручка». Затем следует ключевое слово ПО, после которого описываются группировки, в которых должны быть рассчитаны итоги. В нашем случае они отсутствуют, и используется только ключевое слово ОБЩИЕ, которое указывает на то, что итоги будут рассчитаны по всей таблице в целом.

Теперь, когда мы закончили знакомиться с текстом запроса, запустим 1С:Предприятие в режиме отладки и посмотрим, как работает наш отчет.

Зададим период отчета с 01.03.2004 по 30.04.2004. Результат будет выглядеть следующим образом:

Теперь изменим дату окончания на 31.03.2004 и убедимся, что данные за 31 марта попадают в отчет:

Запросы предназначены для извлечения и обработки информации из базы данных для предоставления пользователю в требуемом виде. Под обработкой здесь подразумевается группировка полей, сортировка строк, расчет итогов и т.д. Изменять данные с помощью запросов в 1С нельзя!

Запрос выполняется в соответствии с заданными инструкциями — текстом запроса . Текст запроса составляется в соответствии с синтаксисом и правилами языка запросов . Язык запросов 1С:Предприятие 8 основан на базе стандартного SQL , но имеет некоторые отличия и расширения.

Схема работы с запросом

Общая схема работы с запросом состоит из нескольких последовательных этапов:

  1. Создание объекта Запрос и установка текста запроса;
  2. Установка параметров запроса;
  3. Выполнение запроса и получение результата;
  4. Обход результата запроса и обработка полученных данных.

1. Объект Запрос имеет свойство Текст , которому необходимо присвоить текст запроса.

// Вариант 1
Запрос = Новый Запрос;
Запрос. Текст =
«ВЫБРАТЬ
| КурсыВалют.Период,
| КурсыВалют.Валюта,
| КурсыВалют.Курс
|ИЗ

|ГДЕ
;

// Вариант 2
Запрос = Новый Запрос («ВЫБРАТЬ
| КурсыВалют.Период,
| КурсыВалют.Валюта,
| КурсыВалют.Курс
|ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
|ГДЕ
| КурсыВалют.Валюта = &Валюта» );

2. Установка значений параметров осуществляется методом УстановитьПараметр(< Имя>, < Значение>) . Параметры в тексте запроса обозначаются символом «& » и обычно используются в условиях отбора (секция ГДЕ) и в параметрах виртуальных таблиц.

Запрос);

3. После присвоения текста и установки параметров запрос необходимо выполнить и получить результат выполнения. Выполнение производится методом Выполнить () , который возвращает объект РезультатЗапроса . Из результата запроса можно:

  • получить выборку с помощью метода Выбрать(< ТипОбхода>, < Группировки>, < ГруппировкиДляЗначенийГруппировок>) ;
  • выгрузить значения в таблицу значений или дерево значений с помощью метода Выгрузить(< ТипОбхода>) .

// Получение выборки

Выборка = РезультатЗапроса. Выбрать ();

// Получение таблицы значений
РезультатЗапроса = Запрос. Выполнить();
Таблица = РезультатЗапроса. Выгрузить ();

4. Обойти выборку результата запроса можно с помощью цикла:

Пока Выборка .Следующий () Цикл
Сообщить (Выборка .Курс );
КонецЦикла;

Полный пример работы с запросом может выглядеть так:

// Этап 1. Создание запроса и установка текста запроса
Запрос = Новый Запрос;
Запрос. Текст =
«ВЫБРАТЬ
| КурсыВалют.Период,
| КурсыВалют.Валюта,
| КурсыВалют.Курс
|ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
|ГДЕ
| КурсыВалют.Валюта = &Валюта» ;

// Этап 2. Установка параметров
Запрос. УстановитьПараметр(«Валюта» , ВыбраннаяВалюта );

// Этап 3. Выполнение запроса и получение выборки
РезультатЗапроса = Запрос. Выполнить();
Выборка = РезультатЗапроса. Выбрать ();

// Обход выборки
Пока Выборка .Следующий () Цикл
Сообщить (Выборка .Курс );
КонецЦикла;

Состав текста запроса

Текст запроса состоит из нескольких секций:

  1. Описание запроса — перечень выбираемых полей и источников данных;
  2. Объединение запросов — выражения «ОБЪЕДИНИТЬ» и «ОБЪЕДИНИТЬ ВСЕ»;
  3. Упорядочивание результатов — выражение «УПОРЯДОЧИТЬ ПО …»;
  4. Автоупорядочивание — выражение «АВТОУПОРЯДОЧИВАНИЕ»;
  5. Описание итогов — выражение «ИТОГИ … ПО …».

Обязательной является только первая секция.

Временные таблицы и пакетные запросы

Язык запросов 1С поддерживает использование временных таблиц — таблиц, полученных в результате выполнения запроса и сохраненных на временной основе.

Часто можно столкнуться с ситуацией, когда в качестве источника запроса нужно использовать не таблицы базы данных, а результат выполнения другого запроса. Эту задачу можно решить с помощью вложенных запросов или временных таблиц . Применение временных таблиц позволяет упростить текст сложного запроса, разделив его на составные части, а также, в некоторых случаях, ускорить выполнение запроса и уменьшить количество блокировок. Для работы с временными таблицами используется объект МенеджерВременныхТаблиц . Создание временной таблицы производится при помощи ключевого слова ПОМЕСТИТЬ, за которым следует наименование временной таблицы.

МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос. МенеджерВременныхТаблиц = МенеджерВТ;

Запрос. Текст =
«ВЫБРАТЬ
| Валюты.Код,
| Валюты.Наименование
|ПОМЕСТИТЬ ВТВалюты
|ИЗ
| Справочник.Валюты КАК Валюты» ;

РезультатЗапроса = Запрос. Выполнить ();

Для использования временной таблицы ВТВалюты в других запросах необходимо этим запросам присвоить общий менеджер временных таблиц — МенеджерВТ.

Пакетный запрос — это запрос, в котором содержится несколько запросов, разделенных символом «;». При выполнении пакетного запроса все входящие в него запросы выполняются последовательно, причем результаты всех временных таблиц доступны всем последующим запросам. Явное присвоение менеджера временных таблиц пакетным запросам не обязательно. Если менеджер временных таблиц не присвоен, то все временные таблицы удалятся сразу после выполнения запроса.

Для пакетных запросов доступен метод ВыполнитьПакет () , который выполняет все запросы и возвращает массив результатов. Временные таблицы в пакетном запросе будут представлены таблицей с одной строкой и одной колонкой «Количество», в которой хранится количество записей. Для отладки пакетных запросов можно использовать метод ВыполнитьПакетСПромежуточнымиДанными () : он возвращает реальное содержимое временных таблиц, а не количество записей.

// Пример работы с пакетным запросом
Запрос = Новый Запрос;
Запрос. Текст =
«ВЫБРАТЬ
| Валюты.Наименование
|ИЗ
| Справочник.Валюты КАК Валюты
|;
|ВЫБРАТЬ
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура» ;

РезультатПакета = Запрос. ВыполнитьПакет();

ТЗВалюты = РезультатПакета[ 0 ]. Выгрузить();
ТЗНоменклатура = РезультатПакета[ 1 ]. Выгрузить();

// Пример использования временных таблиц в пакетном запросе
Запрос = Новый Запрос;
Запрос. Текст =
«ВЫБРАТЬ
| Товары.Ссылка КАК Товар
|ПОМЕСТИТЬ ВТТовары
|ИЗ
| Справочник.Номенклатура КАК Товары
|ГДЕ
| Товары.Производитель = &Производитель
|;
|ВЫБРАТЬ
| ВТТовары.Товар,
| ПТУ.Количество,
| ПТУ.Цена,
| ПТУ.Ссылка КАК ДокументПоступления
|ИЗ
| ВТТовары КАК ВТТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПТУ
| ПО ВТТовары.Товар = ПТУ.Номенклатура»
;

Запрос. УстановитьПараметр(«Производитель» , Производитель);

РезультатЗапроса = Запрос. Выполнить();
Выборка = РезультатЗапроса. Выбрать ();

Пока Выборка .Следующий () Цикл

КонецЦикла;

Виртуальные таблицы

Виртуальные таблицы — это таблицы, которые не хранятся в базе данных, а формируются платформой. По своей сути это вложенные запросы к одной или нескольким физическим таблицам, выполняемые платформой. Виртуальные таблицы получают информацию только из регистров и, в основном, предназначены для решения узкоспециализированных задач.

Существуют следующие виртуальные таблицы (в скобках указаны возможные параметры):

  • Для регистров сведений:
    • СрезПервых(<Период>, <Условие>) — наиболее ранние записи на указанную дату;
    • СрезПоследних(<Период>, <Условие>) — наиболее поздние записи на указанную дату;
  • Для регистров накопления:
    • Остатки(<Период>, <Условие>) — остатки на указанную дату;
    • Обороты(<НачалоПериода>, <КонецПериода>, <Периодичность>, <Условие>) — обороты за период;
    • ОстаткиИОбороты(<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <Условие>) — остатки и обороты за период;
  • Для регистров бухгалтерии:
    • Остатки(<Период>, <УсловиеСчета>, <Субконто>, <Условие>) — остатки на указанную дату в разрезе счета, измерений и субконто;
    • Обороты(<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчета>, <Субконто>, <Условие>, <УсловиеКорСчета>, <КорСубконто>) — обороты за период в разрезе счета, измерений, кор. счета, субконто, кор. субконто;
    • ОстатковИОборотов(<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <УсловиеСчета>, <Субконто>, <Условие>) — остатки и оборотов в разрезе счета, измерений и субконто;
    • ОборотыДтКт(<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчетаДт>, <СубконтоДт>, <УсловиеСчетаКт>, <СубконтоКт>, <Условие>) — обороты за период в разрезе счета Дт, счета Кт, Субконто Дт, Субконто Кт;
    • ДвиженияССубконто(<НачалоПериода>, <КонецПериода>, <Условие>, <Порядок>, <Первые>) — движения вместе со значениями субконто;
  • Для регистров расчета:
    • База(<ИзмеренияОсновногоРегистра>, <ИзмеренияБазовогоРегистра>, <Разрезы>, <Условие>) — базовые данные регистра расчета;
    • ДанныеГрафика(<Условие>) — данные графика;
    • ФактическийПериодДействия(<Условие>) — фактический период действия.

При работе с виртуальными таблицами следует накладывать отборы в параметрах виртуальных таблиц, а не в условии ГДЕ. От этого сильно зависит время выполнения запроса.

Конструктор запроса

Для ускорения ввода текстов запросов платформа имеет специальные инструменты: Конструктор запроса и Конструктор запроса с обработкой результата . Для вызова конструкторов необходимо щелкнуть правой кнопкой мыши и выбрать требуемый пункт:

Также конструкторы можно вызвать из главного меню Текст .

При помощи конструктора запроса программист может интерактивно сконструировать текст запроса. Для этого мышкой выбираются нужные таблицы и поля, устанавливаются связи, группировки, итоги и т.д. Данный подход позволяет экономить время и избавиться от возможных ошибок. В результате своей работы конструктор запроса формирует текст запроса.

Конструктор запроса с обработкой результата кроме формирования текста запроса создает готовый фрагмент кода для получения и обработки данных.

Объект СхемаЗапроса

Платформа позволяет программно создавать и редактировать текст запроса при помощи объекта СхемаЗапроса . Объект имеет единственное свойство ПакетЗапросов , в котором объекта хранятся свойства всех запросов, редактируемых в данный момент. Объект СхемаЗапроса поддерживает следующие методы:

  • УстановитьТекстЗапроса(< Текст>) — заполняет свойство ПакетЗапросов на основании переданного текста запроса;
  • ПолучитьТекстЗапроса () — возвращает сформированный на основании свойства ПакетЗапросов текст запроса;
  • НайтиПараметры () — возвращает параметры запроса.

Рассмотрим пример работы с объектом СхемаЗапроса. Для программного формирования текста запроса

УПОРЯДОЧИТЬ ПО
Валюты.Код

Код на встроенном языке может выглядеть так:

СхемаЗапроса = Новый СхемаЗапроса;
Пакет1 = СхемаЗапроса. ПакетЗапросов[ 0 ];
Оператор1 = Пакет1. Операторы[ 0 ];
// добавление источника
ТаблицаРегистра = Оператор1. Источники. Добавить(«Справочник.Валюты» , «Валюты» );
// добавление полей
ПолеСсылка = Оператор1. ВыбираемыеПоля. Добавить(«Валюты.Ссылка» , 0 );
ПолеКод = Оператор1. ВыбираемыеПоля. Добавить(«Валюты.Код» , 1 );
// указание псевдонимов полей
Пакет1. Колонки[ 0 ]. Псевдоним = «Валюта» ;
Пакет1. Колонки[ 1 ]. Псевдоним = «Код» ;
// добавление условия
Оператор1. Отбор. Добавить(«НЕ ПометкаУдаления» );
// добавление упорядочивания
Пакет1. Порядок. Добавить(ПолеКод);
ТекстЗапроса = СхемаЗапроса. ПолучитьТекстЗапроса ();

    Наименование : Оборотные регистры накопления. Отчеты. Выбор данных из одной таблицы. Выбор данных из двух таблиц.

    Цель : Научится работать с регистрами сведений и перечислениями при работе в 1С 8.

    Подготовка к занятию :

      По указанной литературе изучить тему рассмотренную в данной технологической карте

    Литература :

4.1 Игнатов А.С. учебно – методическое пособие «1С программирование», 2014

4.2 Игнатов. А.С. конспект лекций по дисциплине «1С программирование» 2014.

    Перечень оборудования :

5.1 Персональный IBM PC.

5.2 1С версии 8.

    Задание :

6.1 Изучить порядок доступа к данным.

6.2 Изучить работу с запросами.

6.3 Изучить настройки в конфигураторе и в режиме 1С:Предприятие.

    Порядок выполнения работы:

7.1 Создать отчет Реестр документов.

7.3 Изменить параметры отчета.

8.1 Титульный лист

      Наименование и цель работы

      Выполненное задание

      Ответы на контрольные вопросы

      Вывод о проделанной работе

    Контрольные вопросы :

9.1 Из каких частей состоит текст запроса, какие из них являются обязательными.

9.2 Каковы основные синтаксические конструкции языка запросов.

9.3 Что является источником данных запроса.

9.4 Что такое псевдонимы в языке запросов.

9.5 Что такое параметры запроса.

9.6 Для чего предназначен объект встроенного языка Запрос.

9.7 Для чего предназначена система компоновки данных.

9.8 Для чего предназначена схема компоновки данных.

9.9 Для чего предназначены настройки компоновки данных.

9.10 В чем отличие между реальными и виртуальными таблицами.

Приложение:

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Способы доступа к данным

Система 1С:Предприятие 8 поддерживает два способа доступа к данным, хранящимся в базе данных:

    объектный (для чтения и записи),

    табличный (для чтения).

Объектный способ доступа к данным реализован посредством использования объектов встроенного языка. Важной особенностью объектного способа доступа к данным является то, что, обращаясь к какому-либо объекту встроенного языка, мы обращаемся к некоторой совокупности данных, находя­щихся в базе данных, как к единому целому. Объектная техника обеспечивает сохранение целостности объектов, кеширование объектов, вызов соответствующих обработчиков событий и т. д. Табличный доступ к данным в 1С: Предприятии 8 реализован с помощью запросов к базе данных, которые составляются на языке запросов. В этой технике разработчик получает возможность оперировать отдельными полями таблиц базы данных, в которых хранятся те или иные данные. Табличная техника предназначена для получения информации из базы данных по некоторым условиям (отбор, группировка, сорти­ровка, объединение нескольких выборок, расчет итогов и т.д.). Табличная техника оптимизирована для обработки больших объемов информации, расположенной в базе данных, и получения данных, отвечающих заданным критериям.

ПРАКТИЧЕСКАЯ ЧАСТЬ

Выбор данных из одной таблицы

Создадим отчет Реестр документов оказание услуги, используя систему компоновки данных. Этот отчет будет выводить список существующих в базе данных документов ОказаниеУслуги в порядке их дат и номеров.

    В режиме Конфигуратор

Добавим в конфигураторе объект конфигурации Отчет.

На закладке Основные : имя отчета – РеестрДокументовОказаниеУслуги; расширенное представление - Список оказан­ных услуг для представления отчета в интерфейсе программы. Создадим схему компоновки данных для отчета, нажмем кнопку Открыть схему компоновки данных. В открывшемся диалоговом окне конструктора макета нажмем Готово. В конструкторе схемы компоновки данных создадим Набор данных – запрос.

Рис. 13.1. Проведение приходной накладной по двум регистрам

После чего нажмем кнопку Конструктор запроса, в качестве источника данных для запроса выберем объектную таблицу документа ОказаниеУслуги. Из этой таблицы выберем следующие поля:

На закладке Объединения/Псевдонимы укажем, что поле Ссылка будет иметь псевдоним Документ . На закладке Порядок укажем, что результат запроса должен быть упорядочен по значению поля Документ .

На закладке Настройки создадим стандартные настройки, определяющие, как будет выводиться информация в отчет.

Иерархическая структура отчета может содержать в различных соче­таниях три основных элемента:

    Группировка - для вывода информации в виде обычного линей­ного отчета.

    Таблица - для вывода информации в виде таблицы.

    Диаграмма - для вывода информации в виде диаграммы.

Для добавления нового элемента, в нашем случае группировки, выделим в дереве структуры отчета корневой элемент Отчет и вызовем его контекстное меню. В окне выбора поля группировки просто нажмем ОК. В структуре отчета появится группировка Детальные записи. На закладке Выбранные поля перенесем мышью из списка доступных полей те поля, которые будут выводиться в отчет:

    Документ,

В результате окно настроек отчета должно иметь вид. На этом создание отчета закончено.

Рис. 13.2. Создание отчета

    В окне редак­тирования объекта конфигурации Отчет РеестрДокументовОказаниеУслуги перейдем на закладку Подсистемы.

Отметим в списке подсистему Оказание услуг.

    В режиме 1С: Предприятие

Запустим 1С: Предприятие в режиме отладки.

В открывшемся окне 1С: Предприятия можно наблюдать, что в панели действий раздела Оказание услуг в группе команд для выполнения отчетов появилась команда для формирования отчета Реестр документов оказание услуги. Причем если подвести к ней мышь, то появится всплывающая подсказка Список оказанных услуг, которая определяется свойством Расширенное представление.

    Выполним команду Реестр доку­ментов оказание услуги.

Перед нами откроется форма отчета, автоматически сформированная системой.

    Нажмем кнопку Сформировать.

Рис. 13.3. Форма отчета, автоматически сформированная системой

Перед вам появится отчет содержащий реестр документов Оказание услуги.

Двойным щелчком мыши на поле Документ можно открыть исходный документ, а также выполнить другие действия «расшифровки», которые предоставляет система компоновки данных.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Основные приемы работы с некоторыми объектами встроенного языка «1С:Предприятие»

Встроенный язык системы «1С:Предприятие»

Встроенный язык «1С:Предприятие» позволяет алгоритмически определить поведение объектов системы. Это позволяет пользователю решать многообразные задачи доведения программного обеспечения под конкретные нужды предприятия.

Цель работы: Изучить основные принципы работы с объектами встроенного языка «запрос», «таблица», «справочник».

Для работы с запросами нужно создать переменную функцией «СоздатьОбъект». Атрибуты или методы объекта пишутся через точку после имени переменных. Список доступных методов, а также операторы языка запросов можно найти в справочной системе «1С:Предприятие». См. рис. 1.

Рис.1 Окно справочной системы

После создания переменной типа «Запрос» следует обратиться к методу Выполнить . Далее организуется циклическая обработка сформированного набора данных, для этого используется метод Группировка. Например, в следующем примере (Процедура РеестрДокументов) создан запрос, в результате которого сформирован набор данных, содержащих следующие реквизиты документов «Приходный кассовый ордер»: дата документа, номер документа, сумма по документу, от кого поступили денежные средства за определенный период (переменные НачДата, КонДата).

Процедура РеестрДокументов()

Перем Запрос, ТекстЗапроса, Таб, ном;

//Создание объекта типа Запрос

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|Период с НачДата по КонДата;

|Номер = Документ.ПриходныйОрдер.НомерДок;

|Дат1 = Документ.ПриходныйОрдер.ДатаДок;

|Всего = Документ.ПриходныйОрдер.Сумма;

|ОтКого = Документ.ПриходныйОрдер.ПринятоОт;

|Функция Сум = Сумма(Всего);

|Группировка Номер;

|"//}}ЗАПРОС

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

// Подготовка к заполнению выходных форм данными запроса

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Таблица");

// Заполнение полей "Заголовок"

Таб.ВывестиСекцию("Заголовок");

Состояние("Заполнение выходной таблицы...");

Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);

// Вывод заполненной формы

Ном=0;

Пока Запрос.Группировка(1) = 1 Цикл

//Заполнение полей РасходнаяНакладная

Ном=Ном+1;

Таб.ВывестиСекцию("Документ");

КонецЦикла;

Таб.ВывестиСекцию("Итого");

Таб.ТолькоПросмотр(1);

Таб.Показать("Таблица", "");

КонецПроцедуры

Для визуального просмотра данных запроса формируется печатная форма с помощью объекта «Таблица». Наиболее типичным способом заполнения табличного документа является включение в него секций. Для этого используется исходный табличный документ, который может располагаться в той же форме. Кроме того, исходная таблица может располагаться и в общих таблицах конфигурации и во внешнем файле. Назначение исходного табличного документа выполняется методом объекта»Таблица» - ИсходнаяТаблица. Метод ВывестиСекцию позволяет включить выделенный фрагмент исходной таблицы в формируемый табличный документ.

Рис.2. Исходная таблица

Подробнее с табличным редактором можно познакомится в методическом пособие .

«Справочник» -это агрегатный тип данных, средство для работы со списками однородных элементов . Справочники могут быть многоуровневыми. Элементы справочника могут быть периодическми, т.е. сохранять значение на определенную дату. Для справочников можно указывать подчиненность другим справочникам, т.е. образовывать связи типа «один-ко многим».

Обращение к атрибутам, вызов методов справочника зависит от контекста выполнения программного модуля. Здесь могут быть следующие варианты:

1)имеем непосредственный доступ к текущему элементу справочника, если например, находимся в форме редактирования элемента справочника. Здесь можем непосредственно обращаться к атрибутам справочника.

F_name = «Петров» ; где F_name – реквизит справочника, заданный в конфигураторе.

2) значение элемента можно получить из других источников, например как реквизит какого-нибудь документа. Чтобы получить доступ к атрибуту, нужно вызвать метод такой переменной со значением типа «Справочник».

КолДетей=Док.Сотрудники.Дети;

3) вызов метода конкретного элемента происходит при помощи переменной со ссылкой на объект типа «Справочник». Объект создается функцией «СоздатьОбъект ».

Методы справочников также можно найти в справочной системе «1С:Предприятие».

Задание к лабораторной работе по вариантам

№ варианта Работа с объектом Задание
Запрос, таблица Вывести информацию об операциях с клиентом (выбор клиента в диалоговом режиме) по приходным и расходным накладным.
Справочник, таблица Вывести информацию о сотрудниках (ФИО, Адрес, кол-во детей)
Справочник, таблица Вывести информацию о сотрудниках (ФИО, Адрес,Страна, Номер свидетельства в ПФР)
Справочник, таблица Вывести информацию из справочника номенклатура (Товар, цена, страна происхождения)
Справочник, таблица Вывести информацию из справочника номенклатура (Товар, единица измерения, ставка НДС)
Запрос, таблица Вывести информацию по всем проведенным счетам-фактурам за период.
Запрос, таблица Вывести информацию по товару (указать приходные накладные на поступление и расходные накладные на расход)

Литература

1. Документация к программе «1С:Предприятие»

2. Стукалина Е.Ф. –Методическое пособие. «Основные понятия и термины программной среды «1С:Предприятие». Табличный редактор»

| следующая лекция ==>

В системе 1С:Предприятие?

1. Тексты конфигурации и базы данных хранятся в формате UNICODE

3. Нет правильного ответа

6.75 С какой целью тексты конфигурации и базы данных хранятся в формате UNICODE ?

1. Формат UNICODE обеспечивает неизменность (независимость от программной платформы операционной системы) представления информации

2. Формате UNICODE позволяет поддерживать различные языки в системе 1С:Предприятие

3. Нет правильного ответа

6.76 Механизмы интернационализации, заложены . ..

1. технологическую платформу 1С:Предприятия

2. прикладные решения

3. верны ответы 1 и 2

4. нет правильного ответа

6.77 Что такое код локализации?

1. Строка, состоящая из кода языка и кода страны и идентифицирующая некоторый регион мира

2. Код программного продукта (указывается на регистрационной анкете, документации из комплекта поставки)

3. Параметр форматирования строки для преобразования

4. Her правильного ответа

6.78 Верно ли что в 1С:Предприятие 8 любая текстовая информация может включать одновременно символы различных языков?

1. Да, так как все тексты конфигурации и базы данных хранятся в формате UNICODE

2. В зависимости от настроек, заданных при создании информационной базы

3. Только если это предусмотрено конфигурацией

6.79 Для чего предназначен объект конфигурации "Язык"?

1. Для создания интерфейса программы на разных языках

2. Для создания текстовых документов на разных языках

3. Такого объекта в 1С: Пред приятие 8 не существует

6.80 Каким образом можно сменить язык просмотра (редактирования) конфигурации?

1. С помощью кнопки выбора языка, расположенной в строке состояния справа от кнопки "NUM"

2. Через пункт меню "Конфигурация - Язык редактирования конфигурации"

3. В 1 С:Предприятие такой возможности не существует

4. Верпы ответы 1 и 2

6.81 Какое написание имеют операторы встроенного языка?

1. Только русское написание

3.

6.82 Возможно ли использование в одном исходном тексте операторов встроенного языка в русском и английском написании?

1. Только при специальных настройках конфигуратора

2. Да, для этого не требуется изменения каких-либо настроек конфигуратора

3. Нет, так как вариант встроенного языка задается в свойствах конфигурации

6.83 С какой целью используется встроенный язык?

1. Для определения интерфейса программы по умолчанию

2. Для описания (на стадии разработки конфигурации) алгоритмов функционирования прикладной задачи

3. Нет правильного ответа

6.84 Какое написание имеют функции встроенного языка?

1. Только русское написание

2. Только английское написание

3. Русское и английское написание

4. В зависимости от настроек конфигуратора

6.85 Что обозначает параметр Л (L ) в форматной строке функции форматирования ЧислоПрописью()?

1. Признак "дробную часть выводить числом/прописью"

2. Количество знаков после запятой

3. Код локализации

7. Табличная модель прикладного решения

7.1 При настройке ограничения доступа к данным допускается установка нескольких (по числу полей) ограничений:

1. Для права "Чтение"

2. Для права "Изменение"

3. Для права "Добавление"

4. Для права "Удаление"

5. Для всех вышеперечисленных прав

6. Для всех возможных прав

7.2 При настройке ограничения доступа к данным в качестве значений, по которым производится ограничения доступа к данным, могут использоваться:

1. Только значения параметров сеанса

2. Только данные из таблиц (запросов)

3. Значения параметров сеанса и данные из таблиц (запросов)

4. Только значения имеющие типы: Число, Строка, Булево, Дата

7.3 Каким из вышеперечисленных способов можно воспользоваться, чтобы в разделе "Поля" конструктора запросов появились код и наименование справочника?

1. Сначала заполнить раздел "Таблицы", а потом, выбирая нужные объекты из этого раздела, перенести их в раздел "Поля", используя двойной клик девой клавиши мыши

2. Не заполняя раздел "Таблицы", сразу выбирать нужные объекты из таблиц - источников данных раздела "База данных", перенося их в раздел "Поля", используя технологию Drag & Drop. Раздел "Таблицы" заполняется автоматически

3. Сначала заполнить раздел "Таблицы", а потом, выбирая нужные объекты из этого раздела, перенести их в раздел "Поля", используя кнопки па форме ">" "»"

4. Верны ответы I и 3

5. Верны ответы I, 2 и 3

7.4 Для повышения скорости выполнения запроса необходимо:

1. Задавать параметры большинства реальных таблиц

2. Задавать параметры большинства виртуальных таблиц

3. Вместо задания параметров у реальной или виртуальной таблицы использовать отбор, заданный конструкцией языка запросов "ГДЕ"

4. Верны ответы I и 2

7.5 Можно ли при выборе таблицы-источника в раздел "Таблицы" конструктора запросов задавать для нее новое имя (псевдоним)?

1. Да, можно

2. Да, можно, но только если в качестве источника данных выступает вложенный запрос

3. Да, можно, но только если в качестве источника данных выступает виртуальная таблица

4. Верны ответы 1 и 2

5. Верны ответы 1 и 3

7.6 Вложенный запрос может использоваться:

1. В качестве таблицы-источника данных

2. В качестве операнда операций сравнения "В" или "НЕ В" при задании параметров виртуальной таблицы

3. В качестве операнда операций сравнения "В" или "НЕ В" при задании конструкции языка запросов "ГДЕ"

4. Верпы ответы 1, 2 и 3

7.7 Можно ли, используя конструктор запроса, получить итоги по иерархии?

1. Можно, если для группировочного поля указать тип итогов "Элементы и иерархия"

2. Можно, если для группировочного поля указать тип итогов "Только иерархия"

3. Верпы ответы 1 и 2

7.8 На закладке "Условия" конструктора запросов отдельная строка списка условий может быть сформирована:

1. С помощью двойного клика левой клавишей мыши на нужном поле в списке доступных полей

2. Путем переноса нужного поля в список, используя технологию Drag & Drop

3. Нажать кнопку "Добавить". Если условие произвольное, то текст условия можно ввести "вручную"

4. Вызвав контекстное меню, выбрать в нем пункт "Добавить". Возможно использование произвольного выражения

5. Верны все вышеперечисленные ответы

7.9 На закладке "Связи" конструктора запросов можно определить:

1. Соединение таблиц-источников данных и связи между ними

2. Объединение таблиц-источников данных и связи между ними

3. Связи между полями таблицы, получаемой в результате выполнения запроса

4. Связи между полями таблицы-источника данных и таблицы, получаемой в результате выполнения запроса

7.10 При соединении таблиц-источников данных в конструкторе запросов можно:

1. Назначить соединение без указания условия связи

2. Назначить соединение с указанием условия связи, причем это условие может быть только одно

3. Назначить соединение с указанием условия связи, причем это условие может быть только простое

4. Назначить необходимое количество соединений с указанием необходимого количества условий связи, причем эти условия могут быть как простые, так и произвольные

7.11 Создание соединения таблиц-источников данных в конструкторе запросов допускает:

1. Соединение только двух таблиц-источников данных

2. Соединение необходимого количества таблиц-источников данных

3. Соединение только двух таблиц-источников данных, причем флажок "Все" обязательно должен быть проставлен хотя бы у одной из таблиц