Индивидуальная выгрузка данных из 1С-Битрикс в Excel

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Индивидуальная выгрузка данных из 1С-Битрикс в Excel
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1322
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    915
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    811
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    710
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1044

Настройка кастомного экспорта в Excel из 1С-Битрикс для менеджеров

Менеджерам нужны данные в Excel: заказы за период, список клиентов, остатки товаров. Стандартный Битрикс предоставляет экспорт в ограниченном количестве мест — в основном в административной части. Кастомный экспорт для менеджеров прямо из интерфейса сайта или из административных отчётов — это отдельная разработка, которую мы делаем под ключ. Наши инженеры с 5+ лет опыта в Битриксе и десятками реализованных экспортов гарантируют, что выгрузка будет работать стабильно даже на каталогах в 50 000 позиций. Типичный кейс: менеджеру нужно выгрузить 30 000 заказов за квартал с фильтрами по статусу и менеджеру — стандартными средствами это не сделать.

Почему стандартный экспорт не подходит менеджерам?

Стандартные кнопки «Экспорт» в /bitrix/admin/ требуют прав администратора. Менеджеры часто не имеют такого доступа. Решение — вынести экспорт в личный кабинет или отдельную страницу с помощью API Битрикса и PhpSpreadsheet. Ниже — проверенная архитектура.

Стандартные возможности Битрикс: откуда можно экспортировать из коробки?

Из коробки Битрикс экспортирует в Excel:

  • Список заказов в административной части (/bitrix/admin/sale_order.php) — кнопка «Экспорт»
  • Элементы инфоблока (/bitrix/admin/iblock_element_admin.php) — экспорт через список
  • Отчёты CRM в Битрикс24

Эти инструменты дают базовый CSV/XLS без форматирования, только из admin-части. Для менеджеров без доступа к /bitrix/admin/ — не подходит. Сравните: кастомный экспорт даёт отформатированные файлы с автоподбором ширины столбцов и стилями — в 10 раз удобнее для восприятия.

Параметр Стандартный экспорт Кастомный экспорт
Доступ из админки Да Не обязательно
Форматирование Базовое Полное (шрифты, цвета, ширина)
Фильтры Только по умолчанию Любые (дата, статус, менеджер, сумма)
Объём данных До 10 000 строк До 100 000 с кэшированием
Права доступа Только администратор Настраиваемые группы

Как вывести кнопку экспорта в личный кабинет?

Наиболее частая задача — экспорт заказов с фильтром по дате, статусу, менеджеру. Используем PhpSpreadsheet для генерации XLSX. Код ниже — основа, которую мы адаптируем под вашу CRM:

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Bitrix\Sale\OrderTable;
use Bitrix\Main\Type\DateTime;

class OrderExporter
{
    public function export(array $filter): string
    {
        $orders = OrderTable::getList([
            'filter' => [
                '>=DATE_INSERT' => new DateTime($filter['date_from']),
                '<=DATE_INSERT' => new DateTime($filter['date_to']),
                '=STATUS_ID'    => $filter['status'] ?? null,
                '=LID'          => SITE_ID,
            ],
            'select' => [
                'ID', 'ACCOUNT_NUMBER', 'DATE_INSERT', 'PRICE',
                'CURRENCY', 'STATUS_ID', 'USER_ID',
            ],
            'order' => ['DATE_INSERT' => 'DESC'],
        ])->fetchAll();

        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();

        // Заголовки
        $sheet->fromArray(
            ['№ заказа', 'Дата', 'Покупатель', 'Email', 'Телефон', 'Сумма', 'Валюта', 'Статус'],
            null, 'A1'
        );
        $sheet->getStyle('A1:H1')->getFont()->setBold(true);

        $row = 2;
        foreach ($orders as $order) {
            $user = $this->getUserInfo($order['USER_ID']);
            $sheet->fromArray([
                $order['ACCOUNT_NUMBER'],
                $order['DATE_INSERT']->format('d.m.Y H:i'),
                $user['FULL_NAME'],
                $user['EMAIL'],
                $user['PHONE'],
                $order['PRICE'],
                $order['CURRENCY'],
                $this->getStatusName($order['STATUS_ID']),
            ], null, 'A' . $row);
            $row++;
        }

        $writer = new Xlsx($spreadsheet);
        $file = tempnam(sys_get_temp_dir(), 'orders_');
        $writer->save($file);
        return $file;
    }
}

