Битрикс
24.01.2023
Битрикс. Получить местоположение из заказа
В 1С-Битрикс иногда возникает задача получить местоположение заказа по номеру заказа.
Например:
- город доставки;
- страну;
- регион;
- location из свойства заказа.
Получение местоположения заказа
Для этого можно использовать:
CSaleOrderPropsValue::GetOrderProps()
Пример кода
<?
$db_props = CSaleOrderPropsValue::GetOrderProps("номер_заказа");
while ($arProps = $db_props->Fetch())
{
if ($arProps["TYPE"] == "LOCATION")
{
$arVal = CSaleLocation::GetByID(
$arProps["VALUE"],
LANGUAGE_ID
);
echo htmlspecialchars(
$arVal["COUNTRY_NAME"]
. " - " .
$arVal["CITY_NAME"]
);
}
}
?>
Что делает GetOrderProps()
Метод:
CSaleOrderPropsValue::GetOrderProps()
получает:
- все свойства заказа.
В параметре передается:
ID заказа
Что такое TYPE = LOCATION
В Битрикс местоположение заказа хранится в свойстве типа:
LOCATION
Поэтому делается проверка:
if ($arProps["TYPE"] == "LOCATION")
Что хранится в VALUE
Поле:
$arProps["VALUE"]
содержит:
- ID местоположения.
Например:
0000073738
Получение данных местоположения
Для получения названия города используется:
CSaleLocation::GetByID()
Что возвращает GetByID()
Метод возвращает:
- страну;
- город;
- регион;
- название местоположения.
Пример вывода
Россия - Омск
Почему используется htmlspecialchars()
Функция:
htmlspecialchars()
защищает вывод:
- от HTML;
- XSS;
- некорректных символов.
Более короткий вариант
Если нужен только город:
<?
$arVal = CSaleLocation::GetByID($locationId, LANGUAGE_ID);
echo $arVal["CITY_NAME"];
?>
Важно про новые местоположения
В новых версиях Битрикс рекомендуется использовать D7 API:
\Bitrix\Sale\Location\LocationTable
Но старый API:
CSaleLocation
до сих пор часто используется в старых проектах.
Где применяется такой код
- обработка заказов;
- CRM;
- уведомления;
- экспорт заказов;
- интеграции;
- статистика по регионам.
Итог
Чтобы получить местоположение заказа в 1С-Битрикс:
- получаем свойства заказа;
- ищем TYPE = LOCATION;
- получаем данные через CSaleLocation::GetByID();
- выводим город и страну.
Комментарии