Николаев Виталий
Блог веб-разработчика: Битрикс, 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()

Метод возвращает:

  • страну;
  • город;
  • регион;
  • название местоположения.

Пример вывода

Россия - Омск

В своих проектах я использую серверную инфраструктуру Timeweb Cloud

VPS и облачные решения для стабильной работы сайтов на PHP и 1С-Битрикс — от корпоративных сайтов до интернет-магазинов и высоконагруженных веб-проектов.

Перейти на Timeweb Cloud
Реклама · ERID: CQH36pWzJqVJ4YD9t5y227AkMQdhpG2THarwRmX2g9tS8x

Почему используется 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();
  • выводим город и страну.
115 просмотров

Если возникли сложности

Помогу разобраться с настройкой, исправить ошибки и реализовать решение под ваш проект.

Поддержка сайтов на 1С-Битрикс

Поддержка сайтов на 1С-Битрикс: быстрое решение ошибок, консультации, обучение сотрудников и сопровождение сайта. 
Резервирую время под ваш проект для оперативной помощи и стабильной работы сайта.
Подробнее
Где заказы?

Почему один сайт стабильно приносит заявки, а другой годами просто «висит в интернете»?

В телеграм-канале «Где заказы?» я разбираю реальные ошибки бизнеса, SEO, сайты, рекламу, воронки продаж и показываю, почему компании теряют клиентов и как это исправить.

Без инфоцыганства и мотивационных цитат — только практика, кейсы и рабочие решения для бизнеса и веб-разработки.

Комментарии

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