Интеграция 1С-Битрикс с Metacommerce (мониторинг цен)

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с Metacommerce (мониторинг цен)
Простая
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1240
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    844
  • 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
    582
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    749
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    981

Интеграция 1С-Битрикс с Metacommerce (мониторинг цен)

Metacommerce — российский сервис мониторинга цен конкурентов. Специализируется на ритейле: парсит цены с сайтов конкурентов, маркетплейсов (Wildberries, Ozon, Яндекс.Маркет) и агрегирует в единый отчёт. Интеграция с Битрикс позволяет видеть позицию по цене прямо в карточке товара и на основе этих данных принимать ценовые решения.

API Metacommerce

Metacommerce предоставляет REST API. Базовый URL зависит от тарифа, авторизация через Authorization: Token {api_token}. Основные методы:

  • GET /api/v3/products/ — список товаров в проекте Metacommerce
  • GET /api/v3/products/{id}/prices/ — цены конкурентов по конкретному товару
  • GET /api/v3/reports/price-position/ — отчёт о ценовой позиции
  • POST /api/v3/products/ — добавление товаров для мониторинга

Сопоставление товаров

Metacommerce хранит свои товары с ID, которые нужно сопоставить с товарами в Битрикс. Маппинг хранится в bl_metacommerce_product_map:

CREATE TABLE bl_metacommerce_product_map (
    bitrix_product_id   INT NOT NULL PRIMARY KEY,
    metacommerce_id     VARCHAR(64) NOT NULL,
    last_position       SMALLINT,       -- место по цене среди конкурентов
    last_check          TIMESTAMP,
    min_competitor_price NUMERIC(12,2),
    max_competitor_price NUMERIC(12,2),
    avg_competitor_price NUMERIC(12,2),
    UNIQUE (metacommerce_id)
);

Первичное сопоставление выполняется по EAN/артикулу через POST /api/v3/products/match. Непроматченные товары требуют ручного сопоставления.

Синхронизация ценовой позиции

Агент раз в час получает свежие данные по всем товарам:

function SyncMetacommercePositions(): string
{
    $mappedProducts = MetacommerceMapTable::getList(['select' => ['BITRIX_PRODUCT_ID', 'METACOMMERCE_ID']]);
    $ids = array_column($mappedProducts->fetchAll(), 'METACOMMERCE_ID');

    // Пакетный запрос позиций
    $positions = $metacommerceClient->get('/api/v3/reports/price-position/', [
        'product_ids' => implode(',', $ids),
        'date'        => date('Y-m-d'),
    ]);

    foreach ($positions['results'] as $pos) {
        $bitrixId = MetacommerceMapTable::getByMetacommerceId($pos['product_id'])['BITRIX_PRODUCT_ID'] ?? null;
        if (!$bitrixId) continue;

        MetacommerceMapTable::update($bitrixId, [
            'LAST_POSITION'        => $pos['rank'],
            'LAST_CHECK'           => new \Bitrix\Main\Type\DateTime(),
            'MIN_COMPETITOR_PRICE' => $pos['min_price'],
            'MAX_COMPETITOR_PRICE' => $pos['max_price'],
            'AVG_COMPETITOR_PRICE' => $pos['avg_price'],
        ]);

        // Обновляем UF-поля товара в инфоблоке для отображения в карточке
        \CIBlockElement::SetPropertyValuesEx($bitrixId, CATALOG_IBLOCK_ID, [
            'COMPETITOR_MIN_PRICE' => $pos['min_price'],
            'PRICE_RANK'           => $pos['rank'],
        ]);
    }

    return __FUNCTION__ . '();';
}

Отображение ценовой позиции в карточке товара (каталог)

В административном редакторе товара добавляем вкладку «Мониторинг цен». Данные подтягиваются из bl_metacommerce_product_map и bl_metacommerce_price_history.

На публичной стороне — виджет для категорийного менеджера (видимый только авторизованным с нужными правами): «Вы на X месте. Минимальная цена конкурента: Y руб.»

История цен конкурентов

Для аналитики сохраняем исторические данные в bl_metacommerce_price_history:

CREATE TABLE bl_metacommerce_price_history (
    id                  SERIAL PRIMARY KEY,
    bitrix_product_id   INT NOT NULL,
    check_date          DATE NOT NULL,
    our_price           NUMERIC(12,2),
    min_competitor      NUMERIC(12,2),
    avg_competitor      NUMERIC(12,2),
    rank                SMALLINT,
    UNIQUE (bitrix_product_id, check_date)
);

Это позволяет строить графики динамики позиции за период в дашборде.

Сроки

Этап Срок
API-клиент + сопоставление товаров 2 дня
Синхронизация позиций (агент) 2 дня
Отображение в карточке товара 1–2 дня
История + дашборд 2 дня
Тестирование 1 день
Итого 8–9 дней