Документация для разработчиков

GetList

Метод устарел. Рекомендуется использовать методы класса \Bitrix\Sale\Order.

CDBResult
CSaleOrder::GetList(
 array arOrder = Array("ID"=>"DESC"),
 array arFilter = Array(),
 array arGroupBy = false,
 array arNavStartParams = false,
 array arSelectFields = array(),
 array $arOptions = array()
);

Метод возвращает результат выборки записей из заказов в соответствии со своими параметрами. Нестатический метод.

Параметры вызова

ПараметрОписаниеС версии
arOrder Массив, в соответствии с которым сортируются результирующие записи. Массив имеет вид:
array(
"название_поля1" => "направление_сортировки1",
"название_поля2" => "направление_сортировки2",
. . .
)
В качестве "название_поляN" может стоять любое поле заказа, а в качестве "направление_сортировкиX" могут быть значения "ASC" (по возрастанию) и "DESC" (по убыванию).

Если массив сортировки имеет несколько элементов, то результирующий набор сортируется последовательно по каждому элементу (т.е. сначала сортируется по первому элементу, потом результат сортируется по второму и т.д.).
arFilter Массив, в соответствии с которым фильтруются записи заказов. Массив имеет вид:
array(
"[модификатор1][оператор1]название_поля1" => "значение1",
"[модификатор2][оператор2]название_поля2" => "значение2",
. . .
)
Удовлетворяющие фильтру записи возвращаются в результате, а записи, которые не удовлетворяют условиям фильтра, отбрасываются.

Допустимыми являются следующие модификаторы:
  • ! - отрицание;
  • + - значения null, 0 и пустая строка так же удовлетворяют условиям фильтра.
Допустимыми являются следующие операторы:
  • >= - значение поля больше или равно передаваемой в фильтр величины;
  • > - значение поля строго больше передаваемой в фильтр величины;
  • <= - значение поля меньше или равно передаваемой в фильтр величины;
  • < - значение поля строго меньше передаваемой в фильтр величины;
  • ~ - значение поля проверяется на соответствие передаваемому в фильтр шаблону;
  • @ - модификатор может использоваться при передаче набора значений (массива);
  • % - значение поля проверяется на соответствие передаваемой в фильтр строке в соответствии с языком запросов.
В качестве "название_поляX" может стоять любое поле заказов.

Для фильтрации заказов по свойствам возможны следующие варианты:
  • PROPERTY_ID - идентификатор значения свойства заказа по идентификатору свойства заказа;
  • PROPERTY_ORDER_PROPS_ID - идентификатор свойства заказа по идентификатору свойства заказа;
  • PROPERTY_NAME - название свойства по идентификатору свойства заказа;
  • PROPERTY_VALUE - значение свойства заказа по идентификатору свойства заказа;
  • PROPERTY_CODE - код свойства заказа по идентификатору свойства заказа;
  • PROPERTY_VAL_BY_CODE - значение свойства заказа по коду свойства.

Для фильтрации по свойствам типа "чекбокс" в значение фильтра надо ставить Y.

Пример фильтра:
array("CANCELED" => "Y")
Этот фильтр означает "выбрать все записи, в которых значение в поле CANCELED (отменён) равно Y".

Значение по умолчанию - пустой массив array() - означает, что результат отфильтрован не будет.

Чтобы задать временной интервал при получении заказов, можно использовать в фильтре ключи DATE_UPDATE_FROM, DATE_UPDATE_TO для фильтрации по дате изменения и DATE_FROM, DATE_TO для фильтрации по дате добавления заказа.

arGroupBy Массив полей, по которым группируются записи заказов. Массив имеет вид:
array("название_поля1",
      "группирующая_функция2" => "название_поля2", . . .)
В качестве "название_поляN" может стоять любое поле заказов. В качестве группирующей функции могут стоять:
  • COUNT - подсчет количества;
  • AVG - вычисление среднего значения;
  • MIN - вычисление минимального значения;
  • MAX - вычисление максимального значения;
  • SUM - вычисление суммы.
Если массив пустой, то метод вернет число записей, удовлетворяющих фильтру.

Значение по умолчанию - false - означает, что результат группироваться не будет.
4.0.6
arNavStartParams Массив параметров выборки. Может содержать следующие ключи:
  • "nTopCount" - количество возвращаемых методом записей будет ограничено сверху значением этого ключа;
  • любой ключ, принимаемый методом CDBResult::NavQuery в качестве третьего параметра.
Значение по умолчанию - false - означает, что параметров выборки нет.
4.0.6
arSelectFields Массив полей записей, которые будут возвращены методом. Можно указать только те поля, которые необходимы. Если в массиве присутствует значение "*", то будут возвращены все доступные поля.

Значение по умолчанию - пустой массив array() - означает, что будут возвращены все поля основной таблицы запроса.
4.0.6
arOptions Массив дополнительных параметров.

Использовался только для Oracle. Передавался параметр NULLS_LAST, который позволял сортироваться выборку так, чтобы значения полей NULL были последние. Сейчас не используется.
4.0.6

