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

    Что является слабой блокировкой?

    Любые блокировки через setFormat в форматировании (во всех возможнх форматированиях)!

    А также ограничения в выборке селектов. Если значения селекта нет в выпадающем списке — это не значит, что его нельзя ввести вскрыв фронтенд.

    Что является сильной блокировкой?

    Блокировки по ролям в настройках полей и таблиц и в кодах действий!

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

    Для этого надо выполнить функцию errorExeption в любом месте кода действия.

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

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

    Быстрой переменной $#nr (now roles) — она возвращает список ролей, которые назначены пользователю.

    И если вы хотите гарантировано отклонить любое действие, если роль не соответсвует указаной то:

    =: if(condition: $#nr != $appr; then: $err)
    
    appr: json`[1,2,5]`
    
    err: errorExeption(text: "Только Создатель, Менеджер и Босс могут изменять статус!")
    
    
    

    Как сделать кнопку удаления строки и проверить условия для удаления?

    Например в строке мы делаем кнопку «Удалить» которая будет удалять текущую строку:

    =: delete(table: $#ntn; where: 'id' = #id)
    
    

    А проверку мы хотим сделать не в кнопке, а в каком-то другом поле. И мы там делаем код действия по триггеру удаление:

    =: if(condition: $#onfv = 3; then: $err)
    
    err: errorExeption(text: "Нельзя удалить строку со статусом Согласовано")
    
    

    И здесь важный момент — тк используется триггер на удаление, то нам нужно брать предыдущее значение поля — $#onfv.

    Использование кода действия таблицы для сильной блокировки любого действия в таблице?

    Иногда нужно блокировать любое действие с таблицей, если не выполняется какое-либо условие. Часто используется для таблиц внутри циклов.

    Например, когда заказ закрыт — то ничего в нем менять нельзя.

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

    И вы в нем можете написать:

    =: if(condition: #status = 3; condition: $#nr != 1; then: $block)
    
    block: errorExeption(text: "Нельзя изменять Заказ в статусе Отгружено!")
    
    

    В этом примере мы разблокируем изменение для Создателя!