Битрикс — как получить все значения пользовательского поля «привязка к элементу»

Пользовательские поля — прекрасный инструмент для расширения стандартных возможностей битрикса. Он хорошо применим не только в инфоблоках и их разделах, но и в доп. полях пользователя.

Как вывести весь список привязок к свойству для авторизованного пользователя в Битриксе

В данном примере будем выбирать только выделенные для авторизованного пользователя значения. Для всего остального используйте api инфоблоков.

Поможет в выводе этих свойств CUser::GetList, но для начала создадим 2 пользовательских свойства с типом «привязка к элементам инфоблока» (ваши инфоблоки уже должны быть созданы). В строке «Код поля» вводим соответственно UF_ORGANIZATION и UF_CONTR, с привязкой к разным информационным блокам. Если привязка будет множественная, то есть, через зажатый Ctrl вы сможете выбрать сразу несколько значений а не одно, то выбирайте соответствующую галочку при создании сразу — потом будет поздно, и придется все делать по новой.

Готово, наши свойства созданы, и в информационных блоках есть по 2-3 тестовых значения. Теперь заходите в админку, настройки вашего пользователя, доп. поля. Выбирайте значения и сохраняйте, дальше займемся их выводом.

На тестовой странице пишем:

Основной массив, на который стоит обратить свое внимание это $select. Именно в него мы должны передать «символьные коды» наших «доп полей». Если мы распечатаем массив $organization, то увидим следующую картину:

Массив с идентификатором элемента инфоблока. Стоит отметить, что данный массив можно передать в дальнейшем для фильтра CIBlockElement::GetList. Если вы выбрали «множественное» при создании доп свойства битрикса, то в массиве добавятся и другие записи:

Где 43 и 44 это ID элементов, привязанных и выбранных у текущего авторизованного пользователя. Не забывайте в своих скриптах рассматривать вариант для не авторизованных.

Как в битриксе узнать значения свойств, зная их ID

Как уже неоднократно было сказано ранее, это всего-лишь ID элементов, а значит, нам нужно API для элементов инфоблока. Использовать будем CIBlockElement::GetByID.

Полный код выглядит так, а наш итоговый массив теперь выглядит как «ключ» => «значение» или же «id элемента» => «название элемента». В самом конце кода выводим их как option для select`а.

Если селект является частью веб-формы, то по его «имени» можно провести дальнейшую фильтрацию. При выборе нам видно лишь имя, но при submit отправится ID, который лежит в option value=»».

Если на вашем сайте необходимо настроить логику связанную с дополнительными полями пользователя или настроить фильтрацию по этим свойствам - обращайтесь ко мне за помощью

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *