Хотелось бы добавить, что в некоторых случаях данный код не работает. Помогает добавление await к вызову функции.
Например я хочу предзаполнить поле типа HTML которое скрыто и появляется только при измении статуса заявки. Для этого создайте клиентский скрипт onChange(при изменении) выберите колонку “Статус” и заполните его данным кодом:
//отображаем поле типа html
s_form.setVisible('pole_tipa_html',true);
//создаем функцию, которая будет находить наше поле типа html
function waitForElm(selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
resolve(document.querySelector(selector));
observer.disconnect();
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
//обязательно используем await для вызова функции
await waitForElm('iframe[class="cke_wysiwyg_frame cke_reset"]').then((elm) => {
window.iFrameElm = elm;
});
//предзаполняем поле html
const templateHTML = `<p>Шаблон для услуги <strong>НАЗВАНИЕ УСЛУГИ</strong></p>`;
const iFrameElm = window.iFrameElm;
const ckeBodyElm = iFrameElm.contentDocument.querySelector('body');
ckeBodyElm.innerHTML = templateHTML;