ЧАСТНЫЙ
РАЗРАБОТЧИК

САЙТЫ И МАГАЗИНЫ
НА 1С-БИТРИКС

ЕСТЬ ЗАДАЧА?

Рейтинг популярности товаров для «1С-Битрикс: Управление сайтом»

«Рейтинг популярности товаров» — инструмент собственной разработки для интернет-магазинов на платформе «1С-Битрикс: Управление сайтом». Скрипт объединяет заказы, корзины, просмотры, избранное, наличие и свойства карточки в общий балл товара. После подключения рейтинга к сортировке этот балл определяет порядок карточек в каталоге.

Отмеченные новинки могут получить временную прибавку к рейтингу. Её величина зависит от возраста карточки и максимального базового балла каталога. Коэффициенты, границы периодов и исключения адаптирую под задачи магазина.

Из чего складывается рейтинг

  • Заказы и корзины. В расчёт входят строки заказов с учётом оплаты и отмены, а также строки корзин, по которым заказ ещё не оформлен. Для них используются разные веса и периоды отбора.
  • Просмотры и избранное. Скрипт читает накопленный счётчик просмотров и готовое значение избранного из свойства товара. Он не собирает эти события самостоятельно.
  • Наличие и подготовка карточки. Положительный суммарный остаток, заполненное видео и признак комплекта дают отдельные прибавки по правилам магазина.
  • Правила витрины. Отмеченные новинки получают временный бонус; для отдельных товаров, свойств и разделов можно задать понижение.

Заказы и корзины разных торговых предложений учитываются в рейтинге основного товара. Например, строки с разными размерами или вариантами одной модели влияют на балл общей карточки.

Заказы и корзины отбираются по дате создания за заданные периоды. Подсчёт идёт по строкам: количество единиц в строке, выручка и число уникальных покупателей в формулу не входят. Несколько вариантов одного товара в одном заказе могут дать несколько вкладов.

Отменённые заказы не исключаются. Поэтому балл популярности не равен числу оплаченных покупок; веса и правила учёта отмен согласуем под задачи магазина.

Для просмотров используется накопленный счётчик. Отдельный период отбора, как у заказов и корзин, для него не задан. Бонус наличия фиксированный — больший запас сам по себе не увеличивает его.

Настройка под ваш каталог

Если нужный порядок можно настроить средствами готового модуля, сначала стоит проверить этот вариант. Доработка собственной формулы имеет смысл, когда требуется объединить данные и исключения, которые выбранное решение не поддерживает.

Математическую формулу можно кастомизировать под задачи заказчика: добавить или убрать факторы, изменить коэффициенты, периоды отбора, пределы вклада, условия новинок и исключения. Наличие, отмена заказа или отметка комплекта могут иметь разный смысл у разных магазинов — формулу согласуем до подключения.

Часть коэффициентов скрипт читает из настроек в инфоблоке. Периоды, веса заказов, предел их вклада, правила новинок и понижения заданы в коде. Готовой панели для управления всеми условиями здесь нет. Способ управления настройками тоже можно доработать под проект.

Начинать стоит с задачи: что должно влиять на порядок товаров и какие группы не должны занимать первые позиции. Затем проверять результат на данных каталога. Сам по себе большой итоговый балл не доказывает, что товар лучше подходит покупателю.

Математическая формула

Формулу текущего расчёта можно записать через переменные. Буквы ниже обозначают данные товара и параметры настройки; конкретные значения согласуем под задачи магазина.

A = S + k_b × C + V + D + K + H + F

  • S — вклад строк заказов за период T_o; C — число строк корзин без заказа за период T_b; k_b — вес строки корзины.
  • V — бонус видео; D — бонус наличия; K — бонус комплекта.
  • H — вклад просмотров; F — вклад избранного.

Вклад заказов ограничивается сверху:

S = min(w_p × p + w_c × c + w_o × (t − p − c), L)

t — все отобранные строки заказов товара и его предложений; p — строки оплаченных заказов; c — строки отменённых. w_p, w_c, w_o — соответствующие веса, L — верхний предел вклада заказов. Оплата и отмена могут пересекаться: строка с обоими признаками даёт w_p + w_c − w_o до применения предела L.

Остальные слагаемые:

  • Видео: V = γ × k_v при заполненном вертикальном видео; иначе k_v при обычном видео; иначе 0. Здесь γ — множитель вертикального видео.
  • Наличие: D = k_d при положительном суммарном остатке товара и предложений; иначе 0.
  • Комплект: K = k_k при заполненном признаке комплекта; иначе 0.
  • Просмотры: H = k_h × min(h, h₀) + (k_h / 2) × max(h − h₀, 0). Здесь h — неотрицательный счётчик просмотров, h₀ — порог, после которого вес следующего просмотра уменьшается вдвое.
  • Избранное: F = k_f × f, где f — прочитанное из свойства количество добавлений.

Если значение свойства материала попадает под правило понижения, базовый балл B = max(0, A − Q), где Q — величина понижения. Для остальных товаров B = A.

Пусть M = max(B_i) среди товаров вне понижаемого раздела и его подразделов. Если таких товаров нет, M = 0. Через M рассчитывается прибавка отмеченной новинке:

  • N = round(α × M), если отметка заполнена и возраст карточки a ≤ τ₁.
  • N = round(β × M), если отметка заполнена и τ₁ < a ≤ τ₂.
  • N = 0 во всех остальных случаях.

