Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Типы данных и структура объектов в REST API CRM», проанализируем лучшие практики и покажем, как правильно использовать битрикс в реальных задачах.
Типы данных и структура объектов в REST API CRM
- Сделать ссылки с catalog_product.id и catalog_measure.code на справочник, когда появится
Базовые типы данных перечислены в отдельной статье.
В этой статье рассмотрим типы данных и структуру объектов, характерные именно для crm.
Типы данных
| Тип | Описания и значения |
|---|---|
crm_status | Строковый идентификатор элемента справочника CRM (например, NEW). Получить возможные значения конкретного справочника можно с помощью метода crm.status.list с фильтром по ENTITY_ID. |
crm_lead | Целочисленный идентификатор лида CRM. Получить информацию о лиде можно с помощью метода crm.lead.get. |
crm_deal | Целочисленный идентификатор сделки CRM. Получить информацию о сделке можно с помощью метода crm.deal.get. |
crm_contact | Целочисленный идентификатор контакта CRM. Получить информацию о контакте можно с помощью метода crm.contact.get. |
crm_company | Целочисленный идентификатор компании CRM. Получить информацию о компании можно с помощью метода crm.company.get. |
crm_quote | Целочисленный идентификатор коммерческого предложения CRM. Получить информацию о коммерческом предложении можно с помощью метода crm.quote.get. |
crm_category | Целочисленный идентификатор воронки (направления) CRM. Получить информацию о воронке (направлении) можно с помощью метода crm.category.get |
crm_entity | Целочисленный идентификатор элемента некоторого объекта CRM. Поля с таким типом явно содержат в себе информацию к какому объекту CRM они принадлежат. Например, поля вида parentId{entityTypeId}, содержат внутри своего названия идентификатор типа сущности CRM. Получить информацию об элементе можно с помощью метода crm.item.get передав entityTypeId из названия поля и id из его значения |
lang_map | Объект формата:где |
crm_item_product_row | Целочисленный идентификатор товарной позиции объекта CRM. Получить идентификаторы товарных позиций можно с помощью метода crm.item.productrow.list |
crm_multifield | Объект, описывающий «множественное поле». Множественные поля применяются для хранения телефонов, email-адресов и другой контактной информации. В лидах, контактах и компаниях полями этого типа являются PHONE, EMAIL, WEB и IM. |
crm_currency | Объект, описывающий валюту |
crm_currency_localization | Объект, описывающий локализацию валюты |
crm_orderentity | Объект, описывающий связь CRM с заказами интернет-магазина |
type | Объект, описывающий пользовательский тип объекта CRM (смарт-процесс) |
type.relations | Объект, содержащий в себе связи к другим сущностям CRM |
relation | Объект, описывающий привязанный элемент CRM |
type.linkedUserFields | Объект, описывающий набор полей, в которых должен отображаться смарт-процесс |
Структура объектов
crm_multifield {#crm_multifield}
Значениетип | Описание |
|---|---|
IDinteger | Идентификатор значения множественного поля |
TYPE_IDstring | Тип множественного поля. Может принимать значения PHONE, EMAIL, WEB, IM, LINK |
VALUEstring | Строковое значение множественного поля |
VALUE_TYPEstring | Тип значения множественного поля. Может принимать значения WORK, MOBILE, FAX, HOME, PAGER, MAILING, OTHER для телефона,WORK, HOME, MAILING, OTHER для почты,WORK, HOME, fb, VK, LIVEJOURNAL, TWITTER, OTHER для сайта,fb, TELEGRAM, VK, SKYPE, VIBER, inst, BITRIX24, OPENLINE, IMOL, ICQ, MSN, JABBER, OTHER для мессенджера |
crm_item_product_row
Значениетип | Описание |
|---|---|
idinteger | Идентификатор товарной позиции |
ownerIdinteger | Идентификатор объекта CRM |
ownerTypestring | Идентификатор типа объекта CRM |
productIdcatalog_product.id | Идентификатор товара из каталога |
productNamestring | Название товара в товарной позиции |
pricedouble | Цена за единицу товарной позиции с учетом скидок и налогов |
priceAccountdouble | Стоимость за единицу товарной позиции с учетом скидок и налогов, сконвертированная в валюту отчетов |
priceExclusivedouble | Стоимость за единицу товарной позиции с учетом скидок, но без учета налогов |
priceNettodouble | Стоимость за единицу товарной позиции без учета скидок и без учета налогов |
priceBruttodouble | Стоимость за единицу товарной позиции с учетом налогов, но без учета скидок |
quantitydouble | Количество товара |
discountTypeIdinteger | Тип скидки Возможные значения: — 1 — абсолютное значение— 2 — процентное значение |
discountRatedouble | Значение скидки в процентах |
discountSumdouble | Абсолютное значение скидки |
taxRatedouble | Ставка налога в процентах |
taxIncludedstring | Индикатор того, включен ли налог в стоимость Возможные значения: — Y – налог включен— N – налог не включен |
customizedstring | Устаревшее |
measureCodecatalog_measure.code | Код единицы измерения |
measureNamestring | Текстовое представление единицы измерения (например — шт, кг, м, л и т.д.) |
sortinteger | Сортировка |
xmlIdstring | Внешний идентификатор товарной позиции |
typeinteger | Тип товара Возможные значения: — 1 — Простой товар— 2 — Комплект— 3 — Товар с торговыми предложениями— 4 — Торговое предложение— 5 — Торговое предложение, у которого нет товара (не указан или удален)— 6 — Специфический тип, означает невалидный товар с торговыми предложениями— 7 — Услуга |
storeIdinteger | Идентификатор склада |
crm_currency
Значениетип | Описание |
|---|---|
AMOUNTdouble | Курс обмена по отношению к базовой валюте Для базовой валюты всегда равен 1. Точность — 4 знака после запятой |
AMOUNT_CNTinteger | Номинал. Для базовой валюты всегда равен 1 |
BASEstring | Признак, является ли валюта базовой (Y/N) |
CURRENCYstring | Идентификатор валюты. Соответствует стандарту ISO 4217 |
DATE_UPDATEdatetime | Дата последнего изменения |
SORTinteger | Сортировка |
LIDstring | Код языка, для которого возвращаются параметры локализации |
DECIMALSinteger | Число десятичных знаков дробной части (параметр локализации) |
DEC_POINTstring | Десятичная точка при выводе (параметр локализации) |
FORMAT_STRINGstring | Шаблон формата (параметр локализации) |
FULL_NAMEstring | Название валюты (параметр локализации) |
THOUSANDS_SEPstring | Разделитель триад (параметр локализации) |
LANGobject | Локализации валюты. Объект со списком доступных локализаций в формате {"lang_1": "value_1", ... "lang_N": "value_N"}, где lang_N — идентификатор языка, а value — объект типа crm_currency_localization.Идентификатор языка — строка из двух латинских букв. Возможные значения смотрите в таблице идентификаторов языков |
crm_currency_localization
Значениетип | Описание |
|---|---|
DECIMALSinteger | Число десятичных знаков дробной части. Значение по умолчанию — |
DEC_POINTstring | Десятичная точка при выводе. Значение по умолчанию — |
FORMAT_STRINGstring | Шаблон формата. Должен содержать символ # — вместо него будет подставлено значение цены. Значение по умолчанию — Примеры шаблонов для суммы 1000: |
FULL_NAMEstring | Название валюты. Значение по умолчанию — |
HIDE_ZEROstring | Признак, скрывать незначащие нули или нет (Y/N).Значение по умолчанию — |
THOUSANDS_SEPstring | Разделитель триад. Значение по умолчанию — |
THOUSANDS_VARIANTstring | Код разделителя триад. Значение по умолчанию — При создании или изменении локализации, если указано значение для поля Если разделитель триад не нужен, необходимо явно передавать поле |
crm_orderentity
Значениетип | Описание |
|---|---|
OWNER_IDinteger | Идентификатор объекта CRM |
OWNER_TYPE_IDinteger | Идентификатор типа объекта CRM |
ORDER_IDsale_order.id | Идентификатор заказа |
type
Значениетип | Описание |
|---|---|
idinteger | Идентификатор смарт-процесса |
titlestring | Название смарт-процесса |
code string | Символьный код |
createdByinteger | Идентификатор пользователя, который создал данный смарт-процесс |
entityTypeIdinteger | Идентификатор типа сущности |
isCategoriesEnabledboolean | Включены ли свои воронки и туннели продаж |
isStagesEnabled boolean | Включено ли использование своих стадий и канбана |
isBeginCloseDatesEnabledboolean | Включены ли поля Дата начала и Дата завершения |
isClientEnabled boolean | Включено ли поле Клиент |
isUseInUserfieldEnabled boolean | Включено ли использование смарт-процесса в пользовательском поле |
isLinkWithProductsEnabledboolean | Включена ли привязка товаров каталога |
isMycompanyEnabled boolean | Включено ли поле Реквизиты вашей компании |
isDocumentsEnabled boolean | Включена ли печать документов |
isSourceEnabled boolean | Включены ли поля Источник и Дополнительно об источнике |
isObserversEnabled boolean | Включено ли поле Наблюдатели |
isRecyclebinEnabledboolean | Включено ли использование корзины |
isAutomationEnabledboolean | Включены ли роботы и триггеры |
isBizProcEnabled boolean | Включено ли использование дизайнера бизнес процессов |
isSetOpenPermissions boolean | Делать ли новые воронки доступными для всех |
isPaymentsEnabled boolean | Системное поле, которое показывает, включена ли возможность оплаты |
isCountersEnabled boolean | Системное поле, которое показывает, включена ли счётчики |
createdTime datetime | Системное поле, указывающее время создания смарт-процесса |
updatedTime datetime | Системное поле, указывающее на время изменения данного смарт-процесса |
updatedByinteger | Идентификатор пользователя, изменившего данный смарт-процесс |
relationsobject | Объект, содержащий в себе связи к другим сущностям CRM |
linkedUserFields object | Набор полей в которых должен отображаться данный смарт-процесс |
customSectionsarray | Список всех цифровых рабочих мест Параметр устарел. Для работы с цифровыми рабочими местами используйте методы |
customSectionIdinteger | Идентификатор цифрового рабочего места Параметр устарел. Для работы с цифровыми рабочими местами используйте методы |
type.relations
Значениетип | Описание |
|---|---|
parent relation[] | Элементы CRM, которые будут привязаны к данному смарт-процессу |
child relation[] | Элементы CRM, к котором будет привязан данный смарт-процесс |
relation
Значениетип | Описание |
|---|---|
entityTypeId integer | Идентификатор системного или пользовательского типа сущности CRM |
isChildrenListEnabledboolean | Добавлять ли связанный элемент в карточку |
isPredefined boolean | Является ли данная связь предустановленной (системной) |
type.linkedUserFields
Значениетип | Описание | |
|---|---|---|
| CALENDAR_EVENT\ | UF_CRM_CAL_EVENTboolean | Событие в календаре |
| TASKS_TASK\ | UF_CRM_TASKboolean | Задачи |
| TASKS_TASK_TEMPLATE\ | UF_CRM_TASKboolean | Шаблоны задач |
Идентификаторы языков для Битрикс24 {#lang-ids}
| Идентификатор языка | Язык |
|---|---|
ar | Арабский |
br | Португальский (Бразилия) |
de | Немецкий |
en | Английский |
fr | Французский |
hi | Хинди |
id | Индонезийский |
it | Итальянский |
ja | Японский |
la | Испанский |
ms | Малайский |
pl | Польский |
ru | Русский |
sc | Китайский |
tc | Китайский (Тайвань) |
th | Тайский |
tr | Турецкий |
ua | Украинский |
vn | Вьетнамский |
Объекты, используемые в ответах
Описание отдельно взятого поля crm_rest_field_description {#crm_rest_field_description}
Название тип | Описание |
|---|---|
typestring | Тип поля |
isRequiredboolean | Является ли поле обязательным |
isReadOnlyboolean | Является ли поле неизменяемым |
isImmutableboolean | Признак возможности однократного заполнения значения поля только при создании нового элемента |
isMultipleboolean | Признак множественности поля. При true значения в поле передаются в виде массива |
isDynamicboolean | Является ли поле пользовательским |
titlestring | Название поля |
Описание пользовательского поля типа адресс {#crm_user_field_address}
Пользовательское поле типа «Адрес» хранит данные одной строкой. В таблице приведено описание составных частей этой строки.
Подробное описание составляющих частей адреса можно найти в статье Об адресах.
Название тип | Описание | Пример |
|---|---|---|
ADDRESS_1string | Улица, номер дома | Малый Знаменский переулок 7/10 с2 |
ADDRESS_2string | Квартира, офис, комната, этаж | 5 |
POSTAL_CODEstring | Почтовый индекс | 119019 |
CITYstring | Населенный пункт | Москва |
REGIONstring | Район | район Арбат |
PROVINCEstring | Регион | Москва |
COUNTRYstring | Страна | Россия |
LATITUDEstring | Координаты широты | 55.748289 |
LONGITUDEstring | Координаты долготы | 37.60504 |
LOC_ADDR_IDstring | Идентификатор адреса местоположения | 10 |
Тип объекта CRM {#object_type}
| Тип объекта | Числовой идентификатор типаentityTypeId | Символьный код типаentityTypeName | Краткий символьный код типаentityTypeAbbr | Тип объекта пользовательского поляuserFieldEntityId |
|---|---|---|---|---|
| Лид | 1 | LEAD | L | CRM_LEAD |
| Сделка | 2 | DEAL | D | CRM_DEAL |
| Контакт | 3 | CONTACT | C | CRM_CONTACT |
| Компания | 4 | COMPANY | CO | CRM_COMPANY |
| Счет (старый) | 5 | INVOICE | I | CRM_INVOICE |
| Счет (новый) | 31 | SMART_INVOICE | SI | CRM_SMART_INVOICE |
| Предложение | 7 | QUOTE | Q | CRM_QUOTE |
| Реквизит | 8 | REQUISITE | RQ | CRM_REQUISITE |
| Заказ | 14 | ORDER | O | ORDER |
| Смарт-процесс | 128 | DYNAMIC_128 | T80 | CRM_1 |
> В таблице приведено описание смарт-процесса с идентификатором типа 128 и идентификатором 1.
>
> Идентификаторы типа смарт-процессов находятся в промежутке от 128 до 191 (включительно), либо имеют значение больше чем 1030 (включительно) и являются четными.
>
> Идентификаторы типа смарт-процессов, удаленных в корзину, находятся в промежутке от 192 до 255 (включительно), либо имеют значение больше чем 1030 и являются нечетными.
>
> Чтобы определить префикс смарт-процесса, необходимо:
> — сконвертировать идентификатор из десятичной системы в шестнадцатеричную. В случае с идентификатором равным 128, получаем значение 80.
> — взять полученное значение в нижнем регистре и к полученному значению дописать латинскую букву T в начале. Таким образом, получаем префикс — T80.
💡 Экспертное мнение и рекомендации
Ключевые выводы по теме «Типы данных и структура объектов в REST API CRM»:
Использование современных стандартов D7 при работе с битрикс позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru