Заметки
Как связать элементы двух смарт-процессов
Как связать элементы двух смарт-процессов: поля привязки, родительская связь, REST/D7.
Как связать элементы двух смарт-процессов: поля привязки, родительская связь, REST/D7.
Задача
Разбираем практический сценарий для смарт-процессов.
Задача — как связать элементы двух смарт-процессов. В этой заметке важно не смешивать похожие сущности и сначала определить, с каким типом CRM-данных работает код.
Как это устроено
Основная проверка — понять, какие данные реально участвуют в сценарии.
Поля привязки — отдельный участок проверки. Его лучше подтвердить на тестовом элементе, а не переносить логику со сделки или другого смарт-процесса вслепую.
родительская связь — отдельный участок проверки. Его лучше подтвердить на тестовом элементе, а не переносить логику со сделки или другого смарт-процесса вслепую.
REST/D7. — отдельный участок проверки. Его лучше подтвердить на тестовом элементе, а не переносить логику со сделки или другого смарт-процесса вслепую.
Рабочий подход
Начинайте с штатного API и проверяйте фактический ответ.
Для облака используйте REST. Для коробки, если код выполняется внутри портала, чаще удобнее D7 и фабрика CRM.
Не переносите пример со сделки без адаптации: у смарт-процесса свой entityTypeId, свои настройки типа и свои ограничения.
Частые ошибки
Основные ошибки связаны с неверным типом владельца, правами или обходом штатной операции.
Если метод возвращает пусто, сначала проверьте ID типа, ID элемента, права текущего пользователя и включена ли нужная возможность в настройках смарт-процесса.
Если действие срабатывает только после ручного пересохранения, значит код, скорее всего, обходит часть штатной логики CRM.
Минимальный пример
Пример показывает только базовую форму вызова. На реальном портале замените ID и имена полей на свои.
BX24.callMethod(
'crm.item.update',
{
entityTypeId: 178,
id: 45,
fields: {
ufCrm18RelatedItem: 77,
},
},
function (result) {
console.log(result.data());
}
);