Выгрузка заказов в Битрикс: короткая инструкция в CSV
За 10–15 минут вы получите CSV-файл с заказами из 1С-Битрикс: идентификатором, датой, суммой, валютой, статусом и ID покупателя. Способ подходит для разовой выгрузки через командную строку.

Разовая выгрузка заказов из 1С-Битрикс не требует доступа к базе данных и ручного копирования из административной панели. Ниже — готовый CLI-скрипт для Битрикс Framework 24.x и PHP 8.1+, который за 10–15 минут создаст CSV-файл за указанный период с ID заказа, датой, суммой, валютой, статусом и ID покупателя.
Что нужно до начала
- доступ к серверу по SSH или возможность запускать PHP-скрипты из командной строки;
- проект на 1С-Битрикс: Управление сайтом с подключённым модулем «Интернет-магазин»;
- PHP 8.1 или совместимая с вашей редакцией Битрикс версия;
- права на чтение файлов проекта и запуск PHP;
- папка, куда можно сохранить результат выгрузки.
Пример использует D7 API Битрикс и не обращается к MySQL напрямую. Это важно: структура таблиц магазина может меняться, а публичный API остаётся более предсказуемым. Перед запуском проверьте требования вашей конкретной редакции Битрикс и PHP в документации.
Сноска. D7 API — современный программный интерфейс 1С-Битрикс с пространствами имён вроде Bitrix\Sale. Через него можно получать данные магазина без написания SQL-запросов к внутренним таблицам.
Для первой выгрузки берите только поля, которые точно нужны отчёту. Контакты, свойства заказа и состав корзины лучше добавлять отдельными шагами: они увеличивают объём данных и требуют отдельной проверки персональных данных.
Шаг 1. Создайте CLI-скрипт
Создайте файл /local/cli/export_orders.php в корне сайта. Скрипт рассчитан на запуск из консоли и принимает две даты в формате ГГГГ-ММ-ДД. Он выгружает заказы с начала первой даты до начала дня после второй, поэтому заказы за последний день не теряются.
<?php
declare(strict_types=1);
if (PHP_SAPI !== 'cli') {
fwrite(STDERR, "Скрипт запускается только из командной строки.\n");
exit(1);
}
$documentRoot = dirname(__DIR__, 2);
$_SERVER['DOCUMENT_ROOT'] = $documentRoot;
require $documentRoot . '/bitrix/modules/main/include/prolog_before.php';
use Bitrix\Main\Loader;
use Bitrix\Main\Type\DateTime;
use Bitrix\Sale\Internals\OrderTable;
if (!Loader::includeModule('sale')) {
fwrite(STDERR, "Не удалось подключить модуль sale.\n");
exit(1);
}
$from = $argv[1] ?? '';
$to = $argv[2] ?? '';
$fromDate = DateTime::createFromFormat('!Y-m-d', $from);
$toDate = DateTime::createFromFormat('!Y-m-d', $to);
if ($fromDate === false || $toDate === false || $fromDate->format('Y-m-d') !== $from || $toDate->format('Y-m-d') !== $to) {
fwrite(STDERR, "Использование: php export_orders.php 2025-01-01 2025-01-31\n");
exit(1);
}
$toExclusive = clone $toDate;
$toExclusive->add('1 day');
$result = OrderTable::getList([
'select' => [
'ID',
'DATE_INSERT',
'PRICE',
'CURRENCY',
'STATUS_ID',
'USER_ID',
],
'filter' => [
'>=DATE_INSERT' => new DateTime($from . ' 00:00:00', 'Y-m-d H:i:s'),
'<DATE_INSERT' => new DateTime($toExclusive->format('Y-m-d') . ' 00:00:00', 'Y-m-d H:i:s'),
],
'order' => ['ID' => 'ASC'],
]);
$output = fopen('php://stdout', 'wb');
fputcsv($output, [
'ORDER_ID',
'DATE_INSERT',
'PRICE',
'CURRENCY',
'STATUS_ID',
'USER_ID',
], ';', '"', '\\');
while ($order = $result->fetch()) {
$dateInsert = $order['DATE_INSERT'];
fputcsv($output, [
$order['ID'],
$dateInsert instanceof DateTime ? $dateInsert->format('Y-m-d H:i:s') : (string)$dateInsert,
$order['PRICE'],
$order['CURRENCY'],
$order['STATUS_ID'],
$order['USER_ID'],
], ';', '"', '\\');
}
fclose($output);
Знак < в фильтре означает «меньше». В HTML он экранирован, но в самом PHP-файле должен находиться обычный оператор <, а строка фильтра должна выглядеть как '<DATE_INSERT' только в HTML-представлении статьи. При копировании из браузера проверьте этот символ.
Шаг 2. Запустите выгрузку
Перейдите в каталог со скриптом и перенаправьте стандартный вывод в CSV-файл:
cd /var/www/site/local/cli
php export_orders.php 2025-01-01 2025-01-31 > /var/www/site/upload/orders-2025-01.csv
Замените /var/www/site на фактический путь к проекту. Имена каталогов и права доступа зависят от хостинга, поэтому путь нельзя универсально подставить за вас.
Проверка результата: команда должна завершиться без сообщения об ошибке, а в указанном каталоге появится файл orders-2025-01.csv. Первая строка содержит заголовки столбцов, следующие строки — заказы.
Шаг 3. Проверьте CSV
Откройте файл в редакторе, который умеет задавать кодировку и разделитель. Для русскоязычного Excel обычно подходят UTF-8 и разделитель «точка с запятой». Сверьте три вещи:
- количество строк в файле и количество заказов за тот же период в административной панели;
- сумму нескольких заказов вручную, включая копейки и валюту;
- границы периода: в выгрузку должен попасть заказ, созданный в начале первого дня, а заказ после 23:59:59 последнего дня — не должен.
Скрипт выводит технические идентификаторы. STATUS_ID — код статуса заказа, а не его русское название. Если в отчёте нужны «Новый», «Оплачен» или другое отображаемое имя, потребуется отдельная загрузка списка статусов. Свойства заказа, телефон, e-mail и состав корзины в этот пример намеренно не включены.
Если не получилось
«Could not open input file»
PHP не нашёл файл по указанному пути. Выполните pwd и ls -l export_orders.php, затем запустите команду из каталога, где файл действительно находится.
«Не удалось подключить модуль sale»
Модуль магазина не установлен, отключён или проект подключается не из корня. Проверьте путь к prolog_before.php, права пользователя PHP и наличие модуля «Интернет-магазин» в административной панели.
В CSV нет строк, хотя заказы есть
Чаще всего причина в датах, часовом поясе или фильтре. Сначала запустите выгрузку за широкий период, например за месяц, затем сравните дату заказа в панели и серверное время. Не меняйте фильтр на SQL-запрос без резервной копии и проверки на тестовом сайте.
Вместо колонок всё отображается в одной строке
Откройте импорт CSV и вручную выберите разделитель «точка с запятой» и кодировку UTF-8. Это проблема программы просмотра, а не самого запроса к Битрикс.
Появилась ошибка синтаксиса после копирования
Проверьте строки с операторами сравнения и кавычками. В HTML-коде статьи символы < и > могут быть экранированы, а в PHP-файле должны быть обычными знаками.
Что важно учесть в рабочем проекте
Не размещайте этот файл в публично доступной папке и не запускайте его через URL: в выгрузке могут оказаться персональные данные. Для регулярного запуска используйте CLI и планировщик задач на сервере, а готовые файлы сохраняйте с ограниченными правами доступа.
Если заказов очень много, добавьте постраничную обработку по ID или ограничение выборки. Текущий пример читает результат последовательно, но всё равно сначала проверьте время выполнения и размер файла на копии сайта. Выгрузка состава корзины и свойств заказа — отдельная задача: сначала составьте список нужных полей и определите, кто имеет право их видеть.
Что сделать дальше
После первой проверки сохраните эталонное количество заказов и сумму за выбранный день. Затем добавьте в CSV только те поля, которые нужны конкретному отчёту, и поставьте регулярный запуск в непиковое время. На рабочем сервере контролируйте размер файла, время выполнения и наличие ошибок PHP после каждого запуска.
Инфографика для маркетплейса: Три главных преимущества товара короткими фразами, выноски в безопасной зоне превью, точный размер площадки.
Спросить за 60 ₽Источники: Официальная документация 1С-Битрикс: D7 API, Официальная документация 1С-Битрикс: модуль Интернет-магазин
Частые вопросы
Можно ли запустить этот скрипт через браузер?
Почему в файле нет названий статусов и свойств заказа?
Что делать, если у меня другая версия Битрикс или PHP?
Можно ли выгружать заказы сразу в Excel?
Почему количество заказов в CSV не совпадает с административной панелью?
Можно ли включить телефон и e-mail покупателя?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.