Как можно получить пользовательское название для поля типа crm_status?

Как получить пользовательское название значения поля "Сфера деятельности" (INDUSTRY), если при чтении его значения возвращается код, например "OTHER"? Какой объект и метод нужно использовать для этого?
  • 7 октября 2024 г. 15:54
Ответы на вопрос 3
Для получения пользовательского названия для поля типа `crm_status` или значения поля, такого как "Сфера деятельности" (INDUSTRY), в системе 1С:CRM (например, в Битрикс24), можно использовать объект `CUserFieldEnum`.

Для получения названия значения нужно выполнить запрос к перечислению, которое соответствует полю. Вот пример, как это можно сделать на PHP, используя API Битрикс24:

1. **Получите тип пользовательского поля** для `INDUSTRY`, чтобы узнать его ID.
2. **Используйте метод `GetList` объекта `CUserFieldEnum`**, передавая ID поля `INDUSTRY`.

Пример кода на PHP:

```php
$idField = 'INDUSTRY'; // Код поля
$valueCode = 'OTHER'; // Код значения

// Получаем ID поля INDUSTRY
$field = CUserField::GetList([], ["FIELD_NAME" => $idField])->Fetch();
if ($field) {
    $fieldId = $field['ID'];

    // Получаем пользовательские варианты для данного поля
    $enumList = CUserFieldEnum::GetList([], ["USER_FIELD_ID" => $fieldId]);
    while ($enum = $enumList->Fetch()) {
        if ($enum['XML_ID'] === $valueCode) {
            echo $enum['VALUE']; // Выводим пользовательское название
            break;
        }
    }
}
```

### Пояснение:
- `CUserField::GetList` — используется для получения информации о пользовательских полях.
- `CUserFieldEnum::GetList` — используется для получения значений перечислений для указанного пользовательского поля.
- В цикле проверяется, равен ли `XML_ID` значению, и тогда выводится соответствующее название (`VALUE`).

Таким образом, вы можете получить пользовательское название для значения поля "Сфера деятельности" или любого другого поля типа `crm_status`, используя указанные методы API.
Есть документация 
https://dev.1c-bitrix.ru/api_d7/bitrix/crm/field/i...
Примерно так 
$list=CRest::call("crm.status.list",
            [
                'order'=>['SORT'=>'ASC'],
                'filter'=>["ENTITY_ID"=>'INDUSTRY']
            ]
        );

Выглядит примерно так:
Array
(
    [result] => Array
        (
            [0] => Array
                (
                    [ID] => 69
                    [ENTITY_ID] => INDUSTRY
                    [STATUS_ID] => IT
                    [NAME] => Сельское хозяйство
                    [NAME_INIT] => 
                    [SORT] => 10
                    [SYSTEM] => N
                    [CATEGORY_ID] => 
                    [COLOR] => 
                    [SEMANTICS] => 
                )

            [1] => Array
                (
                    [ID] => 71
                    [ENTITY_ID] => INDUSTRY
                    [STATUS_ID] => TELECOM
                    [NAME] => Добывающая
                    [NAME_INIT] => 
                    [SORT] => 20
                    [SYSTEM] => N
                    [CATEGORY_ID] => 
                    [COLOR] => 
                    [SEMANTICS] => 
                )
...
Похожие вопросы