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

    code_action

    Какой блок кода отвечает за действия?

    За действия отвечают коды действия. Из кода вчисляющего значения полей выполнить действие нельзя.

    Помимо специальной секции кодов нужно использовать функции вполняющие действия, например set — функция изменяющая значение в поле.

    Что отслеживает система, что может являться условием выполнения действия?

    Тотум отслеживает несколько триггеров — которые могут служить сигналом к запуску действия:

    • изменение значения в поле

    • добавление строки

    • удаление строки

    • двойной клик в заблокированном поле

    Будет ли исполнен код действия если выключены все триггеры?

    Нет, активность хотя бы одного триггера обязательна.

    Коды действия подсвечиваются в заголовке поля звездочкой — если звездочка пустая, значит нет ни одного активного триггера.

    В какой момент исполняются коды действий?

    Коды действий исполняются после кодов. Те сначала рассчитываются все значения изменяемых строк и далее срабатывают триггеры и выполняются действия.

    В каком порядке выполняются коды действий?

    В таком же, в каком вычисляются коды. В таком же порядке плейсментов и sort внутри плейсмента.

    ХедерСтрочная частьфутер

    Строки по возрастанию id или n, а внутир по возрастанию sort.

    В случае поколоночного пересчета то поколоночно по возрастанию id или n.

    Какова разница между set и setList?

    • set изменяет одно значение, даже если под условия подходят несколько строк.

    • setList изменяет все значения подходящие под условия.

    В Totum все функции действий изменяющие значения разделены на единичный и множественный вариант.

    Можно назначить значение только одному полю или нескольким сразу?

    set позволяет за одно действие указать несколько изменяемых полей в одной строке:


    =:
    set(table: 'table'; field: 'field_1' = "value_1"; field: 'field_2' = "value_2"; where: 'condition_field' = #condition)

    Могут ли функции действий использоваться из кодов или кодов форматирования?

    Нет — не могут. Функции действия выполняют действие только из кода действия.

    Вызывает ли код действия пересчет таблицы в которой выполняется действие?

    Да.

    Для простых таблиц — это пересчет изменяемых строк и хедера.

    Для расчетных и временных — вся таблица.

    При set в расчетную таблицу будет пересчитана вся таблица или только строка в которой производится изменение?

    Вся таблица.

    Что произойдет, если в изменяемом поле тоже есть код-действия?

    Если там включен триггер на изменение — сработает триггер и запустится код действия того поля.

    Если в таблице изменяется несколько строк, то код действия будет выполнен на каждую строку отдельно или будет выполнен один общий?

    Код действия запустится на каждую измененную строку. Иногда это ведет к огромному перепробегу.

    Особенно это важно для таблиц расчитывающихся целиком - для них есть хитрость:

    Например, нам нужно пересчитать какую-то таблицу по результатам изменения нескольких полей, но сделать это только один раз:

    1. Делаем в футере колонки техническое поле тип Данные, берущее в коде спикок значений изменяемого поля.
    =: selectList(table: $#ntn; field: 'field'; order: 'field' asc)
    
    //Использование order важно!
    
    1. В коде действвия по триггеру на изменение выполняем действие.
    =: recalculate(table: 'table_to_recalc')
    
    

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

    Для простых таблиц тоже есть подобная хитрость — но о ней чуть позже.