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

    пример с последовательной нумерацией

    У Тотум есть последовательня уникальная сортировка строк — id, но иногда нужна дополнительная, например если в таблице включено не только добавление, но и удаление строк или случаются перезапуски/отмены транзакций.

    id не переиспользуются, поэтому получаются пробелы.

    Чаще всего это бывает нужно в расчетных таблицах внутри цикла — например для того, что бы передавать в бухгалтерию или на печать чеков последовательные номера.

    Сооздаем поле номер и делаем в нем Код, который будет его вычислять:

    = : if(condition: $sel = ""; then: 1; else: $calc)
    
        ~sel: select(table: $#ntn; field: $#nf; where: 'id' < $id; order: 'id' desc)
            id: if(condition: #id = ""; then: "*ALL*"; else: #id)
    
    calc: $sel + 1
    
    

    В этом примере мы проверяем существование предыдущего номера и еще мы проверяем id на строку добавления. Если это строка добавления, то мы берем последнюю строку по id в таблице, если нет, то первую строку, у которой id меньше.

    пример с n-сортировкой

    Если включен параметр сортировать по полю порядок, то тоже самое нужно сделать по n вместо id:

    = : if(condition: $sel = ""; then: 1; else: $calc)
    
        ~sel: select(table: $#ntn; field: $#nf; where: 'n' < $n; order: 'n' desc)
            n: if(condition: #n = ""; then: "*ALL*"; else: #n)
    
    calc: $sel + 1