Динамическое изменение данных в CRM-форме Битрикс24
, МихаилЕсли нужно разместить на странице несколько кнопок, которые будут заполнять значения одной CRM-Формы, которые будут приходить по ajax - нужно сделать так:
- Добавляем на страницу скрытую кнопку с классом, b24-web-form-popup-btn-X, где X = ID Битрикс формы
- Используем функцию reinitB24Dvsform(), в данном случае на вход идёт значение поля формы LEAD_TITLE, можно вызывать в скрипте, или по событию onclick
<?php
// JS код
/**
* Инициализируем настройки формы, ОБЯЗАТЕЛЬНО указываем ref
*/
function initB24CrmDvsForm(b24val) {
return {"id":"8","lang":"ru","sec":"y8awav","type":"button","click":"", "ref":'https://ACCOUNT.bitrix24.ru/bitrix/js/crm/form_loader.js', "fields": {
'values': b24val
}};
}
var b24paramsload = initB24CrmDvsForm({});
/**
* Стандартное добавление скрипта и переменных для скрипта Б24
*/
(function(w,d,u,b){w['Bitrix24FormObject']=b;
w[b] = w[b] || function(){arguments[0].ref=u;
(w[b].forms=w[b].forms||[]).push(arguments[0])};
if(w[b]['forms']) return;
s=d.createElement('script');
r=1*new Date();
s.async=1;
s.src=u+'?'+r;
h=d.getElementsByTagName('script')[0];
h.parentNode.insertBefore(s,h);
})(window,document,b24paramsload.ref,'b24form');
b24form(b24paramsload);
/**
* Реинициализируем форму, частично повторяем функцию init у Bitrix24FormLoader
*/
function reinitB24Dvsform(nVal) {
if(!window.Bitrix24FormObject || !window[window.Bitrix24FormObject])
return;
if(!window[window.Bitrix24FormObject].forms)
return;
// Уничтожаем форму
Bitrix24FormLoader.unload(b24paramsload);
// Пересоздаём параметры формы
b24paramsload = initB24CrmDvsForm({'LEAD_TITLE': nVal});
// Инициируем форму с новыми данными
Bitrix24FormLoader.params = b24paramsload;
Bitrix24FormLoader.init();
// Открываем попап
Bitrix24FormLoader.showPopup(b24paramsload);
}
?>