Цена в Битрикс24 — это отдельная запись, привязанная к товару и типу цены. Один товар может иметь розничную, оптовую и партнёрскую цены одновременно. За значения отвечает группа catalog.price, а за справочник типов — catalog.priceType.
Как устроены цены в каталоге
В Битрикс24 у товара нет единственного поля «цена». Вместо этого есть множество ценовых записей, каждая из которых указывает:
- к какому товару относится —
productId; - к какому типу цены —
catalogGroupId; - само значение и валюту —
price,currency.
Такая модель позволяет вести разные цены для разных сегментов покупателей и настраивать их видимость по правам. Базовый тип цены создаётся автоматически, остальные добавляются через catalog.priceType.
purchasingPrice) хранится в самом товаре и не является записью catalog.price. Продажные цены — это всегда отдельные записи с типом цены.Типы цен: catalog.priceType
Тип цены (ценовая группа) описывает назначение цены: розница, опт, для партнёров. Управляется методами:
catalog.priceType.list— список типов с ихidиname;catalog.priceType.add— создать тип цены;catalog.priceType.get/update/delete— управление.
Идентификатор из этого справочника подставляется в поле catalogGroupId ценовой записи. У каждого типа есть символьный код (name, например BASE) — базовый тип обычно называется именно так.
| Метод | Назначение |
|---|---|
| catalog.priceType.list | Получить типы цен портала |
| catalog.priceType.add | Добавить новый тип (опт, партнёр) |
| catalog.price.list | Получить цены товаров |
| catalog.price.add | Задать цену товару |
Поля ценовой записи
| Поле | Назначение |
|---|---|
| id | Идентификатор цены |
| productId | Товар (id из catalog.product) |
| catalogGroupId | Тип цены (id из catalog.priceType) |
| price | Значение цены |
| currency | Валюта (RUB, USD, ...) |
| quantityFrom | Нижняя граница количества (для оптовых цен) |
| quantityTo | Верхняя граница количества |
Поля quantityFrom и quantityTo задают ценовые диапазоны — механизм оптовых цен, когда стоимость единицы зависит от объёма закупки.
Примеры запросов
Установка базовой цены товару 920:
POST https://portal.bitrix24.ru/rest/1/xxxxx/catalog.price.add.json
{ "fields": { "productId": 920, "catalogGroupId": 1, "price": 1490, "currency": "RUB" } }Добавление оптовой цены от 10 штук:
catalog.price.add?fields[productId]=920&fields[catalogGroupId]=2&fields[price]=1290&fields[currency]=RUB&fields[quantityFrom]=10Обновление существующей цены:
catalog.price.update?id=3300&fields[price]=1390Выборка всех цен товара:
catalog.price.list?filter[=productId]=920&select[]=id&select[]=catalogGroupId&select[]=price
Ценовые диапазоны и опт
Оптовые цены реализуются набором записей одного типа цены с разными диапазонами количества:
- 1–9 штук — базовая цена;
- 10–49 штук — цена ниже (
quantityFrom=10,quantityTo=49); - от 50 штук — минимальная цена (
quantityFrom=50).
Битрикс24 выбирает подходящую цену по количеству товара в корзине. Важно не допускать пересечения диапазонов внутри одного типа цены, иначе выбор станет неоднозначным.
quantityTo одного диапазона был меньше quantityFrom следующего. Перекрытие приводит к непредсказуемому расчёту цены.Округление и дополнительные цены
Помимо базовой ценовой модели, есть связанные механизмы:
catalog.roundingRule.*— правила округления цен по типу цены и валюте;catalog.extra.*— наценки, применяемые к базовой цене для расчёта производных цен.
Правила округления полезны, когда после конвертации валют или расчёта наценок нужно приводить цены к «красивым» значениям. Наценки позволяют не хранить каждую цену вручную, а вычислять её как процент от базовой.
Практика синхронизации цен
- Права catalog. Все ценовые методы требуют разрешения
catalog. - Проверяйте тип цены. Перед записью получайте актуальный
catalogGroupIdчерезcatalog.priceType.list— идентификаторы отличаются между порталами. - update vs add. Чтобы не плодить дубли, ищите существующую цену по
productIdиcatalogGroupIdи обновляйте её вместо повторного add. - Валюта. Указывайте
currencyявно — молчаливое расхождение валют искажает витрину. - Batch. Массовое обновление цен оборачивайте в
batchс учётом лимитов API.
Итог
Цена в Битрикс24 — отдельная запись catalog.price, связывающая товар (productId) с типом цены (catalogGroupId) и значением. Типы цен ведёт catalog.priceType, оптовые цены реализуются диапазонами количества, а округление и наценки — вспомогательными методами. Ключ к чистой витрине — сверка идентификаторов типов цен и отсутствие пересечений диапазонов.
Регулярная выгрузка цен из 1С или ERP с несколькими типами цен, валютами и оптовыми правилами требует надёжного обмена с дедупликацией и логированием. Мы разрабатываем и сопровождаем такие интеграции и модули обмена данными для Битрикс24.
Частые вопросы
Может ли товар иметь несколько цен?
Да, у товара есть отдельная запись catalog.price для каждого типа цены — розничная, оптовая, партнёрская. Все они привязаны к одному productId, но к разным catalogGroupId.
Что такое catalogGroupId?
Это идентификатор типа цены из справочника catalog.priceType. Он определяет, к какому назначению относится цена: базовая, оптовая, для определённого сегмента.
Как узнать доступные типы цен?
Список типов с их идентификаторами и кодами возвращает catalog.priceType.list. Базовый тип обычно имеет символьный код BASE.
Как задать оптовую цену от определённого количества?
Создайте ценовую запись с полями quantityFrom и quantityTo. Битрикс24 подберёт цену по количеству товара в корзине.
Где хранится закупочная цена?
Закупочная цена purchasingPrice хранится в самом товаре и задаётся через catalog.product, а не через catalog.price. Продажные цены — это всегда отдельные записи.
Как обновить цену, не создавая дубль?
Найдите существующую запись по productId и catalogGroupId через catalog.price.list, затем измените её методом catalog.price.update по id.
Какие права нужны для методов цен?
Вебхуку или приложению требуется разрешение catalog. Без него методы catalog.price и catalog.priceType вернут ошибку доступа.
Поможем с настройкой и поддержкой Для разработчиков
Поможем с настройкой, доработкой и поддержкой Для разработчиков.