Заметки
Как читать и обновлять UF-поля через crm.item.*
В универсальном API стандартные поля называются id, title, а пользовательские по умолчанию возвращаются в camelCase. Для работы с исходными кодами UF_CRM_* используйте useOriginalUfNames: 'Y' последовательно во всех запросах.
Обновить существующее строковое поле
В примере код поля демонстрационный. Замените его существующим строковым полем своего типа CRM; сначала запрос проверяет его наличие в схеме.
const entity_type_id = 128;
const item_id = 1001;
const field_name = 'UF_CRM_10_COMMENT';
BX24.callMethod('crm.item.fields', {
entityTypeId: entity_type_id,
useOriginalUfNames: 'Y'
}, function (schema_result) {
if (schema_result.error()) {
console.error(schema_result.error());
return;
}
const field = schema_result.data().fields[field_name];
if (!field || field.isReadOnly || field.isMultiple || field.type !== 'string') {
console.error('Нужно существующее одиночное строковое поле.');
return;
}
BX24.callMethod('crm.item.update', {
entityTypeId: entity_type_id,
id: item_id,
useOriginalUfNames: 'Y',
fields: { [field_name]: 'Обновлено из REST' }
}, function (result) {
if (result.error()) {
console.error(result.error());
return;
}
console.log(result.data().item[field_name]);
});
});Чтение и другие типы
В crm.item.get передавайте тот же useOriginalUfNames и читайте поле из result.data().item. Множественное поле требует массива, список — ID значения, а файл — собственного формата загрузки. Этот пример не универсальный сериализатор полей.
В старой коробке сначала проверьте поддержку параметра. Если её нет, используйте имена, реально возвращённые crm.item.fields, без самостоятельного преобразования регистра.