Задавайте свои вопросы и отвечайте на вопросы других участников форума
Для этого можно использовать событие "OnSaleComponentOrderProperties".
Допустим у нас есть id местоположения, например Москва "0000073738"
Необходимо создать обработчик события, который будет устанавливать местоположение по этому id:
Код
define('LOCATION_ID', "0000073738"); \Bitrix\Main\EventManager::getInstance()->addEventHandlerCompatible( 'sale', 'OnSaleComponentOrderProperties', 'SaleOrderEvents::fillLocation' ); class SaleOrderEvents { function fillLocation(&$arUserResult, $request, &$arParams, &$arResult) { $registry = \Bitrix\Sale\Registry::getInstance(\Bitrix\Sale\Registry::REGISTRY_TYPE_ORDER); $orderClassName = $registry->getOrderClassName(); $order = $orderClassName::create(\Bitrix\Main\Application::getInstance()->getContext()->getSite()); $propertyCollection = $order->getPropertyCollection(); foreach ($propertyCollection as $property) { if ($property->isUtil()) continue; $arProperty = $property->getProperty(); if( $arProperty['TYPE'] === 'LOCATION' && array_key_exists($arProperty['ID'],$arUserResult["ORDER_PROP"]) && !$request->getPost("ORDER_PROP_".$arProperty['ID']) && ( !is_array($arOrder=$request->getPost("order")) || !$arOrder["ORDER_PROP_".$arProperty['ID']] ) ) { $arUserResult["ORDER_PROP"][$arProperty['ID']] = LOCATION_ID; } } } }