2.4.2. Группировка серверная

Группировка необходима для ограничения набора данных по вхождению элемента в определённую группу. К запросу в GetSQLText добавляется макрос &GroupMacros

Пример:
SELECT
    t.ID
    , t.idGroup, BTK_ClientGate.GetHeadLineGroup(t.idGroup) AS idGroup_HL
    , t.sCAPTION
    , t.sSystemName
    , t.idClass
  FROM GroupPanelTest t
  WHERE
    &GroupMacros

Идентификатор группы задаётся через параметр idGroup# (обычно значение этого параметра задаётся через панель группировки). Включение/отключение группировки управляется с помощью параметра IsGroupingEnabled#. Параметр IsGroupingEnabled# поддерживается клиаентом с версии 4.25.130 (До версии использовался IsGrouping#, сейчас этот параметр считается устаревшим, использовать его нельзя, группировка включена в нем, если значение равно 0).

Значения IsGroupingEnabled#:

1

группировка включена. Макрос &GroupMacros будет заменён на стандартный текст:

EXISTS (SELECT a.id
 FROM BTK_FlatObjectGroup a
 WHERE a.idObject = t.id
 AND a.idGroup = :idGroup# )
0

группировка выключена. Макрос будет заменен на:

((1=1) OR (:idGroup# IS NULL))

Такое странное условие, что бы не терялись хуки на параметр IdGroup#. Если группировка будет включена, и значение группы измениться, выборка должна будет обновиться.

Для курсорных выборок, в которых использование макросов не возможно, необходимо вместо макроса &GroupMacros необходимо использовать параметр :GroupMacros. Правила его замены на соответствующие выражения аналогичны правилам замены макроса &GroupMacros.