α и β — коэффициенты прибавки, τ₁ и τ₂ — границы периодов, где τ₁ < τ₂. Возраст и границы измеряются в одинаковых единицах. При α > β прибавка уменьшается по мере старения карточки. Свежая дата без отметки бонуса не даёт.

R = max(0, B + N − P)

P — индивидуальное понижение для выбранных товаров; для остальных P = 0. Итоговый рейтинг Z = R, а для товаров понижаемого раздела и его подразделов — Z = round(R / d), где d > 1 — делитель. Функция round означает округление до целого.

Так понижение раздела применяется ко всему баллу, включая прибавку новинки. Оно не закрепляет позиции: товар из этой группы всё ещё может оказаться выше другого товара с меньшим рейтингом. Бонус новинки тоже не гарантирует первое место.

Как рейтинг попадает в каталог

  1. Скрипт читает данные заказов, корзин и активных товаров.
  2. Рассчитывает общий балл с учётом бонусов и понижений.
  3. Записывает результат в числовое свойство POPULAR.
  4. Каталог использует это свойство для сортировки — если соответствующий порядок подключён в его компоненте.

Подключение проверяется для конкретного шаблона. Пересчёт можно запускать из консоли или администратору Битрикса через браузер. Расписание на сервере настраивается отдельно; расчёт при каждом действии посетителя в скрипте не предусмотрен.

После пересчёта очищается кэш. Если сортировка по рейтингу подключена, каталог показывает обновлённый порядок товаров.

После запуска формируется выгрузка в TXT: таблица с разделением столбцов табуляцией, отсортированная по убыванию рейтинга. В ней — товары, итоговый балл, часть исходных показателей и прибавок. По выгрузке можно проверить лидеров и действие отдельных правил. Это не полная расшифровка всех слагаемых: например, просмотры показаны счётчиком, без отдельной колонки их взвешенного вклада.

Выгрузку можно передать нейросети вместе с формулой и значениями коэффициентов. Попросите выделить товары с необычным сочетанием показателей и составить вопросы для проверки весов. Такой анализ выполняется отдельно — встроенного обращения к нейросети в скрипте нет. Предложения по изменению формулы проверяются на данных магазина до применения.

Ограничения расчёта

  • Качество результата зависит от данных магазина. Скрипт не очищает просмотры и избранное от ботов или накрутки. Если счётчики и свойства неточны, они влияют на балл.
  • Рейтинг общий для товаров. Он не подстраивает каталог под каждого посетителя и не оценивает соответствие поисковому запросу.
  • Нагрузка требует проверки. Текущий файл пересчитывает активный каталог целиком и выполняет запросы внутри циклов. Время работы нужно измерить на вашем объёме данных.
  • Обычный запуск меняет свойство рейтинга. Встроенного режима предпросмотра без записи и общего транзакционного отката пересчёта нет. Проверку новой формулы проводят на тестовой копии.
  • Отчёты содержат данные каталога и активности. Место хранения, доступ к файлам и срок их удаления нужно настроить под проект.

Сначала проверяют, какие товары оказались в начале списка и почему, как работают новинки и исключения. Влияние на покупки оценивают отдельно после подключения сортировки. Рассчитанный рейтинг сам по себе не подтверждает рост продаж.

Что нужно для подключения

Что проверитьДля чего
Каталог и предложенияСвязи основных товаров с вариантами, свойства, остатки и правила активности
Заказы и счётчикиСтатусы, периоды отбора, просмотры и избранное; при нескольких сайтах — границы данных для расчёта
Шаблон каталогаТекущую сортировку и возможность использовать рассчитанное свойство
СерверСовместимость PHP и модулей Битрикса, консольный запуск, расписание, ресурсы и схему кэширования
Тестовая копия и отчётыПроверку формулы до изменения рабочего каталога и закрытый доступ к результатам

Текущий скрипт использует модули инфоблоков, каталога и интернет-магазина. Их версии, структуру проекта и доступные ресурсы проверяю перед адаптацией. Совместимость с любым шаблоном или хостингом заранее не обещаю.

Как проходит внедрение

  1. Проверяю проект по требованиям выше и согласую задачу сортировки.
  2. Согласуем математическую формулу и примеры ожидаемого порядка товаров.
  3. Адаптирую расчёт, проверяю результат и нагрузку на тестовой копии.
  4. Подключаю сортировку и расписание, передаю порядок настройки и контроля.

Перед изменениями создаю резервную копию. Состав работ, стоимость и сроки согласуем после проверки проекта. Дальнейшие изменения формулы, новые функции и сопровождение обсуждаются отдельно.

Обсудить рейтинг товаров для вашего магазина — контакты внизу страницы.

ЧТО
ДЕЛАЕМ?

Напишите в удобный канал, пришлите адрес сайта
и опишите, что нужно создать, изменить или исправить.
Стоимость определю после обсуждения.

01 / МЕССЕНДЖЕРMAXНаписать в MAX 02 / МЕССЕНДЖЕРTelegram@Fomichev 03 / ЭЛЕКТРОННАЯ ПОЧТАПочтаfomandrey@mail.ru