Оригинал на GitHub
Вопрос
Столкнулся со следующей задачей. Есть JSON вида:
[
{
"sum": "10.00",
"quant": "1.00",
"id": "196"
},
{
"sum": "5.00",
"quant": "1.00",
"id": "342"
},
{
"sum": "15.00",
"quant": "2.00",
"id": "210"
}
]
Это поле внутри цикла с содержимым заказа.
Я хочу в таблице циклов в строке этого заказа сделать информационное поле с содержимым изнутри цикла вида:
Item name 1 - (id 196) - 1 - sum: 10.00, Item name 2 - (id 342) - 1 - sum: 5.00, Item name 3 - (id 210) - 2 - sum: 15.00.
Как мне это сделать?
Ответ
Что бы преобразовать json в текст нужного формата можно перебрать этот rowlist при помощи listReplace, добавляя еще одну колонку с конкатенированными значениями и потом взять эту колонку и превратить ее в текст при помощи listJoin:
Код в информационном поле типа Текст в таблице циклов:
=: listJoin(list: $replace[[concatenated]]; str: str`"," + $#nl`)
replace: listReplace(list: $data; action: "concatenated" = $concatenated; value: "value")
data: select(table: 'table_in_cycle'; cycle: #id; field: 'f_data')
concatenated: str`$item_name ++ "-" ++ "( id" ++ $#value[id] + ")" ++ "-" ++ $#value[quant] ++ "-" ++ "sum:" ++ $#value[sum]`
item_name: select(table: 'items'; field: 'name'; where: 'id' = $#value[id])