Блог Горошко Андрея 1C-Битрикс Работа с группами пользователей в D7: GroupTable вместо CGroup

Работа с группами пользователей в D7: GroupTable вместо CGroup

Класс 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.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Разработка интернет-магазина детской ортопедической обуви и школьной формы на 1С-БитриксРазработка интернет-магазина детской ортопедической обуви и школьной формы на 1С-Битрикс

Создание современного интернет-магазина по направлению «детской ортопедической обуви и школьной формы» на платформе 1С-Битрикс позволяет автоматизировать продажи, обеспечить высокую конверсию и бесшовную интеграцию с учетными системами. В этой нише решающее

Sessions: Руководство разработчикаSessions: Руководство разработчика

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Sessions: Руководство разработчика». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции. — title:

Комплексный стресс-тест и аудит отказоустойчивости интернет-магазина перед распродажамиКомплексный стресс-тест и аудит отказоустойчивости интернет-магазина перед распродажами

Профессиональная поддержка, модернизация и оптимизация производительности сайта на 1С-Битрикс — это гарантия высокой конверсии, стабильности продаж и защиты от киберугроз. Услуга «Комплексный стресс-тест и аудит отказоустойчивости интернет-магазина перед распродажами» включает