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

    В какой момент берутся #?

    Все # берутся в момент начала! выполнения кода.

    В какой момент берутся select?

    Все select берутся в тот момент, когда они исполняются! Это принципиальное отличие от #.

    В какой момент берутся @?

    @ это сахар для select — аналогично в момент их исполнения.

    пример в котором неправильное понимание последовательности приводит к ошибке

    Предположим у нас три поля field_1, field_2 и field_3. Мы делаем код действия в field_2:


    a1= :
    set(table: $#ntn; field: 'field_1' = 25; where: 'id' = #id) a2=: set(table: $#ntn; field: 'field_3' = #field_1; where: 'id' = #id)

    Те первым действием он изменяет значение в field_1, а вторым берет значение из field_1 и ставит его в field_3.

    В результате выполнения этого кода в field_3 будет поставлено значение из field_1 до изменения. Предположим оно там было равно 11.

    Несмотря на то, что мы назначаем 'field_1' = 25 в field_3 будет 11, тк его значение через # будет взято до начала исполнения кода действия!

    Модифицируем, что бы работало:


    a1= :
    set(table: $#ntn; field: 'field_1' = 25; where: 'id' = #id) a2=: set(table: $#ntn; field: 'field_3' = $select; where: 'id' = #id) select: select(table: $#ntn; field: 'field_1'; where: 'id' = #id)

    Этот код будет работать, тк вызов select производится после изменения field_1.