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

    code_action

    VK Video

    Смотреть на VK video ⟹

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

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

    Помимо специальной секции кодов нужно использовать функции вполняющие действия, например 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')
    
    

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

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