В современных конфигурациях «1С:Управление торговлей» (начиная с версии 11) реализован очень интересный встроенный механизм интеллектуального подбора сопутствующих товаров. Он призван автоматически анализировать продажи и подсказывать менеджеру или кассиру в момент оформления заказа: «С этим товаром часто покупают...».
Однако на практике многие системные администраторы и программисты сталкиваются с тем, что регламентное задание выполняется мгновенно, а регистр сведений НоменклатураПродаваемаяСовместно остается абсолютно пустым. В этой статье мы подробно разберем, как устроен этот механизм «под капотом», почему стандартный анализ данных выдает пустую коллекцию правил и как правильно настроить систему, чтобы искусственный интеллект 1С наконец-то заработал.
Для начала проанализируем техническую сторону вопроса. Платформа «1С:Предприятие 8» предоставляет разработчикам мощный встроенный инструмент — объект АнализДанных с типом АнализДанныхПоискАссоциаций. Этот объект использует математические алгоритмы интеллектуального анализа (Data Mining), очень похожие на классический алгоритм поиска ассоциативных правил Apriori.
Работа механизма строится по следующей схеме:
НоменклатураПродаваемаяСовместно.Программный код, который запускает этот процесс в типовой конфигурации, выглядит следующим образом:
Анализ = Новый АнализДанных;
Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
// Настройка источника данных (выборка из документов продаж)
Анализ.ИсточникДанных = ТаблицаДокументовПродаж;
// Запуск расчета ассоциативных правил платформой
РезультатАнализа = Анализ.Выполнить();
// Обход результатов расчета
Для Каждого Правило Из РезультатАнализа.Правила Цикл
// Запись связей в регистр сведений
НоваяЗапись = РегистрыСведений.НоменклатураПродаваемаяСовместно.СоздатьМенеджерЗаписи();
НоваяЗапись.Номенклатура = Правило.Предпосылка[0].Значение;
НоваяЗапись.СопутствующаяНоменклатура = Правило.Следствие[0].Значение;
// ... заполнение остальных реквизитов (значимость, мера доверия)
НоваяЗапись.Записать();
КонецЦикла;
Если при выполнении этого кода система даже не заходит в цикл Для Каждого Правило Из РезультатАнализа.Правила Цикл, это означает, что объект АнализДанных вернул пустой результат. Выясним, почему это происходит.
Основная причина отсутствия результатов анализа кроется в жестких математических критериях отсечения «информационного шума», установленных в настройках поиска ассоциаций по умолчанию. Платформа 1С оценивает потенциальные связи между товарами по трем ключевым параметрам:
Главный практический вывод: На небольших базах данных, новых предприятиях или в сферах с огромным и разнообразным ассортиментом (где клиенты редко покупают абсолютно одинаковые пары товаров повторно) дефолтные параметры анализа оказываются слишком жесткими. Алгоритм просто считает любые совпадения случайным шумом и очищает коллекцию правил.
Чтобы заставить механизм подбора работать и начать заполнять регистр сведений, нам необходимо снизить пороги чувствительности алгоритма. Выполним следующие настройки в интерфейсе программы:
Обновление номенклатуры, продаваемой совместно).После снижения порогов до минимальных значений платформа начнет регистрировать даже редкие совместные покупки, и регистр сведений наконец-то заполнится данными.
Рассмотрим еще несколько важных моментов, о которых часто забывают при внедрении этого функционала:
1. Разделение на оптовые и розничные продажи.
В настройках поиска ассоциаций вы можете указать, какие именно продажи анализировать. Доступны варианты: «Оптовая торговля», «Розничная торговля» или «Оптовая и розничная торговля». Обратите внимание, что если вы настроите и рассчитаете ассоциации только по оптовым продажам, то при подборе товаров в Чеке ККМ (розница) система не предложит сопутствующие товары, так как для розницы они не рассчитывались. Проанализируйте профиль ваших продаж и выберите подходящий вариант.
2. Производительность системы при расчете.
Запуск объекта АнализДанных — это крайне ресурсоемкая операция. Платформа выполняет сложные математические вычисления непосредственно на сервере 1С или СУБД. Если запустить расчет ассоциаций на крупной базе с миллионами записей продаж в разгар рабочего дня, это может привести к критическому падению производительности и зависанию системы. Настоятельно рекомендуем выносить регламентное задание ОбновлениеНоменклатурыПродаваемойСовместно на ночное время или выполнять его в выходные дни (например, раз в неделю).
Как справедливо заметили участники обсуждения на форуме, иногда интеллектуальный алгоритм действительно может работать неидеально или выдавать неочевидные ассоциации, которые маркетологам кажутся нелогичными. Кроме того, в некоторых ранних релизах УТ 11.2 наблюдались технические ошибки платформенного механизма инициализации параметров.
Если запустить автоматический расчет так и не удалось, или вы хотите иметь полный контроль над предлагаемыми сопутствующими товарами, рассмотрите альтернативные варианты:
НоменклатураПродаваемаяСовместно. Это позволит использовать внешние системы аналитики (например, BI-системы) для поиска ассоциаций и легко переносить их результаты в базу 1С.