Hello AppSheet Community,
I am experiencing an issue where the “Are updates allowed?” rule in a table’s settings is being ignored.
My Goal:
I want to make records in my table “Заявки” read-only for users with the role “Менеджер” if the record’s status in the [Статус периода]
column is “Закрыт”.
What I Have Done:
I have set the following formula in the Are updates allowed?
setting for the “Заявки” table:
IF(
AND(
[ТестРоли] = “Менеджер”,
[Статус периода] = “Закрыт”
),
“READ_ONLY”,
“ALL_CHANGES”
)
The [ТестРоли]
is a working virtual column with the formula: LOOKUP(USEREMAIL(), "Сотрудники", "Email", "Роль")
.
The Problem:
Even when a “Менеджер” user views a record where [ТестРоли]
is “Менеджер” and [Статус периода]
is “Закрыт”, the user can still successfully edit and save the record without any error message.
Diagnostic Steps I Have Already Taken:
- Data confirmed: I have verified with virtual columns that for the user and record in question,
[ТестРоли]
correctly shows “Менеджер” and[Статус периода]
correctly shows “Закрыт”. - Robust formulas tested: I have tried using
UPPER(TRIM(...))
to account for whitespace or case sensitivity issues. This did not solve the problem. - No Slices: I have confirmed that there are no Slices on the “Заявки” table that could be overriding the permissions.
- No Action Conditions: The system “Edit” action has no formula in its “Behavior” condition.
- Isolation Test (Crucial Finding):
- Setting the
Are updates allowed?
rule to just"READ_ONLY"
correctly blocks all edits. - However, setting the rule to
IF(CONTAINS([Статус периода], "Закрыт"), "READ_ONLY", "ALL_CHANGES")
fails and does not block edits on closed records.
This indicates that the mechanism works in principle, but fails when trying to evaluate a condition based on a column value on the server side during a sync. This seems to be a platform-level issue.
Could you please advise?
App Name: [Здесь впишите имя вашего приложения]
Table Name: Заявки
Thank you.