← К заметкам

Заметки

Где получить XML_ID значений списка CRM через REST

crm.item.fields удобен для описания полей элемента, но для сопоставления списка с внешней системой часто нужен ещё и XML_ID каждого варианта. Полные настройки пользовательского поля возвращает userfieldconfig.get.

Сначала найдите ID настройки поля через userfieldconfig.list с moduleId: "crm". Фильтровать можно по реальному fieldName. Этот ID не равен ни ID элемента CRM, ни ID выбранного пункта списка.

Пример для браузерного приложения после инициализации BX24.js:

const fieldConfigId = 123;

BX24.callMethod('userfieldconfig.get', {
    moduleId: 'crm',
    id: fieldConfigId
}, function (result) {
    if (result.error()) {
        console.error(result.error());
        return;
    }

    const field = result.data().field;
    if (!field) {
        console.warn('Настройки поля не найдены');
        return;
    }

    console.table((field.enum || []).map(function (option) {
        return { id: option.id, title: option.value, xmlId: option.xmlId };
    }));
});

В ответе настроек result.field.enum содержит варианты списка. У каждого есть собственные id, value и xmlId. В callback BX24.js внешняя обёртка result уже снята вызовом data().

Для записи выбранного значения в карточку обычно нужен ID варианта. Внешний код пригоден для сопоставления между системами, но не заменяет этот ID в запросе обновления.

Для общей схемы сущности есть пример с crm.item.fields. Метод crm.userfield.enumeration.fields описывает структуру значения списка. Он не возвращает варианты конкретного поля. Если нужен только выбранный пункт, смотрите также разницу между подписью и ID списка в БП.

Документация: userfieldconfig.get; userfieldconfig.list.