Телеграм: @camouf_ru Почта: mihail@bazarow.ru

Объединить отдельные поля ФИО в одно свойство при оформлении заказа.

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

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

Создаем новое свойство заказа, которое называем "ФИО целиком" с кодом FULL_NAME. Делаем его обязательным и служебным, что бы не показывалось при оформлении заказа. Обязательно задаем значение по умолчанию, что бы свойство в любом случае создавалось, при оформлении заказа.

Объединить отдельные поля ФИО в одно свойство при оформлении заказа.

Дополнительно ставим галку на против "Значение свойства будет использовано как название профиля пользователя". И делаем свойству максимальную сортировку, что бы оно оказалось в самом низу списка.

Получаем свойства заказа и заполняем свойство

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

В файле confirm.php (этот файл отвечает за последний шаг заказа, шаблона sale.order.ajax, когда заказ уже сформирован) добавляем такой код:

if (!empty($arResult["ORDER"])):

    $order = \Bitrix\Sale\Order::load($arResult["ORDER"]['ID']);
    $collection = $order->getPropertyCollection();
    $dbRes = \Bitrix\Sale\PropertyValueCollection::getList([
        'select' => ['ID', 'NAME', 'CODE', 'VALUE'],
        // Можно добавить order что бы явно отсортировать свойства 
        // и FULL_NAME оказалось самым последним
        'filter' => [
            '=ORDER_ID' => $arResult["ORDER"]['ID']
        ]
    ]);
    while ($item = $dbRes->fetch())
    {
        if ($item['CODE'] == 'FAMILIA') {
            $fullname .= $item['VALUE'] . ' ';
        }

        if ($item['CODE'] == 'NAME') {
            $fullname .= $item['VALUE'] . ' ';
        }

        if ($item['CODE'] == 'OTCHESTVO') {
            $fullname .= $item['VALUE'] . ' ';
        }

        if ($item['CODE'] == 'FULL_NAME') {
            $propertyValue = $collection->getItemById($item['ID']);
            $r = $propertyValue->setField('VALUE', $fullname);
        }
    }
    $order->save();

... тут остальной код этого файла ...
  • $order = \Bitrix\Sale\Order::load($arResult["ORDER"]['ID']); загрузили данные о свежесозданом заказе.
  • $dbRes = \Bitrix\Sale\PropertyValueCollection::getList получили все свойства этого заказа.
  • $fullname наполнили переменную с отдельными данными и имени, отчестве, фамилии.
  • $propertyValue->setField('VALUE', $fullname); свойство с кодом FULL_NAME заполниили переменной $fullname
  • $order->save(); сохранили заказ

В общем-то и все. Это свойство обновится на последнем шаге оформления заказа и в дальнейшем используется как название профиля.

Да, можно было не создавать и перезаписывать свойство а добавлять его методом $propertyValue = $collection->createItem. Но этот способ более ресурсоемкий и вызывает небольшой лаг на последнем шаге оформления заказа.

Михаил Базаров 12.06.2022
Можно не перебирать весь массив свойств, а получить только ФИО (отдельные)
Если каждое из них хранится как "Использовать как имя плательщтка"
Можно получить геттером
Код
$propertyValue = $collection->getPayerName();

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Вывести новости из конкретного раздела инфоблока Битрикс Просмотров: 53465 Бывает что требуется вывести конкретные новости или статьи из одного раздела инфоблока в Б... Сгенерировать скидочные купоны, при заказе и отправить на почту Просмотров: 773 Задача: после того как пользователь сделал заказ, нужно сгенерировать одноразовые купоны д... Получение доступа к железу устройства из Битрикс мобильное приложение Просмотров: 5604 Документация к мобильному приложению 1С-Битрикс очень куцая. В основном описывает функцион... Звездочки в рейтинге Битрикс статей и новостей Просмотров: 18072 Стандартный вид рейтинга в новостях Битрикс, ну скажем так- не очень красив. Давайте его п... Малая корзина Битрикс, упрощенный шаблон Просмотров: 12545 Шаблон малой корзины битрикс, который можно вывести в боковом разделе шаблона или в шапке ... Регистрация пользователя в определенную группу сайта на Битрикс Просмотров: 22097 Достаточно часто требуется регистрировать пользователя в определенную группу, в зависимост... Открытие мобильного приложения Apache Cordova по ссылке Просмотров: 685 Достаточно часто нужно реализовывать открытие мобильного приложения по ссылке. Например: п... Создание мобильного приложения на cordova, для любого сайта. Просмотров: 14192 Если стоит задача разработки мобильного приложения для сайта, можете воспользоваться данно... Cordova, ввод в input под диктовку. Голосовой поиск в мобильном прило... Просмотров: 1264 Итак, задачка: реализовать голосовой поиск в мобильном приложении на Cordova. По сути, нам... Сниппеты типографики bootstrap, для Битрикс Просмотров: 7600 Если вы подключили bootstrap к своему сайту, или сверстали весь шаблон, подключив bootstra... Сортировка элементов по индексу сортировки значений типа список Просмотров: 10545 Внутри любого компонента есть заранее заложенные поля для сортировки элементов. МОжно сорт... Вывести свойство привязка к Яндекс Картам в Битрикс Просмотров: 18186 Часто бывает нужно вывести свойство привязка к Яндекс карте в детальном описании элемента... Показать пользователю накопительную скидку за все сделанные заказы, и... Просмотров: 1758 Задача: показать, текущему авторизованному, пользователю сумму всех выполненных заказов и ... Увеличение диска на готовой виртуальной машине Битрикс Просмотров: 8768 Как всем известно, на официальном сайте 1С-битрикс можно скачать готовую виртуальную машин... Умный фильтр во всплывающей панели на мобильных. Просмотров: 1449 Шаблон умного фильтра в Битриксе достаточно сложный, с точки зрения верстки и не очень кра... Как подобрать редакцию Битрикс под задачи Просмотров: 6350 Последнее время, все чаще, при общении с заказчиками, сталкиваюсь с вопросом "— К... Установка вебсервера на Apple M1 (нативный ARM стек), оптимизированны... Просмотров: 6143 Появилась задачка, установить стек MAMP (macOS, Apache, MYSQL, PHP) на рабочий ноутбук с п... Моментальная фильтрация на AJAX в умном фильтре 1С-Битрикс Просмотров: 24667 При штатной установке, интернет-магазина на 1С Битрикс, умный фильтр по товарам, показывае... Простой WEB сервер на ubuntu, для Битрикс Просмотров: 34480 Расскажу как по быстрому сконфигурировать WEB сервер для работы с Битрикс. Безо всяких ngi... Постраничная навигация в списке разделов Битрикс- catalog.section.lis... Просмотров: 8719 Если в магазине очень много разделов и хочется вывести их с постраничной навигацией: можно...