Как получить свойства заказа в 1С-Битрикс: старые методы и современный API D7

Просмотров: 2239

Задача: Получить все доступные свойства заказа для всех активных типов плательщика из модуля магазина.

свойства заказа в 1С-Битрикс

Старые методы получения свойств заказа

CModule::IncludeModule("sale"));

$personTypes = CSalePersonType::GetList(
    [
        "SORT" => "ASC"
    ],
    [
        "ACTIVE" => "Y"
    ]
);

while ($personType = $personTypes->Fetch()) {
        
    var_dump($personType); // Распечатка всех полей плательщиков
        
    $orderProps = CSaleOrderProps::GetList(
        ["SORT" => "ASC"],
        ["PERSON_TYPE_ID" => $personType["ID"]]
    );

    while ($prop = $orderProps->Fetch()) {
        var_dump($prop); // Распечатка всех свойств заказа для этого плательщика
    }
}
  • Подключение модуля sale с помощью CModule::IncludeModule("sale").
  • Получение списка всех активных типов плательщиков с использованием метода CSalePersonType::GetList.
  • В параметры запроса передаётся:
    • Сортировка по полю SORT в порядке возрастания.
    • Фильтр по активности (ACTIVE => "Y").
  • Для каждого типа плательщика выполняется цикл while, который:
    • Распечатывает информацию о текущем типе плательщика.
  • Для каждого типа плательщика выполняется запрос к методу CSaleOrderProps::GetList:
    • Устанавливается сортировка по полю SORT в порядке возрастания.
    • Фильтр по PERSON_TYPE_ID, соответствующему текущему плательщику.
  • Для каждого свойства заказа выполняется внутренний цикл while, который:
    • Распечатывает информацию о текущем свойстве заказа.

Новые методы через API D7 - получение свойств заказа и типов плательщика

Тоже самое можно (и более того - рекомендуется) сделать через новое API 1С-Битрикс. Здесь тот же самый результат но c использованием getList-ов нового ядра

use Bitrix\Main\Loader;
use Bitrix\Sale\Internals\PersonTypeTable;
use Bitrix\Sale\Internals\OrderPropsTable;

Loader::includeModule("sale");

// Получаем типы плательщиков
$personTypes = PersonTypeTable::getList([
    'filter' => [
        'ACTIVE' => 'Y'// Только активные
    ],
    'order' => [
        'SORT' => 'ASC'// Сортировка
    ]
]);

while ($personType = $personTypes->fetch()) {

    var_dump($personType);

    // Получаем свойства для типа плательщика
    $orderProps = OrderPropsTable::getList([
        'filter' => [
            'PERSON_TYPE_ID' => $personType['ID']
        ],
        'order' => [
            'SORT' => 'ASC'
        ],
    ])->fetchAll();
        
    var_dump($orderProps);

}

Использование API D7 позволяет:

  • Легче расширять и поддерживать код благодаря строгой типизации.
  • Уменьшить вероятность ошибок из-за устаревших методов.
  • Увеличить производительность запросов за счёт улучшенной работы с базой данных.

Дополнение по getList

Не забываем о грамотном использовании нового ядра, передавая в getList доступные параметры можно оптимизировать производительность кода.

$res = \Запрос\К нужному классу::getList([
    'order' => // массив- сортировка
    'select' => // массив- выбираемые поля
    'filter' => // массив- фильтр
    'group' =>  // массив- группировка, order должен быть пустой
    'limit' => // число- ограничение выбираемого кол-ва
    'offset' => // число- смещение первого столбца в результате
    'count_total' => // число- дает возможность получить кол-во элементов через метод getCount()
    'runtime' =>  // массив полей сущности, создающихся динамически
    'data_doubling' => // булево (ум. false) - получение одинаковых записей
    'cache' => array( // массив-  кеширование запроса запроса
    'ttl' => 1000,
    'cache_joins' => true
    ),
]);

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 6-ти недель

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

Запуск сайта на готовом решении

от 150 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 500 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 350 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 400 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 40 000 руб. от 2-х дней

Выполню полную проверку сайта и окружения. В случае обнаружения вирусов проведу полный комплекс лечения проекта и закрытия лазеек.