Как можно получить пользовательское название для поля типа 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.
Есть документация <br/> <a href="https://dev.1c-bitrix.ru/api_d7/bitrix/crm/field/index.php" rel="nofollow">https://dev.1c-bitrix.ru/api_d7/bitrix/crm/field/i...</a>
Примерно так <br/> <pre><code class="php">$list=CRest::call("crm.status.list",
            [
                'order'=&gt;['SORT'=&gt;'ASC'],
                'filter'=&gt;["ENTITY_ID"=&gt;'INDUSTRY']
            ]
        );</code></pre> <br/> Выглядит примерно так: <br/> <pre><code>Array
(
    [result] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [ID] =&gt; 69
                    [ENTITY_ID] =&gt; INDUSTRY
                    [STATUS_ID] =&gt; IT
                    [NAME] =&gt; Сельское хозяйство
                    [NAME_INIT] =&gt; 
                    [SORT] =&gt; 10
                    [SYSTEM] =&gt; N
                    [CATEGORY_ID] =&gt; 
                    [COLOR] =&gt; 
                    [SEMANTICS] =&gt; 
                )

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