Найти в Дзене
Kolesnev

Начальное местоположение при оформлении заказа или дополнение к статье "Дорабатываем мультирегиональность в 1С Битрикс"

Привет всем!

Тем, кто заглянул сюда, чтобы понять, как сделать начальное местоположение при оформлении заказа, это будет полезно.

Для полноты картины почитайте статью "Дорабатываем мультирегиональность в 1С Битрикс".

В интернете есть немного информации об этом:

https://dev.1c-bitrix.ru/community/webdev/user/154716/blog/26987/

https://dev.1c-bitrix.ru/support/forum/forum6/topic106001/

но почему-то у меня эти способы не срабатывают.

В связи с этим пришлось искать новые пути решения.

Мой способ будет основан на использование сессий.

В файле init.php мы прописали такое:

AddEventHandler("sale", "OnSaleComponentOrderOneStepOrderProps", "OnSaleComponentOrderOneStepOrderProps");
function OnSaleComponentOrderOneStepOrderProps(&$arResult, &$arUserResult, &$arParams)
{
$arUserResult['DELIVERY_LOCATION'] = $_SESSION["id_region"];
}

В итоге происходило так, что пользователь не мог изменить вручную местоположение.

Исправим ситуацию таким образом:

AddEventHandler("sale", "OnSaleComponentOrderOneStepOrderProps", "OnSaleComponentOrderOneStepOrderProps");
function OnSaleComponentOrderOneStepOrderProps(&$arResult, &$arUserResult, &$arParams)
{
if($_SESSION["sale_order_ajax"] != 'Y'){
if(isset($_SESSION["id_region"])){
$arUserResult['DELIVERY_LOCATION'] = $_SESSION["id_region"]; // id Санкт-Петербурга
}
}
}

Так же в header.php добавим:

$_SESSION["sale_order_ajax"] = 'N';

Вот так с помощью сессий мы исправили ситуацию.

Спасибо за внимание.