Вывод списка заказов пользователя в дополнительной вкладке

В редакции битрикса "Малый бизнес" отсутствует функционал раздела "Покупатели". И по этой причине отсутствует возможность при необходимости быстро посмотреть заказы определенного клиента. Выйти из ситуации поможет следующее решение - выводим список всех заказов пользователя в дополнительной вкладке при просмотре любого его заказа в панели администрирования 1C Bitrix.

Данный код добавляем в init.php и, при необходимости, модифицируем его под себя. В коде есть проверка на пользователя с ID 1 - она необходима, если есть один пользователь, к которому привязываются все заказы, сделанные без регистрации (частный случай реализации). Если такого нет в Вашем проекте, то эта проверка на на какого-то конкретного пользователя не нужна.

\Bitrix\Main\EventManager::getInstance()->addEventHandler("main", "OnAdminSaleOrderView", array("MyTab", "onInit"));
class MyTab
{
	public static function onInit()
	{
		return array(
			"TABSET" => "MyTab",
			"GetTabs" => array("MyTab", "mygetTabs"),
			"ShowTab" => array("MyTab", "myshowTab"),
			"Action" => array("MyTab", "myaction"),
			"Check" => array("MyTab", "mycheck"),
		); 
	}
	public static function myaction($arArgs)
	{
		return true;
	}
	public static function mycheck($arArgs)
	{
		return true;
	}
	public static function mygetTabs($arArgs)
	{
		return array(array("DIV" => "edit1", "TAB" => "История заказов",
			"ICON" => "sale", "TITLE" => "Список заказов клиента",
			"SORT" => 1)
		);
	}
	public static function myshowTab($divName, $arArgs, $bVarsFromForm)
	{
		$order = \Bitrix\Sale\Order::load($arArgs["ID"]);
		$order_user_id = $order->getUserId();
		
		if(!empty($order_user_id) && $order_user_id>1) {
			$registry = \Bitrix\Sale\Registry::getInstance(\Bitrix\Sale\Registry::REGISTRY_TYPE_ORDER);
			$orderClassName = $registry->getOrderClassName();
			$orderResult = $orderClassName::getList(array(
				'filter' => [
					'USER_ID' => $order_user_id,
					'LID' => 's1',
				],
				'select' => ['ID'],
				'order' => ['ID' => 'DESC'],
			));

			$all_summ = 0;
			echo '<div class="client-order-list">';
			while($row = $orderResult->fetch()){
				$order_in_list = \Bitrix\Sale\Order::load($row['ID']);
				$order_summ = $order_in_list->getField('PRICE');
				$order_id = $order_in_list->getField('ID');
				$order_date = $order_in_list->getField('DATE_INSERT');
				switch($order_in_list->getField('STATUS_ID')){
					case 'C':
						$status_text = "Отменен";
						$status_color = "#ff0000";
						break;
					case 'D':
						$status_text = "Передан на доставку";
						$status_color = "#7c4900";
						break;
					case 'F':
						$status_text = "Выполен";
						$status_color = "#00a650";
						$all_summ += $order_summ;
						break;
					case 'N':
						$status_text = "Новый заказ";
						$status_color = "#ffffff";
						break;
					case 'P':
						$status_text = "Оплачен";
						$status_color = "#fff100";
						break;
					case 'ST':
						$status_text = "Занесен в таблицу";
						$status_color = "#04b4ab";
						break;
					default:
						$status_text = "";
						$status_color = "transparent";
				}
				echo '<div class="client-order-list-item">';
					echo '<div>Заказ № <a href="/bitrix/admin/sale_order_view.php?amp%3Bfilter=Y&%3Bset_filter=Y&lang=ru&ID='.$order_id.'">'.$order_id.'</a> от '.$order_date.' на сумму '.$order_summ.' руб. </div>';
					echo '<div style="background-color:'.$status_color.'">'.$status_text.'</div>';
				echo '</div>';
			}
			echo '</div>';
			if($all_summ>0){
				echo '<p>Всего выполнено заказов на сумму '.$all_summ.' руб.</p>';
			}
			echo '<style>.client-order-list{display:flex;flex-direction:column;width:fit-content}.client-order-list-item{padding:4px 4px 4px 10px;border:1px solid #dadee1;display:flex;width:100%;justify-content:space-between;align-items:center}.client-order-list-item + .client-order-list-item{border-top:0}.client-order-list-item div:last-child{padding:3px 7px}</style>';
		} else {
			echo '<p>Для данного пользователя история заказов недоступна, так как заказ оформлен незарегистрированным пользователем. </p>';
			echo '<p>История заказов доступна только для зарегистрированных покупателей с индивидуальной учетной записью. </p>';
		}
	}
}

В результате мы получаем новую вкладку в каждом заказе - "История заказов", в которой и есть список всех заказов пользователя с возможностью перехода на каждый из этих заказов и подсветкой статусов каждого заказа. Очень удобно и без необходимости перехода на более высокую редакцию 1С Битрикс.

Список заказов в отдельной вкладке