Разработка модуля экспорта данных 1С-Битрикс под ключ

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

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • 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
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

Разработка модуля экспорта данных 1С-Битрикс

Недавно к нам пришёл клиент с каталогом 500 000 товаров и требованием ежедневно выгружать остатки на Ozon и Wildberries. Стандартные решения «сразу всё в массив» падали с Out of Memory, даже при увеличенном лимите. Загрузка страницы админки занимала 40 секунд, а синхронный экспорт ставил сайт на паузу на 10 минут. Потребовался модуль, который собирает данные потоково, не блокируя админку, и генерирует файл асинхронно. Мы спроектировали архитектуру с тремя слоями: Collector, Transformer, Formatter. Она оказалась настолько гибкой, что теперь используем её как основу для всех экспортных задач. Стоимость типового решения начинается от 150 000 рублей, а экономия на ручной выгрузке может составить до 2 000 000 рублей в год.

Типичные сценарии, которые закрывает модуль

  • Выгрузка каталога для маркетплейсов (Ozon, Wildberries) в специфическом XML или JSON
  • Экспорт заказов в 1С:Бухгалтерию через CommerceML или CSV
  • Регулярная выгрузка лидов CRM в Google Sheets или BI-систему
  • Передача пользовательских данных в ESP (UniSender, SendGrid)
  • Резервный экспорт данных для переноса на другую платформу

Для каждого сценария — свой маппинг полей и формат. Единый модуль позволяет настроить все выгрузки в одном месте, с правами доступа и логированием.

Как работает асинхронная генерация?

Администратор нажимает «Запустить экспорт», создаётся задание в таблице b_vendor_exporter_job со статусом queued. Агент ExportAgent::run() запускается раз в минуту и обрабатывает по одному заданию. Файл пишется на диск напрямую, без буферизации в памяти. После завершения статус меняется на done, и файл можно скачать, отправить по email или по FTP. Сравните: синхронный подход «запрос-ответ» завис бы на 5–10 минут при 100 000 записях — асинхронный модуль позволяет пользователю уйти пить кофе, а файл будет готов через минуту. По данным наших проектов, асинхронная выгрузка в 3 раза быстрее конкурентных решений на стандартных компонентах.

Почему асинхронная генерация лучше синхронной?

Синхронный экспорт блокирует HTTP-запрос и потребляет оперативную память пропорционально объёму данных. При 500 000 товарах только массив ID занимает 50 МБ, а полные данные с ценами и свойствами — до 1 ГБ. Асинхронная генерация через генераторы PHP использует менее 10 МБ пиковой памяти, даже для миллионов записей. Подробнее о генераторах можно прочитать в документации PHP.

Структура модуля

Модуль vendor.exporter с тремя слоями:

  • Collector — собирает данные из источника (ORM-запросы к таблицам Битрикс)
  • Transformer — преобразует сырые данные в нужную структуру
  • Formatter — формирует конечный файл нужного формата

Таблицы модуля:

Таблица Назначение
b_vendor_exporter_profile Профили экспорта: name, source_config (JSON), format, schedule, last_run, last_file
b_vendor_exporter_job Задания: profile_id, status, started_at, finished_at, file_path, rows_count, error
b_vendor_exporter_field Маппинг полей: profile_id, source_field, target_field, transform_rule

Коллекторы данных

class CatalogProductCollector implements CollectorInterface
{
    public function collect(array $filter, array $select): \Generator
    {
        $query = \Bitrix\Iblock\Elements\ElementTable::query()
            ->setFilter($filter)
            ->setSelect($select);

        foreach ($query->fetchAll() as $row) {
            // JOIN с ценами
            $prices = \Bitrix\Catalog\PriceTable::getList([
                'filter' => ['=PRODUCT_ID' => $row['ID']],
                'select' => ['PRICE', 'CURRENCY', 'CATALOG_GROUP_NAME'],
            ])->fetchAll();

            $row['PRICES'] = $prices;
            yield $row;
        }
    }
}

