Забираю свои слова относительно того, что можно реализовать систему безопасности на уровне записи без модификации системы. Alex_V оказался прав. Т.е. технологически это возможно (на этом основывалось мое утверждение), но практика программирования, принятая в Attain, когда программисты пишут код в предположении, что они имеют доступ ко всей таблице, этому препятствует. Например, в нашем примере с операциями бюджета формировние ИД новой записи производится следующим образом (Table 96 G/L Budget Entry):
LOCAL PROCEDURE GetNextEntryNo@4() : Integer;
VAR
GLBudgetEntry@1000 : Record 96;
BEGIN
GLBudgetEntry.SETCURRENTKEY("Entry No.");
IF GLBudgetEntry.FIND('+') THEN
EXIT(GLBudgetEntry."Entry No." + 1)
ELSE
EXIT(1);
END;
Естественно, если этот код выполняется от имени пользователя, который не видит всех данных, то он будет работать некорректно. Аналогичным образом производится формирование ИД практически для всех операций :-(.
|