Получить и вывести данные из профиля покупателя в кабинете пользователя 1С-Битрикс

Просмотров: 1889

Задача: вывести пользователю информацию по всем, его, профилям покупателя в компоненте sale.personal.profile.list без перехода в детальное описание/редактирование профиля.

Получить и вывести данные из профиля покупателя в кабинете пользователя 1С-Битрикс

Получить значения полей из профиля покупателя

Для начала нужно получить значения заполненных полей из профиля покупателя. Это можно сделать методом OrderUserProperties::getProfileValues, зная ID профиля.

В компоненте sale.personal.profile.list этот ID хранится в ключе массива $arResult["PROFILES"]['ID']. Что бы получить значения используем код:

use Bitrix\Sale;
foreach ($arResult["PROFILES"] as $val) {
    $profileData = Sale\OrderUserProperties::getProfileValues(
            (int)$val['ID']
    );
    print_r($profileData);
}

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

Получить названия свойств заказ по их ID

Теперь нужно получить названия свойств заказа по их ID. Для этого используем метод CSaleOrderProps::GetList.

Прогоняем массив $profileData с помощью foreach и внутри этого цикла, зная ID свойства заказа (из ключа), получаем название свойства.

В выводе, внутри foreach выводим название и значение свойства. Полный код:

use Bitrix\Sale;
foreach ($arResult["PROFILES"] as $val) {
    $profileData = Sale\OrderUserProperties::getProfileValues(
        (int)$val['ID']
    );
    echo $val['NAME'] . '
'; foreach ($profileData as $k => $property) { $db_props = CSaleOrderProps::GetList( array("SORT" => "ASC"), array( "ID" => $k ), false, false, array() ); if ($props = $db_props->Fetch()) { echo $props["NAME"] . '
'; echo $property; } } }
По феншую, стоит проделать все это в result_modifier.php донаполнив массив $arResult["PROFILES"]. Что бы не усложнять заметку привел как есть.

Таким образом вывели название профиля и полную информацию о нем: название свойства и значение заполненное пользователем.

Михаил Базаров 13.05.2023
Тоже самое на D7
Код
use Bitrix\Sale\OrderUserProperties;
use Bitrix\Sale\PropertyValueCollection;

foreach ($arResult["PROFILES"] as $val) {
    $profileData = OrderUserProperties::getProfileValues((int)$val['ID']);
    echo $val['NAME'] . '<br>';
    foreach ($profileData as $k => $property) {
        $props = PropertyValueCollection::create(CSaleOrderProps::class)->getItemByValueId($k);
        if ($props) {
            echo $props->getName() . '<br>';
            echo $property;
        }
    }
}

Блог-note: заметки разработчика

Основные функции вывода в шаблонах Битрикс

Знаю, что все их знают. Но иногда не бывает лишним собрать все самое используемое в одну кучку. Ведь у каждого бывают мо...

Input Type File, множественный с дропзоной и показом превью

Задача: Сделать возможность загрузки файлов в множественный input type="file" c помощью drag&drop и показом превью загру...

Увидеть файл заказов который передаст Битрикс в 1С

Для диагностики обмена заказов, интернет-магазина на 1С Битрикс с 1С Управление Торговлей, нужно увидеть xml файл с зака...

Работа с HTTP-запросами в Bitrix: Обзор возможностей класса \Bitrix\Main\HttpRequest

Класс \Bitrix\Main\HttpRequest, является наследником класса Request, представляет собой мощный инструмент для работы с д...

AJAX корзина с отправкой количества из раздела каталога

Столкнулся с задачкой: нужно было на одном сайте реализовать интерактивный прайс лист. При этом, у пользователя должна б...

Вывести артикул в печатную форму бланка заказа

Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.

Ajax форма обратной связи, реализация в битрикс

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

Получить и вывести все цены товара в 1С-Битрикс

Задача: получить и вывести все цены товара по его ID в каталоге 1С-Битрикс (например, в детальной карточке catalog.e...

Сортировка элементов по индексу сортировки значений типа список

Внутри любого компонента есть заранее заложенные поля для сортировки элементов. Можно сортировать элементы в разных напр...