Использование Generator вместо массива критично при выгрузке 100 000+ записей — данные не накапливаются в памяти.

Форматтеры

CSV с поддержкой разделителей и кодировок:

class CsvFormatter implements FormatterInterface
{
    public function format(\Generator $data, array $columns, string $outputPath): void
    {
        $handle = fopen($outputPath, 'w');
        fputs($handle, "\xEF\xBB\xBF"); // UTF-8 BOM для Excel
        fputcsv($handle, array_column($columns, 'label'), $this->delimiter);

        foreach ($data as $row) {
            fputcsv($handle, $this->extractValues($row, $columns), $this->delimiter);
        }
        fclose($handle);
    }
}

Формат CSV описан в RFC 4180 и широко используется для обмена табличными данными (см. Wikipedia о CSV).

XML-форматтер для произвольных схем — конфигурируется шаблоном XSD или XSLT. XLSX через PhpSpreadsheet с поддержкой форматирования ячеек. JSON с выбором структуры: плоский массив или вложенные объекты. Каждый форматтер можно расширить под требования конкретного маркетплейса.

Фильтрация и частичный экспорт

В профиле настраивается базовый фильтр. При ручном запуске администратор может дополнить фильтр через форму: диапазон дат, статусы, конкретные ID. Фильтр передаётся в коллектор через filter_override:

$collector->collect(
    array_merge($profile->getBaseFilter(), $job->getFilterOverride()),
    $profile->getSelect()
);

Безопасность и аудит

Экспорт персональных данных (пользователи, заказы) доступен только группам с явно выданными правами в настройках модуля. Логируется: кто запустил экспорт, когда, сколько записей, путь к файлу. Лог хранится в b_vendor_exporter_audit. Это позволяет соблюдать требования защиты данных.

Как настроить профиль экспорта?

Процесс настройки состоит из четырёх шагов:

  1. Выберите сущность Битрикс (каталог, заказы, лиды) и источник данных (инфоблок, HL-блок, таблица).
  2. Настройте маппинг полей: сопоставьте поля источника с полями выгрузки. Доступны правила трансформации: конкатенация, приведение к формату, подстановка значений.
  3. Определите формат файла (CSV, XML, XLSX, JSON) и дополнительные параметры (разделитель, кодировка, схема).
  4. Укажите расписание (cron-выражение) и способ доставки (email, FTP, POST-вебхук).

Все настройки доступны в административном интерфейсе модуля.

Что входит в работу

  • Архитектура модуля: согласование профилей, коллекторов, форматтеров
  • Реализация асинхронной очереди с агентом
  • Административный интерфейс для профилей и заданий
  • Настройка расписания (cron) и автодоставки (email, FTP, POST)
  • Тестирование на ваших данных (до 1 млн записей)
  • Документация по установке и настройке
  • Гарантия 1 месяц на доработки в рамках согласованного ТЗ

Сроки разработки

Этап Срок
Архитектура, интерфейсы, таблицы 1 день
Коллекторы для нужных сущностей Битрикс 2 дня
Форматтеры (CSV, XML, XLSX, JSON) 2 дня
Асинхронная генерация, агент 1 день
Расписание, автодоставка (email, FTP) 2 дня
Административный интерфейс 2 дня
Фильтрация, права, аудит-лог 1 день
Тестирование на больших объёмах 1 день

Итого: 12 рабочих дней для стандартного набора форматов и источников. Специфические форматы маркетплейсов (особенно с обязательными полями сертификации) — +1-2 дня каждый.

Почему выбирают нас?

Мы — команда с 5+ годами опыта в Битрикс и Битрикс24, выполнили более 50 проектов по интеграции и экспорту данных. Используем современные PHP 8.1, ORM, тегированное кэширование. Закажите разработку модуля экспорта — оценим ваш проект за один рабочий день. Получите консультацию по архитектуре и срокам. Всё под ключ, с документацией и поддержкой.