Search
Write a publication
Pull to refresh

Динамическое обновление скрытых параметров форм 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"

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

В заключение

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

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.