...

Динамический список

Тема в разделе "Вопросы по платформе", создана пользователем Svvopp, 10 мар 2022.

  1. Svvopp

    Svvopp Новичок

    Здравствуйте! Имитирую пример, который описан в справке https://elma365.com/ru/help/dynamic-list.html
    Разница в том, что в моей таблице данные заполняю из другого приложения. Соответственно к виджету Надпись не могу прикрутить столбец так как тип данных приложение, а не строка. Подскажите решение. Спасибо.
  2. sultanov

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

    Добрый день.
    Подскажите, почему вы не хотите добавить столбец с данными типа "Строка"?
  3. Overdrive_84

    Overdrive_84 Новичок

    Доброго времени суток.
    Пытаюсь решить близкую задачу, также все начиналось с указанного примера.
    Формирую динамический список из элементов приложения у которого несколько полей также являются приложения.
    Приведу часть скрипта для понимания
    Спойлер: Код
    const itemslist = await Namespace.app.sluzhebnye_zapiski_kassa.search().size(10000).all();
    for(const item of itemslist){
    if(!item.data.__deletedAt){
    if(item.data.__status?.name == "Согласована"){
    const row = Context.data.spisok_zayavok.insert();
    row.naimenovanie = item.data.__name;
    row.ssylka = item;
    if(!item.data.summa){
    row.summa_1 = 0;
    }else{
    row.summa_1 = item.data.summa.cents/100;
    }
    if(!item.data.tema){
    row.predmet_zayavki = String("Пусто");
    }else{
    row.predmet_zayavki = item.data.tema;
    }
    if(!item.data.ssylka){
    row.ssylka_tekst = String("Пусто");
    }else{
    row.ssylka_tekst = item.data.ssylka;
    }
    }
    if(item.data.__status?.name == "Утверждена"){
    const row = Context.data.zayavki_na_ispolnenii.insert();
    row.naimenovanie = item.data.__name;
    row.ssylka = item;
    if(!item.data.summa){
    row.summa = new Money(0, 'RUB');
    }else{
    row.summa = item.data.summa;
    }
    if(!item.data.tema){
    row.predmet_zayavki = String("Пусто");
    }else{
    row.predmet_zayavki = item.data.tema;
    }
    }
    }
    }
    Context.data.spisok_zayavok = Context.data.spisok_zayavok;
    Context.data.zayavki_na_ispolnenii = Context.data.zayavki_na_ispolnenii;
    }
    Есть несколько затруднений:
    1. Не понимаю как получить значение поля являющегося приложением, как я понял из описания - если полем является приложение, то оно содержит ссылку на это приложение. Чтобы получить объект использую fetch()
    row.napravlenie = item.data.napravlenie.fetch(); получилось чтото не понятное
    row.napravlenie = item.fields.napravlenie.name; и
    row.napravlenie = item.fields.napravlenie.app.name; возвращает название приложения
    пробовал варианты стобцов и текстовый и приложение, но ожидаемого результата так и не получил, уже несколько дней туплю над этой задачей

    2. Еще была мысль сделать как в связанной таблице чтобы те поля кв которых используются приложениями, работали как ссылки на элементы приложений (например тоже поле Направление которое является приложением, при нажатии открывало окно с соответствующим элементом приложения Направление).
    Решил начать с малого и реализовать чтобы хотябы по нажатию на кнопку привязанную к строке динамического списка открывался элемент приложения из которого и формируется динамический список.
    Реализовывать решил через ссылки, по примеру вот ТУТ даже удалось сформировать ссылку,
    Спойлер: Код
    let baseLink = Application.params.data.url;
    let NS = Context.data.sluzhebnye_zapiski_kassa!.namespace;
    let MyCode = Context.data.sluzhebnye_zapiski_kassa!.code;
    let MyId = Context.data.sluzhebnye_zapiski_kassa!.id;
    let createLink = baseLink + '/(p:item/' + NS + '/' + MyCode + '/'+ MyId+ ')';
    Context.data.ssylka = createLink;
    но она не работает.
    Может я в обоих вопросах вообще не тем путем иду и есть гораздо более простой, подскажите пожалуйста