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

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

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

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

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

  • 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 для компании ТЕХНОТОРГКОМПЛЕКС
    1043

Разработка модуля импорта данных 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 рабочих дней. Сложные форматы или трансформации — оцениваем отдельно. Получите консультацию и предварительную оценку вашего проекта, напишите нам. Закажите разработку модуля, который решит вашу задачу.