Свойства заказа в Битрикс24 — это то, что превращает набор товаров в готовую сделку: ФИО, телефон, адрес доставки, комментарий, ИНН. За их описание отвечает sale.property, а за конкретные значения в заказе — sale.propertyvalue. Разбираем модель данных и запросы.
Зачем нужны свойства заказа
В модели онлайн-магазина Битрикс24 заказ (sale.order) хранит состав корзины и суммы, но не содержит контактных и логистических данных покупателя напрямую. Всё это — свойства заказа. Они делятся на два уровня:
- Описание свойства — шаблон поля: имя, тип, обязательность, привязка к типу плательщика. Это методы группы
sale.property.*. - Значение свойства — то, что реально введено в конкретном заказе. Это
sale.propertyvalue.*.
Такое разделение позволяет один раз описать поле «Телефон» и переиспользовать его во всех заказах. При создании заказа через sale.order.add значения свойств передаются в блоке propertyValues, а позднее их можно читать и менять точечно через sale.propertyvalue.
catalog.product) и пользовательскими полями CRM. sale.propertyvalue относится строго к сущности заказа интернет-магазина Битрикс24.Модель данных: property и propertyvalue
Чтобы значение сохранилось корректно, оно должно ссылаться на существующее описание свойства. Связь идёт через поле orderPropsId в значении, которое указывает на id из sale.property.
| Сущность | Метод | Ключевые поля |
|---|---|---|
| Описание свойства | sale.property.* | id, personTypeId, type, code, required, name |
| Значение свойства | sale.propertyvalue.* | id, orderId, orderPropsId, code, name, value |
| Группа свойств | sale.propertygroup.* | id, personTypeId, name, sort |
| Варианты (для ENUM) | sale.propertyvariant.* | id, orderPropsId, value, description |
Поле personTypeId (тип плательщика — физлицо, юрлицо) связывает свойство с определённой группой покупателей. Набор доступных типов возвращает sale.persontype.list.
Методы sale.propertyvalue
Группа реализует стандартный CRUD плюс служебные методы:
sale.propertyvalue.add— добавить значение к заказу;sale.propertyvalue.get— получить по id;sale.propertyvalue.list— выборка с фильтром и сортировкой;sale.propertyvalue.update— обновить значение;sale.propertyvalue.delete— удалить значение;sale.propertyvalue.modify— пакетное приведение набора значений заказа к переданному состоянию (лишние удаляются, недостающие добавляются);sale.propertyvalue.getfields— описание полей и их атрибутов.
Примеры запросов
Добавление значения свойства «Телефон» к заказу 145:
POST https://portal.bitrix24.ru/rest/1/xxxxx/sale.propertyvalue.add.json
{ "fields": { "orderId": 145, "orderPropsId": 12, "value": "+7 900 000-00-00" } }Ответ вернёт объект propertyValue с присвоенным id. Выборка всех значений заказа:
sale.propertyvalue.list?filter[=orderId]=145&select[]=id&select[]=orderPropsId&select[]=valueОбновление одного значения:
sale.propertyvalue.update?id=301&fields[value]=Москва, ул. Ленина, 1Массовое приведение свойств заказа к состоянию (метод modify):
{ "order": { "id": 145 }, "propertyValues": [ { "orderPropsId": 12, "value": "+7 900 000-00-00" }, { "orderPropsId": 13, "value": "ivan@example.com" } ] }
Типы свойств и форматы значений
Формат поля value зависит от типа свойства, заданного в sale.property:
| Тип (type) | Что хранит | Формат value |
|---|---|---|
| STRING | Текст (ФИО, адрес) | строка |
| NUMBER | Число | число или строка |
| Y/N | Флаг | Y или N |
| DATE | Дата | ISO 8601 |
| ENUM | Выбор из вариантов | id варианта из sale.propertyvariant |
| LOCATION | Местоположение | код местоположения |
| FILE | Файл | идентификатор загруженного файла |
Для свойств типа ENUM нельзя передавать текст варианта — только его идентификатор. Список допустимых вариантов конкретного свойства даёт sale.propertyvariant.list с фильтром по orderPropsId.
Группы, варианты и привязки
Свойства объединяются в группы для отображения в форме оформления. Порядок и состав задаются вспомогательными методами:
sale.propertygroup.*— группы полей внутри одного типа плательщика;sale.propertyvariant.*— варианты выбора для ENUM-свойств;sale.propertyrelation.*— привязка свойства к платёжным системам или службам доставки, чтобы поле показывалось только при их выборе.
Через sale.propertyrelation удобно, например, показывать поле «Номер офиса» только для доставки в пункт выдачи, а «ИНН» — только для типа плательщика «Юридическое лицо». Это уменьшает число обязательных полей и снижает отказы на оформлении.
required: Y, заказ без соответствующего значения не пройдёт валидацию. При интеграции внешнего источника заказов заранее сверьте набор обязательных полей через sale.property.list.Практические нюансы
Несколько моментов, которые экономят часы отладки:
- orderPropsId, а не code. В значениях связь идёт по числовому идентификатору свойства. Поле
codeудобно для чтения, но полагаться при записи стоит наorderPropsId. - Права доступа. Для методов
sale.*приложению или вебхуку нужны праваsale(Онлайн-магазин). Без них сервер вернёт ошибку доступа. - Согласованность с order.add. При первичном создании заказа передавайте свойства сразу в
propertyValuesметодаsale.order.add, а точечное редактирование делайте черезsale.propertyvalue. - Пакетность. Массовые операции удобно оборачивать в
batch, чтобы уложиться в лимиты и уменьшить количество round-trip.
Итог
Свойства заказа в Битрикс24 живут на двух уровнях: описание (sale.property) задаёт правила, а sale.propertyvalue хранит конкретные значения покупателя. Ключ к корректной записи — связь через orderPropsId и правильный формат value под тип свойства. Метод modify упрощает синхронизацию, а группы, варианты и привязки формируют логику формы оформления.
Когда заказы приходят из внешнего сайта, 1С или маркетплейса, важно, чтобы карта полей совпадала на обеих сторонах и обязательные свойства всегда заполнялись. Мы проектируем такие обмены и REST-интеграции с Битрикс24 под ключ — от карты соответствия полей до обработки ошибок и очередей.
Частые вопросы
Чем отличается sale.property от sale.propertyvalue?
sale.property описывает свойство заказа как шаблон поля (имя, тип, обязательность), а sale.propertyvalue хранит конкретное значение этого свойства в отдельном заказе.
Как связать значение с нужным свойством?
Через поле orderPropsId в значении, которое должно равняться id записи из sale.property. Именно по этому идентификатору Битрикс24 понимает, к какому полю относится значение.
Можно ли задать свойства сразу при создании заказа?
Да, значения передаются в блоке propertyValues метода sale.order.add. Отдельные вызовы sale.propertyvalue нужны для последующего редактирования.
Как передать значение свойства типа ENUM?
В поле value указывается идентификатор варианта из sale.propertyvariant, а не его текст. Список вариантов получают методом sale.propertyvariant.list с фильтром по orderPropsId.
Для чего нужен метод modify?
Он приводит набор значений заказа к переданному состоянию: недостающие добавляет, лишние удаляет, существующие обновляет. Это удобно при синхронизации с внешним источником.
Какие права нужны для этих методов?
Приложению или вебхуку требуется право sale (Онлайн-магазин). Без него методы группы sale.propertyvalue вернут ошибку доступа.
Как показывать свойство только для юрлиц?
Привяжите свойство к нужному типу плательщика через personTypeId, а зависимость от платёжной системы или доставки задайте через sale.propertyrelation.
Поможем с настройкой и поддержкой Для разработчиков
Поможем с настройкой, доработкой и поддержкой Для разработчиков.