Query.CreateFromTable

From SunFlurry wiki
Jump to: navigation, search
  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);

//Вывод строки итого
...