GUID для пользователя Битрикс

Штатно GUID для пользователя не предусмотрен. Поэтому он будет искусственно добавлен в модель данных.

ALTER TABLE `b_user` ADD `EXTERNAL_GUID` CHAR(36) ASCII BINARY;

Способы хранения GUID

Так как это поле должно наполняться автоматически, наилучший способ - создать триггер для его заполнения.

DELIMITER $$
 
  CREATE TRIGGER `b_user_before_insert` BEFORE INSERT ON `b_user`
  FOR EACH ROW BEGIN
    SET NEW.EXTERNAL_GUID = UUID();
  END;
  $$
 
DELIMITER ;

Теперь обновим существующие записи:

UPDATE `b_user` SET `EXTERNAL_GUID` = UUID() WHERE EXTERNAL_GUID IS NULL;

При выборке пользователей через CUser::GetList() этот GUID становится доступен без дополнительных манипуляций:

function getUsers() {
  $by = 'timestamp_x';
  $order = 'desc';
  $arFilter = array('ACTIVE' => 'Y', '!ID' => 1); // все пользователи кроме первого (админа)
  $arParams = array();
  $itemsList = CUser::GetList($by, $order, $arFilter, $arParams);
  return $itemsList;
}

Одна запись:

array(63) {
  ["ID"]=>
  string(1) "5"
  ["LOGIN"]=>
  string(7) "partner"
  ...
  ["EXTERNAL_GUID"]=>
  string(36) "9d65aadc-6d8c-11e5-8683-00155d003d06"
  ["IS_ONLINE"]=>
  string(1) "N"
Печать/экспорт