Для основных сущностей (контакт, компания и т.п.) CRM наблюдаем следующую картину (на примере контакта показываю):
- Есть метод crm.*.fields который возвращает описания полей
- Есть метод crm.*.userfield.list который возвращает описание пользовательских полей.
В ответ на crm.*.fields для UF_* полей возвращается описание:
{
"UF_CRM_1603091288": {
"type": "crm",
"isRequired": false,
"isReadOnly": false,
"isImmutable": false,
"isMultiple": false,
"isDynamic": true,
"title": "UF_CRM_1603091288",
"listLabel": "Привяка к компаниям",
"formLabel": "Привяка к компаниям",
"filterLabel": "Привяка к компаниям"
}
} |
В нем вы видим важные параметры:
- Технические характеристики (обязательность, множественность, динамичность и т.п.)
- Его тип (привязка к CRM)
- Отображаемые названия
В нем мы НЕ видим:
- Параметров, которые необходимы для показа значения
В ответ на crm.*.userfield.list возвращается описание:
{
"5": {
"ID": "114",
"ENTITY_ID": "CRM_CONTACT",
"FIELD_NAME": "UF_CRM_1603091288",
"USER_TYPE_ID": "crm",
"XML_ID": null,
"SORT": "100",
"MULTIPLE": "N",
"MANDATORY": "N",
"SHOW_FILTER": "I",
"SHOW_IN_LIST": "N",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"LEAD": "N",
"CONTACT": "N",
"COMPANY": "Y",
"DEAL": "N",
"ORDER": "N"
}
}
} |
В нем мы видим важные параметры:
- Технические характеристики (обязательность, множественность, динамичность и т.п.)
- Его тип (привязка к CRM)
- Настройки (SETTINGS)
В нем мы НЕ видим:
Имя 2 запроса можно предположить что настройки для пользовательских полей возвращаются отдельно, однако: если обратиться к полю с типом enumeration, то в fields-запросе вернется:
{
"UF_CRM_1603091201384": {
"type": "enumeration",
"isRequired": false,
"isReadOnly": false,
"isImmutable": false,
"isMultiple": false,
"isDynamic": true,
"items": [
{
"ID": "26",
"VALUE": "Значение 1"
},
{
"ID": "27",
"VALUE": "Значение 2"
}
],
"title": "UF_CRM_1603091201384",
"listLabel": "Список из двух значений",
"formLabel": "Список из двух значений",
"filterLabel": "Список из двух значений"
}
} |
Т.е. дополнительный ключ items, который показывает что можно выбрать.
Суть предложения: провести унификацию методов, чтобы crm.*.fields возвращает достаточную информацию для отображения поля.Возвращать дополнительный ключ parameters внутри которого возвращать данные из ID поля, SETTINGS (возможно другую необходимую информацию)
- Это закрывает базовую потребность "возвращает достаточную информацию для отображения поля"
- Это не нарушает обратную совместимость (такого ключа ранее не было, а механизмы других ключей не менялись)