Query.LinearLevelPos

From SunFlurry wiki
Revision as of 08:52, 7 February 2021 by Admin (talk | contribs) (1 revision imported)
Jump to: navigation, search
  LinearLevelPos (Текущий уровень группировки)
Объект:Запрос базы данных
Статус разработки: Реализована
Тип:Атрибут
Обращение к БД:Нет
Доступность:Чтение и запись
Исключения:Не линейный запрос
Визуальность:Нет

Атрибут получает или устанавливает текущий уровень группировки при прохождении строк таблицы запроса в режиме линейного запроса. Нижний уровень группировки соответствует значению 1, верхний -- общему количеству группировок в запросе. Запрос должен быть выполненным. Так как линейный запрос не содержит столбца @LEVEL и отдельных строк для каждой группировок запроса, что экономит память, номер текущей группировки при обходе такого запроса хранится в виде переменной внутри объекта запроса. Этот атрибут позволяет получить доступ к этой переменной. Атрибут удобно использовать для указания на уровень линейного запроса после выполнения позиционирования в таблице запроса.

Синтаксис

Query.LinearLevelPos:<Текущий уровень группировки линейного запроса (INT)>

Возвращаемое значение

Возвращает числовое значение, текущий уровень обхода линейного запроса.

Примеры

//З -- основной запрос, данный для примера, производится по какому-либо накопителю
//З2 -- второй запрос по накопителю Взаиморасчеты в линейном режиме, синхронизация между запросами производится по полям зКонтрагент и зДоговор.

While З.Next(1) Do
  While З.Next(2) Do
    ...

    //Получим значения сальдо по накопителю Взаиморасчеты для всех адресов из запроса З2 для текущих группировок запроса З.зКонтрагент и З.зДоговор
    З2.First();
    If З2.ResultTable.LocateAndGoto("зКонтрагент,зДоговор",З.зКонтрагент,З.зДоговор)=0 Then
      Continue;
    EndIf;
    Message("Контрагент: "+З.зКонтрагент+", договор: "+З.зДоговор);
    //Установим текущий уровень группировки, чтобы продолжить обход
    З2.LinearLevelPos:=3;    
    While З2.Next(3) Do
      //Выведем на экран значения сальдо для каждого из адресов
      Message("  Адрес: "+З2.зАдрес+", сальдо: "+З2.EndTotals("зСальдо"));
    EndDo;
  EndDo;
EndDo;