Задача: Пользователь, при оформлении заказа, заполняет три отдельных поля с фамилией, именем и отчеством. Нам нужно сохранить эти три поля в одно "ФИО целиком" не показывая его пользователю.
1) Создаем служебное (не видимое пользователю) свойство заказа, называем как нам нужно. Пусть будет "ФИО целиком". Обязательное и обязательно со значением по умолчанию.
2) Значение по умолчанию, вообще любое. Главное, что бы свойсво создалось во время оформления заказа- так сэкономим на будущих итерациях.
3) В шаблоне оформления заказа, в файл confirm.php добавляем:
Пояснения: - C CSaleOrderPropsValue::GetOrderProps получили поля заказа с ФИО и создали переменную с ФИО целиком. - C \Bitrix\Sale\PropertyValueCollection::getList получили ID свойства заказа с "ФИО целиком" - С $propertyValue->setField установили значение свойства из переменной с полным ФИО - Сохранили заказ
Улучшения (для заметки). 1) SaleOrderPropsValue::GetOrderProps не нужен, мы итак загрузили заказ в \Bitrix\Sale\Order::load и получили коллекцию свойств. 2) В \Bitrix\Sale\PropertyValueCollection::getList получаем только нужные поля с ФИО и свойство для заполнения. Таким образом не тягаем весь массив с заказом в ОЗУ. 3) Всю работу с массивом и сохранением свойства + заказа делаем внутри цикла.
Коды отдельных полей правильно указаны? В примере это: NAME, S_NAME и L_NAME У вас могут быть другие. И ID поля в которое они должны записать, в примере 'ORDER_PROPS_ID' => 12
PS: Чуть позже будет заметка в блоге. Более развернутая
написал: Коды отдельных полей правильно указаны? В примере это: NAME, S_NAME и L_NAME У вас могут быть другие. И ID поля в которое они должны записать, в примере 'ORDER_PROPS_ID' => 12
PS: Чуть позже будет заметка в блоге. Более развернутая
Коды полей и id указаны верно, все равно не объединяет