Создание сайтов на 1С Битрикс стало еще просто, используйте готовые шаблоны! Подключайте современные модули, делая ваш сайт еще эффективнее!
Например, парсер сайтов

Подбор по совместимости

16 900 i
Заказать
Оформление заказа
х
В наличии
ПОДБОР ТОВАРОВ ПО МОДЕЛИ И ГОДУ

«Подбор по совместимости» добавляет на сайт отдельный подбор товаров и блок совместимости в карточке товара. Покупатель выбирает, например, марку, модель и поколение автомобиля или производителя и модель принтера. Магазин настраивает от одного до четырёх уровней дерева и их названия, при необходимости включает выбор года выпуска.

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

ЧЕТЫРЕ ВИДА СОВМЕСТИМОСТИ

E — подходит точно; A — аналог; M — подходит с доработкой или оговоркой; N — не подходит. Связи можно задавать на разных уровнях дерева. Запрет на выбранном узле или его предке исключает товар для этого выбора. Годы связи ограничивают применимость; если они не заданы, используются годы узла. Примечание позволяет указать, например, необходимость переходника.

В карточке товара компонент выводит список применимости и ответ для выбранной покупателем модели. При включённом запоминании выбор хранится в cookie браузера; доступны недавние модели. Выбор можно передать ссылкой на страницу подбора.

ЗАГРУЗКА СВЯЗЕЙ ИЗ CSV

CSV распознаётся по заголовкам: товар определяется по ID или артикулу, модель — по пути кодов. Поддерживаются UTF-8 и Windows-1251, разделители «;», запятая и табуляция. Многострочное примечание сохраняется, если поле заключено в кавычки. Предел файла — 8 MiB, обработки — 50 000 записей.

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

ОТЧЁТ ПО СПРОСУ

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

ТРЕБОВАНИЯ

Главный модуль main версии 20.0.0 или новее, модуль iblock («Информационные блоки»), PHP 8.2 или новее. Поддерживаются MySQL и PostgreSQL в конфигурации, совместимой с установленной версией 1С-Битрикс. Данные и настройки хранятся на сайте.
УСТАНОВКА И НАСТРОЙКИ

1. Проверьте требования: main 20.0.0+, установленный iblock, PHP 8.2+. Сделайте резервную копию сайта и базы. Установите ozhogov.compat через раздел установленных решений Маркетплейса.
2. Установщик создаёт таблицы, копирует компоненты, скрипты и административные страницы, регистрирует обработчики событий и агент. Публичную страницу подбора он не создаёт: добавьте её самостоятельно.
3. В настройках модуля выберите инфоблок товаров, при необходимости раздел каталога и свойство артикула (например, CML2_ARTICLE). Задайте от одного до четырёх названий уровней, включите нужные параметры выбора года, запоминания модели, журнала и срока хранения.
4. Назначьте сотрудникам права на модуль: R — чтение, W — изменение. Публичный список товаров также учитывает права чтения элементов каталога, активность и сроки показа.
5. В разделе «Магазин → Подбор по совместимости» заведите дерево и связи товаров либо загрузите CSV. При создании узла не превышайте настроенное число уровней. Скрытие родителя скрывает его ветку из публичного выбора.

КОМПОНЕНТЫ НА САЙТЕ

На отдельной публичной странице после подключения штатного header.php разместите:

<?php
$APPLICATION->IncludeComponent("ozhogov:compat.selector", "", [
   "SHOW_PRODUCTS" => "Y",
   "COUNT" => "24",
   "SHOW_RECENT" => "Y",
   "COMPACT" => "N",
   "SET_TITLE" => "Y",
]);
?>

В шаблоне детальной карточки товара используйте фактический ID элемента из результата компонента каталога:

<?php
$APPLICATION->IncludeComponent("ozhogov:compat.product", "", [
   "PRODUCT_ID" => (int)$arResult["ID"],
   "SHOW_LIST" => "Y",
   "SHOW_CHECK" => "Y",
]);
?>

Не подставляйте фиксированный демонстрационный ID для всех карточек. Если шаблон использует другое имя переменной результата, передайте из него ID текущего товара.

ЗАГРУЗКА CSV

