Класс CGroup из старого ядра все еще работает, но D7 предлагает более удобный и унифицированный интерфейс через ORM-сущность \Bitrix\Main\GroupTable.
1. Получение списка групп (getList)
Выборка групп ничем не отличается от выборки элементов или пользователей.
use Bitrix\Main\GroupTable;
$result = GroupTable::getList([
'select' => ['ID', 'NAME', 'DESCRIPTION', 'STRING_ID'],
'filter' => [
'=ACTIVE' => 'Y', // Только активные
'%NAME' => 'Администратор' // Поиск по названию
],
'order' => ['C_SORT' => 'ASC'] // Сортировка
]);
while ($group = $result->fetch()) {
echo "ID: {$group['ID']}, Название: {$group['NAME']} <br>";
}2. Создание новой группы (add)
$result = GroupTable::add([
'ACTIVE' => 'Y',
'C_SORT' => 100,
'NAME' => 'Новая группа менеджеров',
'DESCRIPTION' => 'Группа для доступа к CRM',
'STRING_ID' => 'CRM_MANAGERS' // Удобный символьный код для поиска
]);
if ($result->isSuccess()) {
echo "Группа создана, ID: " . $result->getId();
} else {
print_r($result->getErrorMessages());
}3. Проверка привязки пользователя к группе
GroupTable хранит только описания групп. Связь «Пользователь-Группа» хранится в другой таблице — b_user_group. В D7 для нее есть сущность \Bitrix\Main\UserGroupTable.
Задача: Узнать, состоит ли пользователь 55 в группе 12.
use Bitrix\Main\UserGroupTable;
$isMember = UserGroupTable::getList([
'filter' => [
'USER_ID' => 55,
'GROUP_ID' => 12,
// Важно учитывать даты активности привязки!
[
'LOGIC' => 'OR',
'DATE_ACTIVE_FROM' => null,
'>=DATE_ACTIVE_FROM' => new \Bitrix\Main\Type\DateTime()
],
[
'LOGIC' => 'OR',
'DATE_ACTIVE_TO' => null,
'<=DATE_ACTIVE_TO' => new \Bitrix\Main\Type\DateTime()
]
]
])->getSelectedRowsCount() > 0;Примечание: Для проверки текущего пользователя проще и быстрее использовать $USER->GetUserGroupArray(), так как данные уже загружены в сессию. UserGroupTable полезна для администрирования других пользователей.
Вывод:
Используйте GroupTable для управления справочником групп (создание, списки, редактирование). Для проверки прав и состава групп используйте UserGroupTable или методы объекта $USER.
GroupTable, CGroup, группы пользователей Битрикс, D7 User Groups, getList, получение групп, создание группы D7.