Розробка адміністративного інтерфейсу управління парсером 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
    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 тижні