Экспорт остатков товаров с SQL-запросом

Для экспорта остатков используем связку b_catalog_store_product + инфоблок. Этот запрос собирает артикул, название, общее количество и резерв:

$result = \Bitrix\Main\Application::getConnection()->query("
    SELECT
        ie.id,
        ie.name,
        prop_article.value AS article,
        SUM(csp.amount) AS total_amount,
        SUM(csp.quantity_reserved) AS reserved
    FROM b_iblock_element ie
    JOIN b_iblock_element_property prop_article
        ON prop_article.iblock_element_id = ie.id
        AND prop_article.iblock_property_id = :article_prop_id
    LEFT JOIN b_catalog_store_product csp ON csp.product_id = ie.id
    WHERE ie.iblock_id = :iblock_id AND ie.active = 'Y'
    GROUP BY ie.id, ie.name, prop_article.value
    ORDER BY ie.name
", ['iblock_id' => CATALOG_IBLOCK_ID, 'article_prop_id' => ARTICLE_PROP_ID]);

Что делать при миллионной выборке?

Для каталогов свыше 100 000 записей добавляем постраничный AJAX-экспорт: данные выгружаются частями по 10 000 строк, объединяются на сервере. Кэширование тегированное — при изменении данных инвалидируется только кеш конкретного экспорта. Это снижает нагрузку на БД на 70%. Дополнительно используем потоковую запись в PhpSpreadsheet, чтобы не хранить весь документ в памяти.

Кэш строится на основе хеша фильтра и даты последнего изменения. При повторном запросе с теми же параметрами файл отдаётся из кеша, минуя генерацию. Это особенно эффективно для стандартных отчётов, которые менеджеры запрашивают ежедневно.

Контроль прав и AJAX-роут

Экспорт вызывается через AJAX-обработчик с проверкой прав:

// /local/ajax/export_orders.php
\Bitrix\Main\Loader::includeModule('sale');

if (!$USER->IsAdmin() && !$USER->IsInGroup(MANAGER_GROUP_ID)) {
    header('HTTP/1.1 403 Forbidden');
    exit;
}

$exporter = new OrderExporter();
$file = $exporter->export($_GET);

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename="orders_' . date('Y-m-d') . '.xlsx"');
header('Content-Length: ' . filesize($file));
readfile($file);
unlink($file);

Что входит в работу под ключ

  1. Аналитика — изучаем схему данных, права пользователей, частоту выгрузок.
  2. Проектирование — выбираем источники данных, продумываем фильтры и формат.
  3. Разработка — пишем PHP-компонент с использованием PhpSpreadsheet, AJAX-обработчик, настраиваем кэширование.
  4. Тестирование — проверяем на объёме до 100 000 строк, корректируем память.
  5. Документация — описываем, как добавить новые поля, изменить фильтры.
  6. Обучение — показываем менеджерам, где скачать отчёт.

Сроки и стоимость

Конфигурация Срок
Экспорт одного типа данных (заказы или товары) 1–2 дня
Экспорт с фильтрами и несколькими листами 2–4 дня
Модуль экспорта с UI-фильтром в ЛК 4–6 дней

Стоимость рассчитывается индивидуально, ориентировочный диапазон для базового экспорта — от 15 000 до 30 000 ₽. Это включает настройку одного источника данных, базовые фильтры и проверку прав. При необходимости добавим сложные фильтры, несколько листов и кэширование — итоговая цена уточняется после анализа.

Почему стоит заказать экспорт у нас?

Мы — сертифицированные разработчики 1С-Битрикс с 5+ годами опыта и более 50 внедрений. Используем PhpSpreadsheet — стабильную библиотеку с поддержкой форматирования, рекомендованную сообществом. Гарантируем, что экспорт не упадёт на больших объёмах, а данные будут выгружены без потерь. Экономия времени менеджеров на подготовку отчётов — до 90%. Закажите разработку — оценим ваш проект бесплатно за 1 рабочий день. Получите консультацию по интеграции прямо сейчас.