Оригинал на GitHub
Вопрос
Есть поле #pos и в нём значение типа список [12,215,55]
. По изменению в этом поле код действия должен записать в другую таблицу этот список, объединив id из этого списка с названиями из поля nr_name
из другой таблцы.
В итоге должен получится список ["12 - item_name_1", "215 - item_name_2", "55 - item_name_3"]
т.е. через listreplace я думал добавить к id названия, но не могу понять как это работает:
=: set(table: 'some_table'; field: 'list' = $sel; where: 'id_link' = #id; log: true)
sel: listReplace(list: #pos; action: "item" = $val; action: $val; value: "value")
val: select(table: 'test_projects_'; field: 'nr_name'; where: 'id' = $#value)
Подскажите что я делаю не так?
Ответ
Исправленный код действия для этого случая:
=: set(table: 'some_table'; field: 'list' = $sel; where: 'id_link' = #id; log: true)
sel: listReplace(list: #pos; action: $val; value: "value")
val: strAdd(str: $#value; str: " - "; str: $name)
name: select(table: 'test_projects_'; field: 'nr_name'; where: 'id' = $#value)
action: "item" = $val; — этот формат action в listReplace добавляет колонку в случае если в list приходит rowlist. В вашем случае там просто list, поэтому нужно использовать action: $val;
.
val: strAdd(str: $#value; str: " - "; str: $name) — для получения конкатенированных данных надо провести конкатенацию на каждом шаге выполнения listReplace.