...

Можно ли создать собственный checkbox в виджете Код и обрабатывать что-нибудь в сценарии

Тема в разделе "Вопросы по платформе", создана пользователем mokrushina, 14 фев 2023.

  1. mokrushina

    mokrushina Участник

    Ответ предоставил t.me/DiakonovDenis

    Вопрос
    : Можно ли создать собственный checkbox в виджете Код и обрабатывать что-нибудь в сценарии при изменении флажка? Например, я создал собственную таблицу в виджет-коде и мне нужно отслеживать какие строки выбрал пользователь. Но я не знаю каким образом сделать потому что window или document в сценариях на формах просмотра, редактирования не работают.

    Ответ: Объявите в сценарии
    Код:
    
    declare const window:any;
    
    
    или
    Код:
    
    declare const document:any;
    
    
  2. Max

    Max Участник

    Добрый день!
    мне было бы тоже очень интересно узнать. API -шные функции вида UI.widget.viewContextRow позволяют вывести контекстную переменную. А как быть , если количество отображаемых элементов на форме заранее неизвестно как и тип полей ? Т.е. хотелось бы при загрузке формы сформировать контролы основных типов ввода (строка, чекбокс, дата) и получить их значения по окончании ввода. Есть ли такая возможность ?
  3. sultanov

    sultanov Техническая поддержка

    По количествую отображаемых элементов, то их можно обрабатывать циклом. А тип должен быть известен, т.к. сами же настраиваем форму.
    Т.е. нужна динамически расширяемая таблица по количеству строк, которые требуется заполнить (например, форма создания), а после эти значения использовать.
    То предлагаю дорисовывать таблицу, например, по кнопке (код, по аналогии с ее созданием), а результат записывать в массив объектов, элементами которых будут значения строк таблицы.
  4. Max

    Max Участник

    Я не очень понял суть Вашего ответа. Нашел вчера такой вариант решения: в контексте формы разместить переменную произвольного типа, затем в функции инициализации на закладке Сценарии инициализировать переменную массивом и поместить туда определения элементов и их значений(т.е. массив объектов). На форме разместить виджет HTML код и в нём перебрав элементы массива, создать требуемые элементы ввода. И там же определить функцию , которая должна собирать значения типа:
    <% Scripts.getValues = function(acontrol) { %> ..в тексте обрабатывать свойства acontrol
    Создавая элементы ввода, указывать эту функцию как обработчик примерно так (item - очередной элементмассива, объект с свойствами контрола)
    <input type='<%=item.ctype%>' name='<%=item.name%>' onchange='<%= Scripts%>.getValues(this)'
    работает, но хотелось бы более красивого решения, чтобы, к примеру можно было один код на нескольких формах задействовать.
  5. sultanov

    sultanov Техническая поддержка

    Я отталкивался от описания работы с таблицей.

    При базовом отображении, то все верно, можно создать переменную произвольного типа и работать с ней.
    Для более универсального способа создайте модуль и настройте сопоставление полей в шаблоне бизнес-процесса как в справке https://elma365.com/ru/help/platform/script-activity.html