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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс з Metacommerce (моніторинг цін)
Проста
~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С-Бітрікс з 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 днів