Разработка административного интерфейса управления парсером 1С-Битрикс

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

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

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

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

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

Разработка административного интерфейса управления парсером 1С-Битрикс

Парсер без админки — это bash-скрипт на cron, который понятен только разработчику, который его писал. Стоит ему уйти в отпуск — и никто не может ни остановить импорт, ни изменить источник, ни понять, почему каталог наполняется мусором. Полноценный интерфейс управления парсером — это инвестиция в управляемость системы. Разберём архитектуру, ключевые экраны и интеграцию с механизмами Битрикс.

Архитектура: модуль или страница admin

В 1С-Битрикс есть два пути создания административного интерфейса:

  1. Кастомный модуль (/local/modules/yourcompany.parser/) — полноценная структура с install/, admin/, lib/, регистрацией в системе модулей, пунктами меню в левой панели. Правильный путь для долгоживущих проектов.
  2. Административные страницы (/local/admin/parser_*.php) — быстрее в реализации, но хуже масштабируется. Подходит для MVP.

Для интерфейса управления парсером рекомендую полноценный модуль. Причина — парсер обычно обрастает сущностями: источники, правила маппинга, расписания, логи. Всё это удобно группировать в рамках одного модуля с ORM-сущностями.

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

/local/modules/yourcompany.parser/
├── install/
│   ├── db/          — SQL миграции
│   └── index.php    — установка/удаление
├── admin/
│   ├── parser_source_list.php
│   ├── parser_source_edit.php
│   ├── parser_task_list.php
│   ├── parser_log_list.php
│   └── menu.php
├── lib/
│   ├── Source.php         — ORM-таблица источников
│   ├── Task.php           — ORM-таблица задач парсинга
│   ├── TaskLog.php        — ORM-таблица логов
│   ├── MappingRule.php    — правила маппинга полей
│   └── Engine/
│       ├── AbstractParser.php
│       ├── HttpClient.php
│       └── DomExtractor.php
└── lang/

Регистрация модуля стандартная — include.php в корне, Module::register() при установке, пункты меню через admin/menu.php с использованием $aMenuLinks[].

Экран 1: Управление источниками

Главный экран. Список источников парсинга в стандартном CAdminList с колонками:

Колонка Тип Назначение
ID int Первичный ключ
NAME string Человекочитаемое имя источника
BASE_URL string Корневой URL
STATUS enum active / paused / error
LAST_RUN datetime Последний запуск
LAST_RESULT string ok / error: описание
ELEMENTS_COUNT int Обработано элементов за последний запуск
SCHEDULE string Cron-выражение

Форма редактирования источника (CAdminForm / CAdminTabControl) содержит вкладки:

  • Основное — имя, URL, статус, привязка к инфоблоку каталога (IBLOCK_ID).
  • Правила парсинга — CSS-селекторы или XPath для полей: название, цена, артикул, описание, изображения. Каждое правило — строка с полями field_code, selector, type (text/html/attr/regex), transform (trim/number/replace).
  • Расписание — cron-выражение или выбор из пресетов (каждый час, каждые 6 часов, ежедневно). Хранится в таблице источника, агент считывает и запускает.
  • HTTP-настройки — User-Agent, таймаут, прокси, задержка между запросами, лимит страниц.

Экран 2: Задачи парсинга

Каждый запуск парсера создаёт запись в таблице parser_task:

CREATE TABLE parser_task (
    id SERIAL PRIMARY KEY,
    source_id INT REFERENCES parser_source(id),
    status VARCHAR(20) DEFAULT 'pending',  -- pending, running, completed, failed
    started_at TIMESTAMP,
    finished_at TIMESTAMP,
    total_items INT DEFAULT 0,
    created_items INT DEFAULT 0,
    updated_items INT DEFAULT 0,
    skipped_items INT DEFAULT 0,
    error_items INT DEFAULT 0,
    error_message TEXT
);

В списке задач — фильтр по источнику и статусу, цветовая индикация (зелёный — completed, красный — failed, жёлтый — running). Кнопки действий: Запустить заново, Остановить (устанавливает флаг status=cancelling, парсер проверяет флаг перед каждой итерацией).

Экран 3: Журнал ошибок

Построен поверх ORM-таблицы parser_task_log. Колонки: время, источник, уровень (info/warning/error), URL элемента, сообщение, контекст (JSON). Фильтрация по уровню и источнику обязательна — без неё лог нечитаем.

Для каждой записи ERROR уровня добавляем ссылку «Открыть элемент» — прямой URL на страницу товара в админке инфоблока (/bitrix/admin/iblock_element_edit.php?IBLOCK_ID=X&ID=Y).

Экран 4: Правила маппинга

Отдельная страница для визуального редактирования маппинга полей источника → свойства инфоблока. Таблица:

Поле источника Селектор Свойство инфоблока Трансформация
Название h1.product-title NAME trim
Цена .price-current span PROPERTY_PRICE extractNumber
Артикул [data-sku] PROPERTY_ARTICLE
Картинка .gallery img[0]@src DETAIL_PICTURE downloadImage

Маппинг хранится в JSON-поле источника или в отдельной таблице parser_mapping. Второй вариант удобнее для версионирования — можно откатить к предыдущему набору правил.

Кнопка «Тестовый парсинг»

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

Реализация — AJAX-обработчик, принимающий source_id и test_url, вызывающий парсер в режиме dry_run=true (без записи в инфоблок) и возвращающий JSON с результатами.

Безопасность и права

Доступ к интерфейсу парсера — через проверку $APPLICATION->GetGroupRight('yourcompany.parser'). Назначайте права через стандартный механизм модулей: Настройки → Пользователи → Группы → Доступ к модулям. Минимум две роли: просмотр (логи, статусы) и управление (создание/редактирование источников, запуск).

Сроки по масштабу

Компонент Время
Модуль + ORM-сущности + миграции 2-3 дня
Список/редактирование источников 2 дня
Список задач + управление 1-2 дня
Журнал ошибок 1 день
Маппинг полей + тестовый парсинг 2-3 дня
Тестирование, отладка 1-2 дня
Итого 1-2 недели