Добавить в crm.*.fields недостающую информацию

Рейтинг: 9.5608  
Новая
Предложил Николаев Андрей 19.10.2020 15:05:25

Добавить в crm.*.fields недостающую информацию

Для основных сущностей (контакт, компания и т.п.) 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 (возможно другую необходимую информацию)
- Это закрывает базовую потребность "возвращает достаточную информацию для отображения поля"
- Это не нарушает обратную совместимость (такого ключа ранее не было, а механизмы других ключей не менялись)

Рейтинг: 0  
Николаев Андрей 19.10.2020 15:39:14
Т.е. для отображения названия + значения поля с типом привязка к CRM (не зная заранее что содержится в данном поле) необходимо сделать 2 запроса: для получения полей (чтобы получить название) и для получения настроек (чтобы понять куда дальше отправлять запрос)