Разделяем ФИО на самостоятельные поля в компоненте sale.order.ajax

Разработка
Иногда возникают ситуации, когда необходимо в компоненте sale.order.ajax раздели с строку ФИО на отдельные поля Фамилия, Имя, Отчество. Но при этом не утратить штатный функционал формирования профилей покупателя. На помощь приходят обработчик OnSaleComponentOrderJsData , который позволяет разбить полученную информацию на отдельные подстроки.
$eventManager->addEventHandler('sale', 'OnSaleComponentOrderJsData', 'OnSaleComponentOrderJsDataCustom');
function OnSaleComponentOrderJsDataCustom(&$arResult, &$arParams){

    /**@global \CUser $USER */
    global $USER;
    if ($USER->IsAuthorized()
        && ($user_info = \Bitrix\Main\UserTable::getList([
            'filter' => [
                '=ID' => $USER->GetID(),
            ],
            'select' => [
                'EMAIL',
                'NAME',
                'LAST_NAME',
                'SECOND_NAME',
                'PERSONAL_PHONE',
            ],
        ])->fetch())
    ) {
        foreach($arResult['JS_DATA']['ORDER_PROP']['properties'] as &$prop) {
            if (!empty(reset($prop['VALUE']))) {
                continue;
            }
            switch($prop['CODE']) {
                //ФИО
                case 'FIO':
                    $name_parts = [];
                    foreach([
                                'LAST_NAME',
                                'NAME',
                                'SECOND_NAME',
                            ] as $name_key) {
                        if (empty($user_info[$name_key])) {
                            continue;
                        }
                        $name_parts[] = $user_info[$name_key];
                    }
                    $prop['VALUE'] = [
                        implode(' ', $name_parts)
                    ];
                    break;
                //Имя
                case 'CONTACT_NAME':
                    $prop['VALUE'] = $user_info['NAME'];
                    break;
                // Фамилия
                case 'CONTACT_LAST_NAME':
                    $prop['VALUE'] = $user_info['LAST_NAME'];
                    break;
                // Отчество
                case 'CONTACT_SECOND_NAME':
                    $prop['VALUE'] = $user_info['SECOND_NAME'];
                    break;
                // Телефон
                case 'PHONE':
                    $prop['VALUE'] = $user_info['PERSONAL_PHONE'];
                    break;
                // Email
                case 'EMAIL':
                    $prop['VALUE'] = $user_info['EMAIL'];
                    break;
            }
        }
        unset($prop);
    }
}

Похожие статьи

Сергей Эсауленко
Сергей Эсауленко

Руководитель

01.10.2025
Разработка
Как правильно дорабатывать продукты Аспро, чтобы они оставались обновляемыми
Сергей Эсауленко
Сергей Эсауленко

Руководитель

07.12.2023
Разработка
Автоматические перенаправление со штатной системы оплат Битрикса
Сергей Эсауленко
Сергей Эсауленко

Руководитель

02.11.2023
Разработка
Переопределить единицу измерения Битрикс в момент обмена с 1С
Сергей Эсауленко
Сергей Эсауленко

Руководитель

08.09.2023
Разработка
Обмен с 1С по http когда сайт работает по https
Сергей Эсауленко
Сергей Эсауленко

Руководитель

20.06.2023
Разработка
Преобразователь свойства CML2_TRAITS (из 1С) в 1С-Битрикс