Налаштування списку обраного у 1С-Бітрикс
Список обраного (закладки, wishlist) — немає вбудованого стандартного компонента в ядрі Бітрикс, який реалізував би повноцінний wishlist зі зберіганням у базі даних. Функціональність реалізується через механізм «Відкладених товарів» модуля sale або через кастомну розробку з використанням UserFieldManager або окремої таблиці.
Варіант 1: Відкладені товари (вбудований механізм)
Модуль sale має вбудований механізм «відкладених» позицій корзини. Товар додається в корзину з прапором DELAY = Y. Технічно це рядок у b_sale_basket з ознакою відкладеного:
// Додати товар в відкладені
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(
\Bitrix\Sale\Fuser::getId()
);
$item = $basket->createItem('catalog', $productId);
$item->setFields([
'QUANTITY' => 1,
'DELAY' => 'Y',
'NAME' => $productName,
'PRICE' => $price,
'CURRENCY' => 'RUB',
]);
$basket->save();
Компонент bitrix:sale.basket.basket виводить відкладені товари при параметрі SHOW_DELAY = Y.
Мінус: відкладені товари — частина корзини, а не окремий список. При очищенні корзини теряються.
Варіант 2: Кастомний список обраного
Для повноцінної функціональності: зберігання між сесіями, синхронізація між пристроями, список незалежний від корзини — потрібна окрема таблиця або використання користувацьких полів.
Структура таблиці user_favorite_products:
CREATE TABLE user_favorite_products (
ID SERIAL PRIMARY KEY,
USER_ID INT NOT NULL,
PRODUCT_ID INT NOT NULL,
DATE_ADD TIMESTAMP DEFAULT NOW(),
UNIQUE(USER_ID, PRODUCT_ID)
);
ORM-клас через DataManager дозволяє працювати з таблицею через стандартний Bitrix API. AJAX-ендпоінт для додавання/видалення — через \Bitrix\Main\Engine\Controller.
Для гостей: зберігання в localStorage
Для незареєстрованих користувачів список обраного зручніше зберігати в localStorage браузера. При авторизації — синхронізувати з базою через AJAX. Це стандартний підхід для сучасних магазинів.
Компонент та UI
Кнопка «В обране» розташовується в шаблоні карточки товара та листингу. Стан кнопки (доданий/не доданий) керується JavaScript-класом на основі даних, переданих в компонент або отриманих через AJAX.
Терміни виконання
Обране через механізм відкладених товарів — 2–4 години. Повноцінний кастомний список з синхронізацією гість/авторизований — 1–2 робочих дні.







