Query.CreateFromTable
| CreateFromTable (Создание запроса из таблицы значений) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция создает объект запроса из существующей линейной таблицы значений. Таким образом полностью будет пропущен первый этап выполнения запроса. Запрос создается с заданными группировками и столбцами агрегации.
Синтаксис
Query.CreateFromTable(<Таблица для создания результата запроса (TAB)>,<Столбцы группировки с настройками (STRING)>,<Столбцы агрегации с операциями (STRING)>,<Режим запроса (INT)>=1):<Новый объект запроса (QUERY)>
Аргументы
<Таблица для создания результата запроса (TAB)>- Аргумент, имеющий тип таблица значений, служащий для создания запроса. Внимание: таблица будет использована, как основа запроса, она не будет скопирована. Дальнейшие изменения в таблице будут равнозначны изменениям таблицы результата обычного запроса.<Столбцы группировки с настройками (STRING)>- Список столбцов группировки запроса через запятую с дополнительными суффиксами. Формат записи информации о столбце следующий:<Наименование столбца>[[ Horizontal][ With Folders Ref.<Наименование справочника>]]. Суффикс Horizontal создает горизонтальную группировку (по умолчанию все группировки вертикальные), Суффикс With Folders создает дополнительную группировку по папкам справочника. Необходимо также указать справочник, по папкам которого происходит группировка.<Столбцы агрегации с операциями (STRING)>- Список столбцов для выполнения агрегации с дополнительными суффиксами операций. (планируется к реализации) В текущей реализации суффиксы не принимаются и будет выполняться только агрегация суммированием.<Режим запроса (INT)>- (необязательный аргумент) Задает режим выполнения запроса, возможны следующие значения:- 1 (по умолчанию) -- Выполнить постобработку в режиме обычного запроса.
- 2 -- Выполнить постобработку в линейном режиме
Возвращаемое значение
Возвращает новый объект запроса, созданный на основе таблицы.
Примеры
//Пример выполняет простой запрос к логам базы данных за период с НачДата по КонДата и превращает результат в объект запроса
Var З Export;
//Функция обхода группировок на основе рекурсии
Function ОбходГруппировок(Уровень)
If Уровень>З.GroupCount Then
Exit;
EndIf;
While З.Next(Уровень) Do
//Получить значение текущей группировки
зЭл:=З.Get(З.Groups(Уровень));
//Вывод информации в печатную форму отчета
...
//Перейти к следующей группировке
ОбходГруппировок(Уровень+1);
EndDo;
EndFunction
//Стр1 -- список переменных фильтра
//Стр2 -- их значения (список переменных со значениями фильтров)
//СтрГруппы -- список группировок запроса, выбранных оператором
Стр1:=...
Стр2:=...
СтрГруппы:=...
aTab:=Eval("Logs.Query(НачДата,КонДата,,"""+Стр1+""","+Стр2+")");
З:=Query.CreateFromTable(aTab,СтрГруппы,"");
//Вывести заголовок в печатную форму отчета
...
//Вывод строк группировок
ОбходГруппировок(1);
//Вывод строки итого
...