Динамическое изменение данных в 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);
	}

?>