Возвращаемые значения

Возвращается объект класса CDBResult, содержащий ассоциативные массивы с ключами:

Ключ Описание
ID Номер заказа.
LID Код сайта.
ACCOUNT_NUMBER Код заказа.
TRACKING_NUMBER Трек-номер заказа.
PAY_SYSTEM_ID Идентификатор платежной системы.
DELIVERY_ID Идентификатор службы доставки.
DATE_INSERT Дата добавления заказа в формате текущего сайта.
DATE_UPDATE Дата последнего изменения заказа в формате текущего сайта.
PERSON_TYPE_ID Идентификатор плательщика.
USER_ID Идентификатор пользователя, за кем закреплен заказ.
PAYED Фраг оплаченности заказа (Y/N).
DATE_PAYED Дата оплаты заказа.
DATE_INSERT Дата добавления заказа в формате текущего сайта.
DATE_UPDATE Дата последнего изменения заказа в формате текущего сайта.
EMP_PAYED_ID Идентификатор пользователя оплатившего заказ.
DEDUCTED Флаг отгруженности заказа (Y/N).
DATE_DEDUCTED Дата отгрузки заказа.
EMP_DEDUCTED_ID Идентификатор пользователя, отгрузившего заказ.
REASON_UNDO_DEDUCTED Комментарий причины отмены отгрузки заказа.
STATUS_ID Код статуса заказа.
DATE_STATUS Дата изменения статуса заказа.
EMP_STATUS_ID ID пользователя, изменивший статус заказа.
MARKED Флаг проблемности заказа (Y/N).
DATE_MARKED Дата выставления флага проблемности заказа.
EMP_MARKED_ID Идентификатор пользователя, установивший флаг проблемности заказа.
REASON_MARKED Комментарий причины проблемности заказа.
PRICE_DELIVERY Стоимость доставки.
ALLOW_DELIVERY Флаг разрешена ли отгрузка заказа (Y/N).
DATE_ALLOW_DELIVERY Дата выставления флага разрешения отгрузки заказа.
EMP_ALLOW_DELIVERY_ID Идентификатор пользователя, установивший флаг разрешение отгрузки заказа.
RESERVED Флаг зарезервированно ли всё кол-во товара в заказе (Y/N).
PRICE Стоимость заказа.
CURRENCY Валюта заказа.
DISCOUNT_VALUE Значение скидки заказа.
TAX_VALUE Размер налога на заказ.
SUM_PAID Сумма оплаченного заказа.
USER_DESCRIPTION Комментарий пользователя оформившего заказ.
PAY_VOUCHER_NUM Номер документа оплаты.
PAY_VOUCHER_DATE Дата оплаты документа.
ADDITIONAL_INFO Дополнительная информация заказа.
COMMENTS Комментарии к заказу.
COMPANY_ID Идентификатор компании, к которой привязан заказ.
CREATED_BY Идентификатор пользователя, кто создал заказ.
RESPONSIBLE_ID Идентификатор ответственного пользователя.
STAT_GID Код статистики.
DATE_PAY_BEFORE Дата предоплаты.
DATE_BILL Дата выставления счета.
LOCKED_BY Флаг, кто заблокировал заказ.
DATE_LOCK Дата, когда был заблокирован заказ.
AFFILIATE_ID Идентификатор аффилиата.
DELIVERY_DOC_NUM Номер документа отгрузки.
DELIVERY_DOC_DATE Дата документа отгрузки.
UPDATED_1C Флаг обновления данных в 1C.
ORDER_TOPIC Идентификатор темы на форуме, к которому привязан заказ.
XML_ID Внешний код заказа.
ID_1C Код в 1С.
VERSION_1C Версия обмена.
EXTERNAL_ORDER Флаг, определяющий является ли заказ внешним.
STORE_ID Код склада.
CANCELED Флаг отмены заказа.
EMP_CANCELED_ID Идентификатор пользователя, кто отменил заказ.
DATE_CANCELED Дата отмены заказа.
REASON_CANCELED Причина отмены заказа.
DATE_INSERT_FORMAT Дата добавления заказа в формате региональных настроек.
DATE_UPDATE_SHORT Дата обновления заказа в формате региональных настроек.
DATE_STATUS_SHORT Дата смены статуса заказа в формате региональных настроек.
DATE_CANCELED_SHORT Дата отмены заказа в формате региональных настроек.
BY_RECOMMENDATION Флаг оформлен ли заказ по рекомендации.
LOCK_STATUS Код блокировка(green/yelow/green).
LOCK_USER_NAME Имя пользователя, блокирующего заказ.
RESPONSIBLE_LOGIN Логин ответственного за заказ пользователя.
RESPONSIBLE_NAME Имя ответственного за заказ пользователя.
RESPONSIBLE_LAST_NAME Фамилия ответственного за заказ пользователя.
RESPONSIBLE_SECOND_NAME Отчество ответственного за заказ пользователя.
RESPONSIBLE_EMAIL Email ответственного за заказ пользователя.
RESPONSIBLE_WORK_POSITION Должность ответственного за заказ пользователя.
RESPONSIBLE_PERSONAL_PHOTO Фото ответственного за заказ пользователя.
USER_LOGIN Логин пользователя, за кем закреплен заказ.
USER_NAME Имя пользователя, за кем закреплен заказ.
USER_LAST_NAME Фамилия пользователя, за кем закреплен заказ.
USER_EMAIL Email пользователя, за кем закреплен заказ.

