• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/order.php
  • Класс: BitrixSaleControllerOrder
  • Вызов: Order::listAction
public function listAction(PageNavigation $pageNavigation, array $select = [], array $filter = [], array $order = []): Page
{
	$select = empty($select) ? ['*'] : $select;
	$order = empty($order) ? ['ID' => 'ASC'] : $order;
	$runtime = [
		new BitrixMainEntityReferenceField(
			'PERSON_TYPE',
			'BitrixSaleInternalsPersonType',
			array('=this.PERSON_TYPE_ID' => 'ref.ID')
		),
		new BitrixMainEntityReferenceField(
			'STATUS_TABLE',
			'BitrixSaleInternalsStatusTable',
			array('=this.STATUS_ID' => 'ref.ID')
		)
	];

	$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);

	/** @var SaleOrder $orderClass */
	$orderClass = $registry->getOrderClassName();

	$orders = $orderClass::getList(
		[
			'select'=>$select,
			'filter'=>$filter,
			'order'=>$order,
			'offset'=>$pageNavigation->getOffset(),
			'limit'=>$pageNavigation->getLimit(),
			'runtime'=>$runtime
		]
	)->fetchAll();

	return new Page('ORDERS', $orders, function() use ($select, $filter, $runtime)
	{
		$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);

		/** @var SaleOrder $orderClass */
		$orderClass = $registry->getOrderClassName();

		return count(
			$orderClass::getList(['select'=>$select, 'filter'=>$filter, 'runtime'=>$runtime])->fetchAll()
		);
	});
}