Николаев Виталий
Блог веб-разработчика: Битрикс, PHP, Python, Linux и SEO
Битрикс Битрикс
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();
  • выводим город и страну.
23 просмотров

Комментарии

Где заказы?
Почему у одних компаний очередь из клиентов, а у других пустой сайт и тишина?
Телеграм канал «Где заказы?» — про продажи, сайты и ошибки бизнеса на реальных примерах. Подписаться