Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как сделать чтобы поле контактное лицо, содержало по умолчанию ФИО а не ФИ

00 голосов
5
Ситуация такая при оформление заказа в разделе профиль в поле Контактное лицо по умолчанию вставляется Имя Фамиия (из данных заполненых в профиле или при регистрации).
Мне надо добавить в поле Контактное лицо еще и Отчество, и желательно сделать отображение в порядке: Фамилия Имя Отчество.
Искал в настройках компонента Процедура оформления заказа, так же смотрел документацию по этому компоненту, и искал на форуме, к сожалению ничего не нашел :( . Помогите пож-та кто знает как это реализовать или дайте ссылку где можно прочитать. Буду благодарен за любую полезную информацию.
спросил 27 Ноя, 13 от K1ra (100 баллов)

5 Ответы

00 голосов
Тоже интересует данный вопрос?!
ответил 21 Янв, 14 от NextGen (620 баллов)
00 голосов
Тоже актуально. Подскажите.
ответил 09 Май, 14 от CatRexx (100 баллов)
00 голосов
я делала таким образом
Создала 4 поля
1.Фамилия
2.Имя
3.Отчество
4.ФИО

в init.php написала следующий обработчик, чтобы значения после регистрации попадали в заказ только для имени и фамилии

Код
<?
AddEventHandler("main", "OnAfterUserRegister", "OnBeforeUserRegisterHandler"); 

    function OnBeforeUserRegisterHandler(&$arFields)
    {
      $arProfileFields = array(
         "NAME" => "Профиль покупателя (".$arFields['LOGIN'].')',
         "USER_ID" => $arFields['USER_ID'],
         "PERSON_TYPE_ID" => 1
      );
      $PROFILE_ID = CSaleOrderUserProps::Add($arProfileFields);
      
    
      if ($PROFILE_ID)
      {
       
         $PROPS=Array(
         array(
               "USER_PROPS_ID" => $PROFILE_ID,
               "ORDER_PROPS_ID" => 22,
               "NAME" => "Фамилия",
               "VALUE" => $arFields['LAST_NAME']
            ),
       
       
         array(
               "USER_PROPS_ID" => $PROFILE_ID,
               "ORDER_PROPS_ID" => 23,
               "NAME" => "Имя",
               "VALUE" => $arFields['LAST_NAME']
            )
         );
        
         foreach ($PROPS as $prop)
            CSaleOrderUserPropsValue::Add($prop);
      }
    }
?>


Затем чтобы в форму сбербанка значения попадали в одну строку написала небольшой скрипт

Код
$(document).ready(function(){
$('table.sale_order_full_table_no_border tbody tr:eq(1)').css('display', 'none');

   
   $("table").everyTime(10, function(){   
   $('table.sale_order_full_table_no_border tbody tr:eq(1)').css('display', 'none');

   var ima;
   var otch;
   var fam;

   fam = $('#ORDER_PROP_22').attr('value');      
   ima = $('#ORDER_PROP_23').attr('value');
   otch = $('#ORDER_PROP_24').attr('value');
   
   $('#ORDER_PROP_21').attr('value', fam + ' ' + ima + ' ' + otch);   
   
   },0);
   
   
   });


и необходимо подключить библиотеку jquery и jquery.timers
ответил 05 Сен, 14 от NextGen (620 баллов)
00 голосов
можно сделать проще
в result_modifier.php в шаблоне компонента sale.order.ajax добавляем что-то типа:
Код
global $USER;
if ($USER->IsAuthorized())
{
$db_user = CUser::GetByID($USER->GetID());
if ($ar_user = $db_user->Fetch())
{
        while (list($key, $val) = each($ar_user))
        ${"str_".$key} = htmlspecialchars($val);
}

$s = $USER->GetLastName()." ".$USER->GetFirstName()." ".$str_SECOND_NAME;

$arResult['ORDER_PROP']['USER_PROPS_Y']['1']['VALUE'] = $s; 
$arResult['ORDER_PROP']['USER_PROPS_Y']['1']['VALUE_FORMATED'] = $s; 

}


Кстати, по данному вопросу (по моей просьбе) создана заявка в отдел разработок, так что ждем и надеемся :)
ответил 11 Янв, 15 от rolke (100 баллов)
00 голосов
Доброго времени суток.
Если вопрос актуален, то я делал это так:
1. Разрешить в настройках использование компонентов 2.0 для авторизации и регистрации 
2. Скопировать стандартный шаблон компонента bitrix.system.auth.registration в папку шаблона сайта 
3. В этом шаблоне разместить примерно следующий код: 




Код
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); 

ShowMessage($arParams["~AUTH_RESULT"]); 


$APPLICATION->IncludeComponent( 
   "bitrix:main.register", 
   "", 
   Array( 
   "USER_PROPERTY_NAME" => "", 
   "SEF_MODE" => "N", 
   "SHOW_FIELDS" => Array("NAME", "SECOND_NAME", "LAST_NAME", "PERSONAL_MOBILE", "PERSONAL_NOTES"), 
   "REQUIRED_FIELDS" => Array("PERSONAL_MOBILE", "PERSONAL_NOTES"), 
   "AUTH" => "Y", 
   "USE_BACKURL" => "Y", 
   "SUCCESS_PAGE" => $APPLICATION->GetCurPageParam('',array('backurl')), 
   "SET_TITLE" => "N", 
   "USER_PROPERTY" => Array() 
   ) 
); 

?><p><a href="<?=$arResult["AUTH_AUTH_URL"]?>"><b><?=GetMessage("AUTH_AUTH")?></b></a></p><?

?>



4. Настроить параметры: "SHOW_FIELDS" и "REQUIRED_FIELDS".
примерно так.


Сам пример - это обязательное внесение Отчества в регистрационные данные. Тогда отпадает вариант кастомизации компонента интернет-магазин.
ответил 28 Апр, 15 от D1sabled (100 баллов)

Похожие вопросы