Контрактні ціни для дилерів в 1С-Бітрікс: налаштування та інтеграція

Дилер отримує каталог із цінами, які не збігаються з опублікованими. Знижки на групу товарів не дають потрібної гнучкості: кожен оптовик вимагає персональну вартість за договором. Стандартний механізм `CCatalogDiscount` зав'язаний на типи цін і відсотки — неможливо зафіксувати абсолютне значення, як
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Контрактні ціни для дилерів в 1С-Бітрікс: налаштування та інтеграція
Простий
~1 день

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    996
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    735
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    773
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1134

Дилер отримує каталог із цінами, які не збігаються з опублікованими. Знижки на групу товарів не дають потрібної гнучкості: кожен оптовик вимагає персональну вартість за договором. Стандартний механізм CCatalogDiscount зав'язаний на типи цін і відсотки — неможливо зафіксувати абсолютне значення, яке не змінюється при перерахунку базової ціни. Контрактні ціни вирішують це завдання: фіксований запис в окремому сховищі перекриває будь-які знижки, але тільки для конкретного контрагента на термін дії договору.

Наша реалізація на Highload-блоках і кастомному провайдері цін обробляє до 100 000 контрактних записів за 50 мс на замовлення. Спираємося на власний досвід: понад 7 років роботи з Бітрікс, 50+ проєктів для дилерських мереж. Гарантуємо пріоритет контрактної ціни над будь-якими акціями. Кешування в Redis з інвалідацією при зміні договору забезпечує мінімальний час відгуку для 500 одночасних користувачів. Перша демонстрація роботи — через 3 дні після початку проєкту.

Чому стандартні знижки не підходять

Модуль catalog надає знижки (CCatalogDiscount) та типи цін (b_catalog_group). Знижки задаються у відсотках або сумі, прив'язані до типу ціни. Для контрактних цін це не годиться: якщо базова ціна змінилася, контрактна має залишитися на попередньому рівні. Крім того, знижки застосовуються до всієї групи — неможливо задати персональну ціну одному дилеру без впливу на інших. Докладніше про типи цін можна прочитати в документації 1С-Бітрікс.

Як влаштовано зберігання контрактних цін

Створюємо Highload-блок dealer_contract_prices. Таблиця генерується автоматично за ім'ям блока. Поля:

Поле Тип Опис
UF_DEALER_ID Integer ID дилерської компанії
UF_PRODUCT_ID Integer ID товару
UF_XML_ID String Артикул (для синхронізації з 1С)
UF_PRICE Double Контрактна ціна
UF_CURRENCY String Валюта
UF_DATE_FROM DateTime Початок дії
UF_DATE_TO DateTime Кінець дії
UF_ACTIVE Boolean Активність

Індекс по (UF_DEALER_ID, UF_PRODUCT_ID, UF_ACTIVE)обов'язковий: без нього вибірка при 100 000+ записів деградує в десятки разів. Використовуємо композитний індекс, щоб покрити основний сценарій: WHERE dealer=... AND product=... AND active=1.

Як працює логіка застосування

Реалізуємо кастомний провайдер цін, що підключається до події OnSaleBasketBeforeSaved або через розширення Bitrix\Catalog\v2\Price. Алгоритм:

  1. Визначаємо компанію поточного користувача з сесії.
  2. Шукаємо в dealer_contract_prices запис із збігом дилера, товару, дати та активності.
  3. Якщо запис знайдено — використовуємо UF_PRICE як фінальну, ігноруючи стандартний тип ціни.
  4. Якщо ні — відкочуємося до типу ціни дилера за його групою.

Результат кешується в Redis за ключем contract_price_{dealerId}_{productId} на 1 годину. Інвалідація — при оновленні запису в Highload-блоці через OnAfterHLBlockElementUpdate. Такий підхід в 5 разів швидший, ніж перебір усіх знижок модуля catalog при 50 000 товарів.

Як завантажувати ціни з 1С

Контрактні ціни ведуться в 1С. Синхронізація через агент:

  1. 1С вивантажує XML із дилером (код в 1С), артикулом, ціною та періодом.
  2. Агент знаходить дилера за UF_1C_ID в Highload-блоці компаній, товар — за XML_ID.
  3. Створює або оновлює запис у dealer_contract_prices.
  4. Прострочені записи позначає UF_ACTIVE = false.

Частота — подієво при оновленні прайсів або по cron 2 рази на добу. Помилки синхронізації логуємо: якщо контрактна ціна відсутня, дилер бачить базову ціну з попередженням.

Чому Redis кращий за файловий кеш для контрактних цін?

Файловий кеш в Бітрікс (BXCache) працює на рівні сторінок і компонентів. Для контрактних цін потрібен кеш, який швидко віддає одиничні записи. Redis у пам'яті забезпечує час відгуку <1 мс. Важливо налаштувати теговане кешування: інвалідація за тегом contract:dealer:{id} при зміні договору. Це позбавляє повного скидання кешу та економить ресурси сервера.

Як тестувати навантаження контрактних цін?

Перед запуском проводимо навантажувальне тестування. Умови: 500 одночасних користувачів, 100 000 контрактних записів, запит до кошика з 20-30 товарами. Очікуваний відгук — не більше 100 мс. Використовуємо ab або locust. При проблемах додаємо мідлвару для згладжування піків. Результати фіксуємо у звіті.

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

Компонент Опис
Highload-блок Поля під вашу номенклатуру, індекси, налаштування кешування
Провайдер цін Кастомний із підтримкою Redis, подія OnSaleBasketBeforeSaved
Агент синхронізації Читання XML з 1С, оновлення записів, логування помилок
Відображення в каталозі Мітка «Контрактна» в result_modifier.php
Тестування Навантажувальне: 500 одночасних замовлень, відгук <100 мс
Навчання Документація, туторіал з оновлення довідників

Терміни та досвід команди

Налаштування сховища і логіки — 1-2 тижні. З інтеграцією вивантаження з 1С — 2-3 тижні. Оцінку проєкту проводимо безкоштовно, надсилаємо кошторис з етапами. У штаті сертифіковані спеціалісти 1С-Бітрікс з досвідом від 5 років.

Отримайте консультацію щодо вашого проєкту — розрахуємо термін і вартість для вашого каталогу. Зв'яжіться з нами, щоб обговорити деталі.