Как стать автором
Обновить

Динамическое обновление скрытых параметров форм crm b24

Уровень сложностиСредний

Немного о сути проблемы

Если вам доводилось делать персонализированную форму в црм битрикс и динамически прокидывать туда постоянно изменяющиеся параметры, вы наверняка тоже немного поседели) Речь пойдет о click форме, не inline.

Проблема в том, что на данный момент все решения, присутствующие в интернте, либо костыльные, либо устаревшие, либо я просто плохо гуглю. Под костыльными решениями я понимаю такой код, когда кучей действий вы сначала пытаетесь уничтожить форму битрикс, потом таким же жутким способом ее инициализировать. И так каждый раз при ее открытии.
Да, есть другая прекрасная короткая функция:

window.addEventListener("b24:form:init", (event) => {
    let form = event.detail.object;
    if (form.identification.id == 10) {
        form.setProperty("test", "value");
    }
});

Но проблема ее заключается в том, что работать на пробрасывание значений в скрытые поля она будет только при инициализации\первом открытии формы. Но вот если человек форму открыл, потом закрыл, поменял что-то там в параметрах, которые будут пробрасываться в форму, потом снова форму открыл и отправил, значения там останутся старыми, с первого открытия/инициализации.

Решение

Я, честно, почти отчаялась как-то красиво решить эту задачу, когда вдруг мне пришла идея прослушивать все события window. Я врубила monitorEvents(window) и поняла, что событие "b24:form:init" таким способом не ловится, только с конкретной донастройкой monitorEvents(window, "b24:form:init") . Стало ясно, что никакие события форм я увидеть не смогу. Тогда, я просто начала методом тыка перебирать события, в надежде найти нужное. И, о чудо!, я нашла нужное мне событие. Угадаете?

Hidden text

"b24:form:show"

Да все, достаточно тривиально, но когда этого нигде нет, то не так уж это и просто как кажется. Я не смогла найти в интернете ни полного списка событий битрикс форм, ни даже потом конкретное событие, которое я обнаружила.

В заключение

Если вы все это и так уже знаете, простите, что отняла у вас время, но скорее всего если вы догуглили до моей статьи, значит тоже искали решение. И я надеюсь, что смогла вам помочь :) Ведь когда я решала эту задачу, мне так не хватало такой статьи на Хабре или стековерфлоуе. Чистого когда вам и побед над всеми возникающими трудностями!)

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.