⟵ сюдатуда ⟶
  • Учебный курс
  • Создание простых таблиц и полей
  • Коды базовый уровень
  • Селекты и связь между таблицами
  • Настройки таблиц базовый уровень
  • Префильтры базовый уровень
  • Условное форматирование базовый уровень
  • Коды действия базовый уровень
  • Использование всплывающих окон
  • Циклы базовый уровень
  • Роли и пользователи в web
  • Коды продвинутый уровень
  • Как работают сравнения в кодах?
  • Как проверить вхождение одного списка в другой?
  • Как по условиям выключить where
  • У строки добавления нет id
  • Как быстро создавать списки
  • Как взять строку из таблицы и потом получить из нее данные?
  • Что такое списки ассоциированных массивов?
  • Определение названия поля кодом, определение строки кода кодом?
  • Список списков и превращение его в список?
  • Как последовательно перебрать список и дополнить его или перезаписать значения?
  • Как отфильтровать и сортировать список или список ассоциированных массивов?
  • Получение информации о ручных значениях, уровне дерева, селектах
  • Как работает while и var? Замена на listReplace
  • Как оптимизировать выполнение одного и того же кода с передачей в него переменных?
  • Как использовать cond для condition?
  • Как использовать значение предыдущей строки для расчета текущей?
  • Зачем нужен поколоночный пересчет в расчетных и временных таблицах?
  • Как использовать предыдущее значение в кодах и комбинировать ручной ввод и код?
  • Операции над row и rowList
  • Коды действий продвинутый уровень
  • Префильтры продвинутый уровень
  • Настройки полей и таблиц продвинутый уровень
  • Циклы продвинутый уровень
  • Форматирование продвинутый уровень
  • Селект-дерево
  • Выполнения кода действия по расписанию
  • Печать и отправка email
  • Нотификации
  • Взаимодействие по API
  • Адаптивность и секции
  • Графики
  • Вид таблицы панелями и поворот строчной части
  • Анонимные таблицы для неавторизованного доступа
  • Внешние формы для сбора информации
  • Обновление и бэкапирование
  • Дублирование схем и перенос таблиц между базами
  • Консольная утилита bin/totum
  • Как последовательно перебрать список и дополнить его или перезаписать значения?

    Как перебрать список при помощи listReplace?

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

    Для этого используем функцию listReplace.


    =:
    listReplace(list: $startlist; action: $action; value: "value") startlist: selectList(table: 'table'; field: 'num'; where: 'status' = 4) action: select(table: 'table_2'; field: 'price'; where: 'num' = $#value)

    listReplace берет стартовый list и для каждого его элемента выполняет action.

    Мы можем в value задать переменную, в которой будет хранится значение элемента list, который выполняется в текущий момент.

    Те action будет вызван столько раз, сколько было элементов в списке.

    В результате мы получим новый список с таким же количеством элементов, но с другими значениями — значениями, которые мы рассчитали в action.

    Код в action будет выполнен для каждой строки?

    Да. Для каждого элемента списка.

    Как в коде вызванном в action узнать номер обрабатываемой строки?

    У listReplace есть параметр key в котором можно указать имя переменной в которую будет передан номер обрабатываемой строки.

    Если мы хотим вернуть "" для первых 5 строк:


    =:
    listReplace(list: $startlist; action: $action; value: "value"; key: "key") startlist: selectList(table: 'table'; field: 'num'; where: 'status' = 4) action: if(condition: $#key <= 4; then: ""; else: $sel) // помните, что нумерация списков начинаются с 0 sel: select(table: 'table_2'; field: 'price'; where: 'num' = $#value)

    Как в коде вызваном в action использовать значение обрабатываемой строки?

    У вас в параметре value должно быть задано имя переменной в которую будет передано значение. И к этой переменной можно обратиться как $#value_name_param.

    На что надо обратить внимание, если у нас в одном коде несколько listReplace?

    Проверяйте, что у вас не пересекаются имена переменных.

    Можно ли добавить элемент с ключом, если мы обрабатываем список единичных значений?

    Нет, action с ключом вида action: "key" = $value доступен для rowlist.

    Как добавить или заменить элемент с ключом, если мы обрабатываем rowList?


    =:
    listReplace(list: $startlist; action: "price" = $action; value: "value") startlist: selectRowList(table: 'table'; field: 'num'; field: 'price'; where: 'status' = 4) action: $#value[price] * $kf kf: select(table: 'table_2'; field: 'kf'; where: 'num' = $#value[num])

    Здесь мы берем rowlist и корректируем значения в колонке price. обратите внимание, что в value попдает значение строки списка startlist, а для rowlist значение строки это row — поэтому обращение в $#value должно дополнятся нужним ключом (колонкой) — $#value[price].

    Если в action мы задаем имеющийся в rowlist ключ, то он будет перезаписан. Если мы укажем ключ, которого нет в стартовом rowlist, то будет добавлена еще одна колонка с таким ключом.

    Как создать основу для перебора при помощи listNumberRange?

    Иногда нам нужно создать список основу, по которому мы будем делать перебор. Для этого подходит listNumberRange.

    Например создадим список дней от 1 до 31:


    =:
    listNumberRange(min: 1; max: 31; step: 1)

    Если для дальнейшей обработки нужен не list, а rowlist:


    =:
    rowListCreate(field: "range" = $range) range: listNumberRange(min: 1; max: 31; step: 1)

    Как упростить если требуется произвести однотипное математическое действие над всеми элементами списка?

    Если над всеми элементами списка надо произвести однотипную математическую операцию, то для этого есть более простая функция listMath.

    ```totum =: listMath(list: $list; operator: "*"; num: 3) list: listCreate(item: 1; item: 2; item: 11; item: 21)

    // Результат: [ 3, 6, 33, 63]

    ````