Разработка на 1С-Битрикс Михаил Базаров
Блог-note

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

Просмотров: 3226
Задача: Получить все доступные свойства заказа для всех активных типов плательщика из модуля магазина.
свойства заказа в 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С-Битрикс

Стоимость разработки сайта зависит от объёма и сложности проекта. Ниже приведены ориентировочные цены, как правило не выходят за обозначенные рамки. Срок разработки зависит от сложности проекта: как правило называю сроки с запасом.

Финальная стоимость и сроки разработки обговариваются на этапе обсуждения. Скачайте опросник на разработку, заполните как можно подробнее и вышлите удобным способом. После ознакомления смогу задать уточняющие вопросы и оценить проект.

Включено в стоимость разработки

В цену уже заложено всё, что нужно для легального и быстрого запуска. Доплачивать за базовые вещи не придётся.

  • Лицензия и модули

    Лицензия на «1С-Битрикс» нужной редакции, дополнительные модули и видео-инструкции по работе с готовым проектом.

  • Скорость и SEO

    Оптимизация кода и сервера под быструю загрузку, базовая SEO-оптимизация и добавление сайта в поисковые системы.

Блог-note

Заметки по 1С-Битрикс