Расширение языка запросов для системы компоновки данных

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

Синтаксические элементы расширения языка запросов системы компоновки данных

ВЫБРАТЬ

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

Например:

{ВЫБРАТЬ Номенклатура, Склад}

После псевдонима поля может находиться комбинация символов ".*", что обозначает возможность использования дочерних полей от данного поля.

Например, запись Номенклатура.* обозначает возможность использования дочерних полей поля "Номенклатура" (например, поля "Номенклатура.Код").
Элемент ВЫБРАТЬ может присутствовать только в первом запросе объединения.

ГДЕ

Описываются поля, на которые пользователь сможет накладывать отбор. В данном предложении используются поля таблиц. Использование псевдонимов полей списка выборки недопустимо. Каждая часть объединения может содержать собственный элемент ГДЕ.

Примеры:

{ГДЕ Номенклатура.*, Склад }

{ГДЕ Документ.Дата >= &ДатаНачала, Документ.Дата <= &ДатаКонца}

Если значения параметров не задано, то предложение ГДЕ в результирующий запрос не включается.

Механизм свойств (характеристик) и категорий

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

Также эту информацию можно указать с помощью дополнительных характеристик объекта метаданных.

Если информация о характеристиках указана и в запросе (с помощью конструкции ХАРАКТЕРИСТИКИ) и с помощью диалога метаданных, то приоритетом обладает конструкция ХАРАКТЕРИСТИКИ.

Синтаксис:

ХАРАКТЕРИСТИКИ
         ТИП(<Имя типа>)
         ВИДЫХАРАКТЕРИСТИК <Имя таблицы> | (<Объединение запросов>)
         ПОЛЕКЛЮЧА <Поле>
         ПОЛЕИМЕНИ <Поле>
         [ПОЛЕТИПАЗНАЧЕНИЯ <Поле>]
         ЗНАЧЕНИЯХАРАКТЕРИСТИК <Имя таблицы> | (<Объединение запросов>)
         ПОЛЕОБЪЕКТА <Поле>
         ПОЛЕВИДА <Поле>
         [ПОЛЕЗНАЧЕНИЯ <Поле>]

После ТИП указывается <Имя типа> - имя типа, для которого определяются характеристики.

После ВИДЫХАРАКТЕРИСТИК указывается <Имя таблицы> | (<Объединение запросов>) - имя таблицы или текст запроса для получения видов характеристик.

После ПОЛЕКЛЮЧА указывается <Поле> - имя поля из таблицы или запроса ВИДЫХАРАКТЕРИСТИК, которое содержит ключ вида характеристики.

После ПОЛЕИМЕНИ  указывается <Поле> - имя поля из таблицы или запроса ВИДЫХАРАКТЕРИСТИК, которое содержит имя характеристики.

После ПОЛЕТИПАЗНАЧЕНИЯ  указывается <Поле> - имя поля из таблицы или запроса ВИДЫХАРАКТЕРИСТИК, которое содержит тип значения характеристики.

После ЗНАЧЕНИЯХАРАКТЕРИСТИК указывается <Имя таблицы> | (<Объединение запросов>) - имя таблицы или запрос, откуда получать значения характеристик.

После ПОЛЕОБЪЕКТА указывается <Поле> - имя поля из таблицы или запроса ЗНАЧЕНИЯХАРАКТЕРИСТИК, которое содержит объект, для которого указана характеристика.

После ПОЛЕВИДА указывается <Поле> - имя поля из таблицы или запроса ЗНАЧЕНИЯХАРАКТЕРИСТИК, которое содержит вид характеристики.

После ПОЛЕЗНАЧЕНИЯ указывается <Поле> - имя поля из таблицы или запроса ЗНАЧЕНИЯХАРАКТЕРИСТИК, которое содержит значение характеристики.

Пример описания характеристик:

{ХАРАКТЕРИСТИКИ ТИП(Справочник.Номенклатура)
СПИСОК (ВЫБРАТЬ
    ВидыДопСвойств.Ссылка,
    ВидыДопСвойств.Наименование,
    ВидыДопСвойств.ТипЗначения
ИЗ
    ПланВидовХарактеристик.ВидыДопСвойств КАК ВидыДопСвойств)
ИДЕНТИФИКАТОР Ссылка
ИМЯ Наименование
ТИПЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯ РегистрСведений.ДопСвойства
ОБЪЕКТ Номенклатура
ХАРАКТЕРИСТИКА ВидСвойства
ЗНАЧЕНИЕ Свойство
}

В данном примере описываются характеристики для полей типа ссылка на справочник "Номенклатура".

Параметры

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

Например:

ВЫБРАТЬ
УчетНоменклатурыОбороты.Номенклатура КАК Номенклатура,
УчетНоменклатурыОбороты.Склад КАК Склад,
УчетНоменклатурыОбороты.КоличествоПриход КАК КоличествоПриход,
УчетНоменклатурыОбороты.КоличествоРасход КАК КоличествоРасход
ИЗ
РегистрНакопления.УчетНоменклатуры.Обороты({&ДатаНачала}, {&ДатаКонца}, ,{Номенклатура.*, Склад.*}) КАК УчетНоменклатурыОбороты

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

Автоматическое заполнение доступных полей

При автоматическом заполнении доступных полей запроса выполняются следующие действия:

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

1C:Enterprise Developer's Community