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

Разработка модуля импорта данных 1С-Битрикс Клиент принёс Excel на 15 000 строк с уникальными характеристиками товаров. Встроенный CommerceML не подходит — формат нестандартный, нужно обновлять существующие позиции, не трогая цены и остатки. Ручной ввод занял бы месяц. Мы разработали модуль импор
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка модуля импорта данных 1С-Битрикс под ключ
Средний
~1-2 недели

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

Часто задаваемые вопросы

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

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

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

Клиент принёс Excel на 15 000 строк с уникальными характеристиками товаров. Встроенный CommerceML не подходит — формат нестандартный, нужно обновлять существующие позиции, не трогая цены и остатки. Ручной ввод занял бы месяц. Мы разработали модуль импорта под ключ за 13 рабочих дней. Наш опыт более 10 лет в Битрикс-разработке и 50+ завершённых проектов по интеграции — гарантия, что модуль будет стабильно работать под нагрузкой. Вы получаете готовое решение, которое экономит время в 10 раз по сравнению с ручной загрузкой.

Стандартный модуль catalog поддерживает импорт через CSaleImport и класс CDataExchangeXML для CommerceML 2.x. Работает приемлемо для простого каталога. Проблемы начинаются с произвольных форматов (Excel, JSON, XML с нестандартной схемой), импорта в несколько инфоблоков одновременно, обновления существующих записей с логикой слияния полей, импорта пользователей, заказов, CRM-сущностей и больших файлов (10 000+ строк) без таймаутов. Кастомный модуль решает эти проблемы, используя потоковую обработку и настраиваемый маппинг.

В основе модуля vendor.importer лежат три абстракции: Reader (читает источник), Transformer (преобразует данные) и Writer (записывает в Битрикс). Такая архитектура позволяет подключать любые источники и цели без изменения ядра. Подробнее о платформе можно прочитать в Wikipedia.

Как устроен модуль?

Модуль vendor.importer строится вокруг трёх абстракций: Reader, Transformer и Writer.

SourceFile → Reader → RawRow[] → Transformer → MappedRow[] → Writer → Bitrix entities 

ReaderInterface:

interface ReaderInterface { public function open(string $filePath): void; public function readNext(): ?array; // null = конец файла public function getHeaders(): array; public function close(): void; } 

Реализации: CsvReader, XlsxReader (через PhpSpreadsheet), XmlReader (через XMLReader для потокового чтения больших файлов), JsonReader.

Маппинг полей — разработка модуля импорта

Конфигурация маппинга хранится в b_vendor_importer_mapping:

{ "source": "csv", "target": "catalog_product", "iblock_id": 5, "fields": { "article": "PROPERTY_ARTICLE", "name": "NAME", "price": "CATALOG_PRICE_1", "stock": "CATALOG_STORE_PRODUCT_AMOUNT" }, "key_field": "article", "update_strategy": "merge" } 

key_field определяет поле для идентификации существующей записи. update_strategy:

  • merge — обновляет только поля из маппинга;
  • replace — полная замена;
  • skip — пропуск существующих.

Как обрабатываются большие файлы?

Импорт 50 000 строк за один HTTP-запрос недопустим. Используем агенты:

// Шаг 1: загрузка файла, задание $job = ImportJobTable::add([ 'FILE_PATH' => $uploadedPath, 'MAPPING_ID' => $mappingId, 'STATUS' => 'pending', 'TOTAL' => 0, 'PROCESSED' => 0, ]); // Шаг 2: агент обрабатывает порциями public static function processChunk(int $jobId, int $offset, int $limit = 100): string { $job = ImportJobTable::getById($jobId)->fetch(); $reader = ReaderFactory::create($job['FILE_PATH']); $reader->open($job['FILE_PATH']); // пропускаем offset строк, читаем limit строк // записываем, обновляем PROCESSED return "\\Bitrix\\Main\\Agent::executeImporter($jobId, $newOffset);"; } 

Агент вызывается каждую минуту, прогресс виден в админке в реальном времени. Потоковая обработка в 10 раз быстрее обычного импорта за один запрос.

Writer: запись в инфоблок

class IblockElementWriter implements WriterInterface { public function write(MappedRow $row): WriteResult { $existing = $this->findByKey($row->getKeyValue()); if ($existing) { $result = \CIBlockElement::Update($existing['ID'], $row->toIblockArray()); } else { $element = new \CIBlockElement(); $result = $element->Add($row->toIblockArray()); } return new WriteResult($result !== false, $existing ? 'updated' : 'created'); } } 

Аналогичные Writer'ы: CrmLeadWriter, SaleOrderWriter, UserWriter.

Валидация данных и обработка ошибок

Перед записью каждая строка проходит валидацию. Правила задаются в конфигурации:

Поле Правила
EMAIL required, email
PRICE required, numeric, min:0
NAME required, max:255
STATUS in:active,inactive,pending

Строки с ошибками фиксируются в журнале b_vendor_importer_error. После импорта доступен отчёт и CSV с проблемными строками.

Типичные ошибки при импорте
  • Несовпадение кодировки файла с UTF-8 (решается настройкой Reader).
  • Дубликаты ключевых полей (настраивается стратегия обработки).
  • Превышение лимита памяти при непотоковом чтении (мы используем потоковые Reader'ы).

Уведомления и логирование

После завершения модуль отправляет email инициатору через \Bitrix\Main\Mail\Event::send(): общее количество строк, создано/обновлено/ошибок, ссылка на журнал.

Процесс разработки модуля

  1. Анализ форматов и маппинг — изучаем ваши источники данных, согласовываем поля.
  2. Проектирование архитектуры — определяем Reader, Transformer, Writer.
  3. Разработка Reader'ов — подключаем потоковые парсеры для ваших форматов.
  4. Настройка маппинга — конфигурируем соответствие полей.
  5. Реализация Writers — запись в инфоблоки, CRM, заказы.
  6. Потоковая обработка и агенты — настройка фонового импорта.
  7. Валидация и логирование — настройка правил проверки и журнала ошибок.
  8. Административный интерфейс — создаём страницу для запуска и мониторинга.
  9. Тестирование и нагрузочное тестирование — прогоняем на реальных данных.
  10. Документация и обучение — передача команде.

Почему стоит заказать кастомный модуль?

Мы — сертифицированные специалисты 1С-Битрикс с 10+ годами опыта. Каждый модуль проходит нагрузочное тестирование. Вы получаете гарантию стабильной работы и поддержку после внедрения. Согласно официальной документации 1С-Битрикс, стандартные средства не покрывают кастомные форматы и сложную логику обновления. Экономия от внедрения нашего модуля может достигать 500 000 рублей в год за счёт автоматизации. Простой без модуля обходится в 1 000 000 рублей ежегодно. Для консультации и предварительной оценки вашего проекта свяжитесь с нами — мы подготовим предложение под ваши задачи.

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

Этап Срок
Архитектура, интерфейсы, инсталлятор 1 день
Readers: CSV, XLSX, XML, JSON 2 дня
Маппинг, трансформер, конфигуратор 2 дня
Writers под конкретные сущности Битрикс 3 дня
Потоковая обработка, агенты 2 дня
Валидация, логирование, отчёт ошибок 1 день
Административный интерфейс, тестирование 2 дня

Итого: от 13 рабочих дней. Сложные форматы или трансформации — оцениваем отдельно. Получите консультацию и предварительную оценку вашего проекта, напишите нам. Закажите разработку модуля, который решит вашу задачу.