Если в качестве параметра arGroupBy передается пустой массив, то метод вернет число записей, удовлетворяющих фильтру.

Примеры использования

<?
// Выведем даты всех заказов текущего пользователя за текущий месяц, отсортированные по дате заказа
$arFilter = Array(
   "USER_ID" => $USER->GetID(),
   ">=DATE_INSERT" => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n"), 1, date("Y")))
   );

$db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter);
while ($ar_sales = $db_sales->Fetch())
{
   echo $ar_sales["DATE_INSERT_FORMAT"]."<br>";
}
?>
//список всех заказов, при оформлении которых был использован тот или иной купон получения скидки 
<?
if (CModule::IncludeModule("sale")):

   $arFilter = Array(
      "BASKET_DISCOUNT_COUPON" => "КОД_КУПОНА_ЗДЕСЬ",
      );
   $rsSales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter);
   while ($arSales = $rsSales->Fetch())
   {
      echo "<pre>";
      print_r($arSales);
      echo "</pre>";
   }
endif;
?>

//можно использовать и массив купонов для поиска: 
CSaleOrder::GetList(array(), array('BASKET_DISCOUNT_COUPON' => array('TEST1', 'TEST2')));
//пример использования arGroupBy
$arFilter = array('PAYED' => 'Y', 'PROPERTY_VAL_BY_CODE_F_COURIER' => $f_VALUE);
$rsOrders = CSaleOrder::GetList(array('ID' => 'DESC'), $arFilter, array('PAYED', 'SUM' => 'PRICE'));

//поле PAYED в arGroupBy передано, чтобы вернулся CNT (количество таких заказов). Если не передавать, вернется просто сумма.
//получить заказ с определенным товаром
$rsOrder = CSaleOrder::GetList(array('ID' => 'DESC'), array('BASKET_PRODUCT_ID' => 174474));
//фильтрация по нескольким вариантам статуса: 
$arFilter = Array("USER_ID" => $USER->GetID(), "@STATUS_ID" => array("R", "I", "P", "O"));


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Алёна Перепадя
Сообщение непромодерировано, возможны ошибки и неточности.
Для постраничной навигации справедливо следующее (как и для CIBlockElement::GetList):
Код
Параметры для постраничной навигации и ограничения количества выводимых элементов. массив вида "Название параметра"=>"Значение", где название параметра 
"nTopCount" - ограничить количество сверху 
"bShowAll" - разрешить вывести все элементы при постраничной навигации 
"iNumPage" - номер страницы при постраничной навигации 
"nPageSize" - количество элементов на странице при постраничной навигации 
"nElementID" - ID элемента который будет выбран вместе со своими соседями. Количество соседей определяется параметром nPageSize. Например: если nPageSize равно 2-м, то будут выбраны максимум 5-ть элементов.  Соседи определяются порядком сортировки заданным в параметре arOrder (см. выше) . 

Например:
Код
            $limit = 5;
            $page = 2;

            $order = ['ID' => 'desc'];
            $select = [
                'ID',
                'DATE_INSERT',
                'PRICE',
                'CURRENCY',
                'PROPERTY_VAL_BY_CODE_NAME',
                'PROPERTY_VAL_BY_CODE_EMAIL',
                'PROPERTY_VAL_BY_CODE_PHONE',
                'USER_DESCRIPTION',
            ];


            $orders = \CSaleOrder::GetList(
                $order,
                $filter,
                false,
                [
                    'nPageSize' => $limit,
                    'iNumPage'  => $page
                ],
                $select,
                []
            );
1
NewDay
Все заказы магазина за прошлую неделю:
Код
<?
$arFilter = array();

$arFilter[">=DATE_INSERT"] =date('d.m.Y',strtotime('last monday', strtotime('last sunday', strtotime('tomorrow')) ) );
$arFilter["<DATE_INSERT"] = date('d.m.Y',strtotime('last sunday', strtotime('tomorrow')));

$orders = CSaleOrder::GetList(array(), $arFilter);
echo $orders->SelectedRowsCount();

?>
1
Константин Кербицкий
Если делаете группировку по свойству заказа, то указывать свойство нужно следующим образом (также указав его в сортировке):
Код
        $arFilter = Array("USER_ID" => $arUser['ID']);
        $rsOrder = CSaleOrder::GetList(Array('PROPERTY_VAL_BY_CODE_CONSIGNEE' => 'ASC'), $arFilter, Array("PROPERTY_VAL_BY_CODE_CONSIGNEE"), Array('nPageSize' => 1000)); // Array("PROPERTY_CONSIGNEE")
        while($arOrder = $rsOrder->Fetch())
        {
        }
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх