Т.е. мы получаем дамп всех значений?
А чтобы вывести значение мы пишем:
$element = $resElement->getNext()
Получается, что для того, чтобы добавить пункт меню в карточке пользователя, придётся через JS встраиваться в DOM-дерево?
Т.е. просто открывать новый тикет, в нём указать номер коллективного тикета и написать, что нужен механизм встраивания в меню в профиле пользователя?
Тогда используйте php api, с которым вы будете разбираться не меньше чем с REST. Быстрее будет ручками установить их (можно закинуть в головное подразделение и поручить это HRу)
Если хотите попробовать через SQL, то стоит сделать бекап базы данных.
Для данной задачи нам потребуется:
- Иметь 2 списка: "Пользователь -> Подразделение" и "Подразделение - Руководитель подразделения"
- Узнать ID пользователей которых нужно смаппить
- Узнать ID подразделений
- Установить подразделение пользователю
- Установить руководителя к подразделению
Как узнать ID пользователя?
Все пользователи хранятся в таблице b_user.
Туда можно отправить SQL запрос и по ФИО/Логину/email найти нужны пользователей
Как найти все существующие подразделения?
Узнаем ID инфоблока подразделений.
Он хранится в таблице b_option. MODULE_ID = intranet, NAME = iblock_structure в VALUE будет идентификатор инфоблока (далее #IBLOCK_ID#)
Получаем список существующих подразделений.
Подразделение - раздел информационного блока "Орг.структура".
Все разедлы хранятся в таблице b_iblock_section где по IBLOCK_ID = #IBLOCK_ID# можно найти все существующие подразделения.
Нас интересуюет ключ ID из этой таблицы
Как установить подразделение пользователю?
За привязку подразделения к пользователю отвечает поле UF_DEPARTMENT.
Это пользовательское поле (т.е. не хранится в таблице пользователей) множественное (хранится в табилце множественных значений) типа число.
Сначала узнаем идентификатор пользовательского поля. Мета-информация обо всех пользовательских полях хранится в таблице b_user_field
ENTITY_ID - мнемонический код сущности для поля (в данном случае USER)
FIELD_NAME - код поля (в нашем случае UF_DEPARTMENT)
После выполнения запроса мы получи ID поля UF_DEPARTMENT для пользователей.
Значения множественных пользовательских полей для сотрудников хранятся в таблице b_utm_user
VALUE_ID - идентификатор пользователя
FIELD_ID - идентификатор пользовательского поля (см выше)
Нас интересует VALUE_INT, туда и нужно заносить значения. Ко скольким подразделениям принадлежит пользователь, столько записей и получиться.
Как установить руководителя к подразделению?
Руководитель подразделение это свойство подразделения, а не пользователя.
Сначала находим идентификатор инфоблока подразделения (см выше).
Поле UF_HEAD (руководитель) не является множественным, поэтому его установить проще.
Нас интересует таблица b_uts_iblock_666_section, где 666 - идентификатор инфоблока (помнишь мы нашли выше из b_option?)
Для каждого пользователя есть строка VALUE_ID - идентификатор ПОДРАЗДЕЛЕНИЯ, UF_HEAD - идентификатор руководителя (пользователя).
Но помни - там могут быть и другие поля, которые обязательны к заполнению из-за чего у пользователей могут возникнуть различные ошибки.