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.