Смена группы пользователя по информации из 1С для переключения типа цены

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Смена группы пользователя по информации из 1С для переключения типа цены

На сайте созданы две группы пользователей с доступом к разным типам цен: «Розничный покупатель» и «Оптовый покупатель». Принадлежность к оптовым покупателям может постоянно меняться; необходимо изменять группу пользователя  по информации из 1С:УТ.
Пример скрипта если вместо Y/N в HL блоке прямо указана группа в которой должен оказаться пользователь:
Код
Bitrix\Main\Loader::includeModule('highloadblock');

// HL блок с правом на спец цену
$entityDataClass = Bitrix\Highloadblock\HighloadBlockTable::compileEntity(
    Bitrix\Highloadblock\HighloadBlockTable::getById(8)->fetch()
)->getDataClass();

// Проходим по пользователям и получаем не админов
$arrStaff = Bitrix\Main\UserGroupTable::getList([
    'filter' => [
        'GROUP_ID' => [1, 7]
    ],
    'select' => [
        'USER_ID' // Нужен только ID пользователя
    ],
])->fetchAll();

// В $arrStaff ID админов и контент-менеджеров
$arrStaff = array_column($arrStaff, 'USER_ID');

// Получаем всех обычных пользователей
$UsersArray = Bitrix\Main\UserTable::getList([
    'filter' => [
        '!ID' => $arrStaff // Не админы и контентщики
    ],
    'select' => [
        'ID',
        'XML_ID' // Нужны только эти поля пользователей
    ]
])->fetchAll();

// Получаем все записи из HL блока для пользователей
$xmlIds = array_column($UsersArray, 'XML_ID');
$hlData = $entityDataClass::getList([
    'filter' => [
        'UF_KONTRAGENT' => $xmlIds
    ],
    'select' => [
        'UF_KONTRAGENT',
        'UF_GROUP_ID' // Предполагаем, что здесь хранится ID группы
    ]
])->fetchAll();

// Преобразуем данные HL блока в ассоциативный массив для быстрого доступа
$hlDataMap = [];
foreach ($hlData as $data) {
    $hlDataMap[$data['UF_KONTRAGENT']] = $data['UF_GROUP_ID'];
}

$user = new CUser; // объект для работы с пользователями

// Проходим по пользователям
foreach ($UsersArray as $userData) {
    // Массив для временного хранения и обнуления
    $arGroups = array();

    // Проверяем наличие записи в HL блоке
    if (isset($hlDataMap[$userData['XML_ID']])) {
        // Получаем ID группы из HL блока
        $groupId = $hlDataMap[$userData['XML_ID']];
        $arGroups['GROUP_ID'] = [$groupId]; // Устанавливаем группу пользователя
    } else {
        // Если записи нет, переводим в 5-ую группу по умолчанию
        $arGroups['GROUP_ID'] = [5]; // 5 - обычные пользователи
    }

    $user->Update(
        $userData['ID'],
        $arGroups
    );
}
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

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

Запуск сайта на готовом решении

от 150 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 400 000 руб. от 5-ти недель

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 300 000 руб. от 2-х недель

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

Инфоресурс

от 300 000 руб. от 4-х недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

3D‑моделирование, визуализация

от 25 000 руб. от 3-х дней

По вашим фото, чертежам или описанию создадим 3D‑модели и отрендерим набор изображений для каталога товаров: общий вид, крупные планы и технические ракурсы или 360°‑обзор товара.