А тут всё просто: если известен ID профиля покупателя, то CSaleOrderUserPropsValue::Update(). Если интересен пример реализации, глянь код компонента bitrix:sale.personal.profile.detail, он как раз про редактирование профиля.
Кстати, если тебе просто единовременно надо у кого-то что-то поменять, а морочиться с API неохота, можешь просто забубенить на какую-нибудь левую страницу компонент bitrix:sale.personal.profile.detail, в параметрах указать айдишник нужного профиля и поменять свойство прямо в форме :-)
Как сделать сортировку списка товаров так чтобы форма сортировки не кешировалась?, Как сделать сортировку списка товаров так чтобы форма сортировки не кешировалась, при этом после перезагрузки в форме сохранялись выбранные параметры сортировки.
Всё просто: поправьте настройки компонента каталога. В группах настроек «Настройки списка» и «Настройки детального просмотра» выберите ваш «дЦвет» вместе со всеми остальными свойствами:
А тут всё просто: #ORDER_ID#, #ORDER_DATE# и прочие штуки с «решётками» — это просто штуки, вместо которых при отправке сообщения через CEvent::Send() можно подставить свои значения.
К примеру, фрагмент из /bitrix/components/bitrix/sale.order.ajax/component.php:
Здесь в $arFields заполняются все поля, которые «зарешёчены» в почтовом шаблоне, а после этого дёргается событие OnOrderNewSendEmail, где можно подрихтовать $arFields под себя, меняя или добавляя свои #переменные#, предварительно добавив их в соответствующий почтовый шаблон.
Если товар или товарное предложение редактируется вручную, сразу после установки цены через CPrice::SetBasePrice() или CPrice::Add() она удаляется функцией CPrice::DeleteByProduct():
Найти эту строчку и разобраться, что к чему, можно в файлах /bitrix/modules/catalog/admin/templates/product_edit_action.php и /bitrix/modules/catalog/admin/templates/subproduct_edit_action.php.
Вкратце: фишка в том, что $arUpdatedIDs завязан на текстовых полях цен, которые передаются в POST, и попадают туда только те значения, которые в текстовом поле цены. Если цена в поле не указана, то в массив ничего не попадает, а то, что не попадает, удаляется.
Решается эта проблема дополнительным обработчиком OnBeforeProductPriceDelete, который должен возвратить false, запрещая удаление.
По ссылкам в разделах документации всё хорошо описано и с примерами.