Откройте «Загрузка файлом». Пример файла:

product_id;model;fit;years;note
123;toyota/camry/xv70;M;2017-2024;"Нужен переходник"

Вместо 123 укажите ID существующего товара вашего каталога, а в model — путь кодов узлов. Можно использовать колонку article вместо product_id. Виды: E, A, M, N. Годы: диапазон, отдельный год, «с 2019», «до 2015». Кодировка — UTF-8 или Windows-1251; предел — 8 MiB и 50 000 записей. Переносы строки в note допустимы внутри кавычек.

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

АГЕНТ И ОБНОВЛЕНИЕ

В списке агентов проверьте активный вызов \Ozhogov\Compat\Agent::cleanup(); с интервалом 86400 секунд. Он чистит журнал по сроку хранения из настроек, удаляет связи отсутствующих товаров и пересчитывает счётчики. Выполнение зависит от настройки агентов сайта на хитах или cron.

Обновляйте модуль штатным способом через Маркетплейс: updater.php переносит копии компонентов, скриптов и административных обёрток в общие каталоги сайта и регистрирует обработчик удаления товара, если его ещё нет.

При ручной замене файлов модульного каталога updater сам не выполняется. В доверенном служебном PHP-скрипте с подключённым прологом Битрикса выполните копирование файлов:

<?php
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/ozhogov.compat/install/index.php";
(new ozhogov_compat())->InstallFiles();

$events = \Bitrix\Main\EventManager::getInstance();
$registered = false;
foreach ($events->findEventHandlers("iblock", "OnAfterIBlockElementDelete", ["ozhogov.compat"]) as $handler) {
   if (strcasecmp(ltrim((string)($handler["TO_CLASS"] ?? ""), "\\"), "Ozhogov\\Compat\\EventHandler") === 0
       && strcasecmp((string)($handler["TO_METHOD"] ?? ""), "onElementDelete") === 0) {
       $registered = true;
       break;
   }
}
if (!$registered) {
   $events->registerEventHandlerCompatible(
       "iblock", "OnAfterIBlockElementDelete", "ozhogov.compat",
       "Ozhogov\\Compat\\EventHandler", "onElementDelete"
   );
}
?>

Этот вызов перезаписывает штатные копии в /bitrix/components/ozhogov/, /bitrix/js/ozhogov.compat/ и /bitrix/admin/. Сохраните собственные изменения этих копий заранее. Отдельно проверьте через EventManager::findEventHandlers наличие обработчика iblock → OnAfterIBlockElementDelete → Ozhogov\Compat\EventHandler::onElementDelete для модуля ozhogov.compat. Если записи нет, зарегистрируйте её один раз через EventManager::registerEventHandlerCompatible; не создавайте дубли. Одна замена файлов и InstallFiles обработчик не регистрируют.

ПРОВЕРКА РЕЗУЛЬТАТА

Откройте публичную страницу, выберите полный путь и год, проверьте подходящий товар, запрет N и примечание M в карточке. Убедитесь, что скрытая ветка и недоступные товары не показываются. Проверьте выбор модели после перехода в другую карточку, если запоминание включено. Выполните подбор с пустым результатом и проверьте журнал и отчёт с учётом ограничения повторов. После обновления проверьте новые копии компонентов, наличие обработчика удаления и состояние агента. Удалите временный служебный скрипт ручного обновления после использования.
Техническая поддержка решения оказывается разработчиком в течение срока действия лицензии.

— Электронная почта: nm.ozhogov@ya.ru
— Время ответа: в рабочие дни, в течение 48 часов с момента обращения.
— Часовой пояс: UTC+3 (Москва).

Чтобы вопрос решился с первого письма, приложите: название и версию решения, редакцию 1С-Битрикс и версию главного модуля, версии PHP и базы данных, адрес страницы, на которой воспроизводится проблема, последовательность действий для её повторения и снимок экрана с сообщением об ошибке. Если ошибка попала в журнал событий сайта, приложите запись из него.

В поддержку можно обращаться с вопросами по установке, настройке и обновлению решения, по совместимости с другими решениями и по ошибкам в его работе. Доработка решения под требования конкретного проекта в поддержку не входит и обсуждается отдельно.

x