Эта запись для меня в будущем. Ну и для всех желающих. Допустим у нас есть код «PRICE» => $order[«PRICE»], который выводит цену в формате 1234.5678, а нам надо 1234,57. Тогда надо использовать функцию `number_format` для форматирования цены.
`number_format($order[«PRICE»], 2, ‘,’, ‘ ‘)`, где:
— `2` — количество знаков после запятой.
— `’,’` — разделитель десятичных знаков (запятая).
— `’ ‘` — разделитель тысяч (пробел).
Получаем:
«PRICE» => number_format($order[«PRICE»], 2, ‘,’, ‘ ‘),
Теперь она будет отображаться как `1 234,57`.
Мне понадобилось создать страницу для отображения заказов 2025 года с чеком отгрузки более одного.
```php
< ?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION-> SetTitle("Список оплаченных заказов за 2025 год");
// Проверяем, подключен ли модуль интернет-магазина
if (!\Bitrix\Main\Loader::includeModule('sale')) {
echo "Модуль интернет-магазина не установлен.";
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
exit;
}
// Устанавливаем параметры фильтра
$filter = [
">=DATE_INSERT" => "01.01.2025 00:00:00",
"< =DATE_INSERT" => "31.12.2025 23:59:59",
"PAYED" => "Y" // Только оплаченные заказы
];
// Получаем заказы
$orderList = [];
$orderIterator = \Bitrix\Sale\Order::getList([
"filter" => $filter,
"select" => ["ID", "USER_ID", "PRICE", "ACCOUNT_NUMBER"],
"order" => ["DATE_INSERT" => "ASC"]
]);
while ($order = $orderIterator-> fetch()) {
// Получаем чеки для заказа
$checkIterator = \Bitrix\Sale\Cashbox\CheckManager::getList([
"filter" => ["ORDER_ID" => $order["ID"]],
"select" => ["ID", "TYPE"]
]);
$checkIds = [];
$hasFullPaymentCheck = false;
while ($check = $checkIterator->fetch()) {
$checkIds[] = $check["ID"];
// Проверяем тип чека: полный приход (обычно TYPE = 1)
if ($check["TYPE"] == 1) { // Здесь 1 — это тип полного прихода
$hasFullPaymentCheck = true;
}
}
// Условие: либо есть чек полного прихода, либо больше двух чеков
if ($hasFullPaymentCheck || count($checkIds) > 2) {
// Получаем данные пользователя
$user = \Bitrix\Main\UserTable::getById($order["USER_ID"])->fetch();
$orderList[] = [
"ORDER_NUMBER" => $order["ACCOUNT_NUMBER"],
"USER_NAME" => $user["LAST_NAME"] . " " . $user["NAME"] . " " . $user["SECOND_NAME"],
"PRICE" => number_format($order["PRICE"], 2, ',', ' '), // Форматируем сумму
"CHECK_IDS" => $checkIds
];
}
}
// Выводим данные
if (!empty($orderList)) {
echo "
";
echo "
Номер заказа
ФИО покупателя
Сумма
Номера чеков
";
foreach ($orderList as $order) {
echo "
";
echo "
" . htmlspecialchars($order["ORDER_NUMBER"]) . "
";
echo "
" . htmlspecialchars($order["USER_NAME"]) . "
";
echo "
" . htmlspecialchars($order["PRICE"]) . "
";
echo "
" . implode(", ", $order["CHECK_IDS"]) . "
";
echo "
";
}
echo "
";
} else {
echo "Нет заказов, соответствующих заданным критериям.";
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>
Блог Bingam




