@Aricus

Где создаётся пользователь при оформлении заказа в 1с-битрикс?

Мне нужно изменить сохранение пользователя при оформлении заказа: добавить значения пользовательских полей и отчество. За оформление заказа отвечает компонент bitrix:sale.order.ajax, который я скопировал и пытаюсь модифицировать. Создание пользователя в компоненте есть в функции SaleOrderAjax->registerAndLogIn(), однако изменение в ней не отражается на сохраняемом пользователе. Я добавил запись в лог к каждой функции компонента. Вот список функций, которые используются непосредственно после нажатия на кнопку "Оформить заказ":
onPrepareComponentParams
executeComponent
prepareAction
doAction
actionExists
showOrderAction
scaleImages

То есть в функцию регистрации пользователя registerAndLogIn не заходит. Как не заходит ни в одну из функций цепочки, из которой вызывается registerAndLogIn (цепочка обрывается на одной из двух protected функциях).
Пользователь создаётся где-то в другом месте, но авторизации не происходит. Подскажите, пожалуйста, как найти место, где создаётся пользователь, не разбираясь подробно в работе компонента в 6500 строк?
  • Вопрос задан
  • 847 просмотров
Решения вопроса 1
@tgarl
Регистрация происходит в самом компоненте /bitrix/components/bitrix/sale.order.ajax/class.php, а не в его шаблоне.

К тому же при заказе есть 2 сущности: пользователь и профиль покупателя.
Пользователь - это тот кто регистрируется, обычно там минимум данных(логин, имя, почта, если я на вскидку ничего не путаю), а его профиль заказа это те данные которые заполняются на моменте оформления заказа.
И вот эти данные могут сильно отличаться от заказа к заказу. Потому что я как пользователь один заказ могу на работу коллеге оформить, второй родственнику, а на себя даже ни одного не сделать. Поэтому при регистрации берутся минимум данных для заведения учетки, остальное хранится отдельно, и то если вы настроите сохранение полей в профиль и разрешите использование профилей при заказе.

Если вы хотите заполнить данные пользователя из полей заказа, то более простым на мой взгляд решением будет использовать события сохранения заказа. чем переписывание компонента.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы