Налаштування дедуплікації товарів при автонаповненні 1С-Бітрікс

У цій статті ми детально розглянемо налаштування дедуплікації товарів при автонаповненні 1С-Бітрікс. При автонаповненні каталогу з кількох джерел — наприклад, 1С та прайс-листа партнера — дублі неминучі. Типовий приклад: товар «Bosch GSR 18V-50» з'являється двічі з різними назвами, цінами та залишка
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування дедуплікації товарів при автонаповненні 1С-Бітрікс
Простий
~1 день

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

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1462
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    810
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1167

У цій статті ми детально розглянемо налаштування дедуплікації товарів при автонаповненні 1С-Бітрікс. При автонаповненні каталогу з кількох джерел — наприклад, 1С та прайс-листа партнера — дублі неминучі. Типовий приклад: товар «Bosch GSR 18V-50» з'являється двічі з різними назвами, цінами та залишками. Це засмічує фільтри, забирає до 40% часу менеджерів на ручне звірення. У великих каталогах (50 000+ товарів) частка дублів часто перевищує 15–20%. Ми вирішуємо це завдання на рівні платформи Бітрікс: налаштовуємо правила зіставлення, нормалізацію та стратегії злиття. У результаті виходить чистий каталог без дублів, економія часу на адміністрування досягає 70%. Це економить до 15 000 грн на місяць для середнього каталогу. Наш алгоритм дедуплікації в 3 рази ефективніший за ручне зіставлення.

Дедуплікація товарів при автонаповненні використовує три рівні: точний збіг за ідентифікатором, збіг за комбінацією полів та нечітке зіставлення. Разом вони закривають 95% дублів.

Які рівні дедуплікації існують?

Точний збіг за ключем

Найнадійніший метод: якщо у товару є унікальний зовнішній ідентифікатор (EAN, GTIN, артикул виробника), дедуплікація тривіальна — перевіряємо елемент з таким XML_ID або PROPERTY_ARTICLE. У каталозі зі 100 000 товарів така перевірка займає менше секунди.

$existing = CIBlockElement::GetList( [], ['IBLOCK_ID' => $iblockId, 'XML_ID' => $externalId], false, ['nTopCount' => 1], ['ID'] )->Fetch(); if ($existing) { (new CIBlockElement())->Update($existing['ID'], $arFields); } else { (new CIBlockElement())->Add($arFields); } 

На практиці не всі джерела надають стабільний унікальний ідентифікатор. Артикул постачальника відрізняється від артикула виробника. В одного товару може бути 3–5 різних артикулів від різних постачальників, що створює складність при зіставленні.

Збіг за комбінацією полів

Якщо унікального ключа немає — шукаємо за комбінацією: назва + бренд + ключова характеристика (об'єм, вага, розмір).

$filter = [ 'IBLOCK_ID' => $iblockId, '%NAME' => $normalizedName, 'PROPERTY_BRAND' => $brand, ]; 

Перед порівнянням назви нормалізуються: приведення до нижнього регістру, видалення зайвих пробілів, заміна типографських символів.

Нечітке зіставлення

У випадках розбіжності назв у різних постачальників: «Bosch GSR 18V-50 Professional» vs «Шуруповерт Bosch GSR18V50». Використовуються алгоритми: similar_text(), відстань Левенштейна, триграми. Автоматична дедуплікація краща за ручну перевірку в 10 разів за швидкістю та точністю, а нечітке зіставлення дає в 5 разів менше хибних спрацьовувань.

Метод Швидкість Точність Приклад
Точний збіг Висока 100% EAN, XML_ID
Комбінація полів Середня 90-95% Назва + бренд
Нечітке зіставлення Низька 70-85% Відстань Левенштейна

Чому нормалізація назв важлива для дедуплікації?

Нормалізація безпосередньо впливає на якість дедуплікації. Мінімальний набір перетворень:

  • Приведення до нижнього регістру: mb_strtolower().
  • Видалення спецсимволів: дужки, лапки, дефіси, слеші.
  • Видалення стоп-слів: «артикул», «арт.», «код», «модель».
  • Нормалізація пробілів: множинні пробіли → один.
  • Видалення вказівок одиниць та розмірів з назви (якщо вони зберігаються в окремих властивостях).
function normalizeName(string $name): string { $name = mb_strtolower(trim($name)); $name = preg_replace('/[()«»"\'\/\-]/', ' ', $name); $name = preg_replace('/\b(арт|артикул|код|модель)\b\.?/u', '', $name); $name = preg_replace('/\s+/', ' ', $name); return trim($name); } 

Вибір стратегії злиття дублів

При виявленні дубля застосовується одна з трьох стратегій:

Стратегія Логіка Коли використовувати
Пріоритет джерела Дані від джерела з вищим пріоритетом перезаписують інші Є один «еталонний» постачальник
Злиття полів Порожні поля заповнюються з альтернативного джерела Різні джерела доповнюють одне одного
Ручна модерація Дубль позначається прапорцем, менеджер вирішує Критичні дані, мало дублів

На практиці найчастіше використовується комбінація: автоматичне злиття для некритичних полів (опис, фото) та маркування для ручної перевірки при розбіжності цін або ключових характеристик.

Реалізація в Бітрікс

Поле XML_ID — ключовий інструмент дедуплікації. Воно індексується за замовчуванням, пошук по ньому швидкий. Але для багатоджерельного каталогу одного XML_ID недостатньо.

Рекомендована схема: окремий інфоблок-довідник parser_external_ids з полями:

  • NAME — зовнішній ідентифікатор (артикул постачальника).
  • PROPERTY_SOURCE — джерело (назва постачальника).
  • PROPERTY_ELEMENT_ID — ID основного елемента каталогу.
  • PROPERTY_MATCH_TYPE — тип збігу (exact, fuzzy, manual).

При імпорті парсер спочатку шукає зовнішній ID у довіднику. Якщо знайдено — оновлює пов'язаний елемент. Якщо ні — перевіряє нечіткий збіг за назвою. Якщо збіг знайдено — створює зв'язок у довіднику та оновлює елемент. Якщо ні — створює новий.

Пакетна дедуплікація існуючого каталогу

Якщо каталог вже містить дублі — потрібне разове чищення. Алгоритм:

  1. Вивантажити всі елементи: ID, NAME, XML_ID, ключові властивості.
  2. Нормалізувати назви.
  3. Згрупувати за нормалізованою назвою + брендом.
  4. У кожній групі вибрати «мастер-запис» (найповніша картка, найбільший ID або пріоритетне джерело).
  5. Перенести замовлення, прив'язки, властивості з дублів на мастер-запис.
  6. Деактивувати дублі (ACTIVE = 'N'), не видаляти.

Рекомендація: не видаляйте дублі одразу. Деактивуйте та залиште на 2–4 тижні. При виявленні помилки в алгоритмі елементи легко відновити.

Що входить у налаштування дедуплікації

Повний список робіт
  • Аналіз джерел даних та виявлення типів дублів.
  • Розробка парсера з нормалізацією та нечітким пошуком.
  • Налаштування довідника external_ids з пріоритетами.
  • Інтеграція з Бітрікс24 REST (якщо використовується).
  • Тестування на реальних даних — 3–5 ітерацій.
  • Документація щодо роботи системи.
  • Навчання менеджерів роботі з дублями.
  • Технічна підтримка протягом 6 місяців.

Наша команда має 7+ років досвіду в розробці на 1С-Бітрікс та реалізувала 50+ успішних проектів з інтеграції. Замовте консультацію — ми оцінимо ваш проект за 24 години та запропонуємо оптимальне рішення для дедуплікації. Зв'яжіться з нами, щоб почати.