Что является слабой блокировкой?
Любые блокировки через 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: "Нельзя изменять Заказ в статусе Отгружено!")
В этом примере мы разблокируем изменение для Создателя!