Настройка прав доступа по условию

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Настройка прав доступа по условию

Сообщение Vik »

Необходимо сделать, чтобы определенные пользователи не могли править проводки после определенной даты. Сделал в саппорте (5.1.33) в Правах по условиям фильтр: OBOROT.DATOB <= 31/09/2006, права только чтение (R---), пересчитал права, зашел в галактику(8.0) под пользователем, для которого настраивал - условие не работает, могу менять проводки за любую дату. Пробовал даже убрав все права - тоже ничего не изменилось. Что-то не так делаю?
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Если дает менять проводки после того, как все права убраны - значит либо они не пересчитаны, либо, если пользователь входит в группы, используются права для какой-то группы. А вообще нужно дать пользователю права на чтение данной таблицы в общем списке таблиц, а уже на изменение - в правах по условию.
thor
Местный житель
Сообщения: 289
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Saint-Petersburg
Контактная информация:

Сообщение thor »

Постройте в саппорте отчет по правам пользователя на таблицы и посмотрите, какие реально у него права на Oborot.
Если даете ему права по условиям на таблицу с правами Read Only, то нужно, чтобы у него нигде ни в личных правах, ни в групповых, членом которых он явялется, вообще не было прав на Oborot
san
Местный житель
Сообщения: 412
Зарегистрирован: 28 апр 2005, 11:34
Откуда: Галактика Млечный Путь

Сообщение san »

если заработает, можно будет менять дату проводки, а потом править любые другие поля, после чего вернуть прежнюю дату :eek:
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Мы для этого просто закрываем опер контур и бух контур.
san
Местный житель
Сообщения: 412
Зарегистрирован: 28 апр 2005, 11:34
Откуда: Галактика Млечный Путь

Сообщение san »

"Настройки "Галактики"\Бухгалтерский контур\Модификации данных после закрытия периода" = запрещать
"Настройки "Галактики"\Бухгалтерский контур\Закрытый отчетный период до" = требуемая дата
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

san писал(а):если заработает, можно будет менять дату проводки, а потом править любые другие поля, после чего вернуть прежнюю дату :eek:
Да, есть такое дело, только вот прежнюю дату вернуть уже не дает :eek:

san писал(а): "Настройки "Галактики"\Бухгалтерский контур\Модификации данных после закрытия периода" = запрещать
"Настройки "Галактики"\Бухгалтерский контур\Закрытый отчетный период до" = требуемая дата
Этот вариант известен, но он не совсем подходит, так как закрывать надо для отдельных счетов
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

если заработает, можно будет менять дату проводки, а потом править любые другие поля, после чего вернуть прежнюю дату
San прав.. По крайней мере на прежних версиях проверка шла только перед вставкой. Старое значение не проверялось.
попробуйте прикрутить тригер на OBOROT
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

Нечто вроде этого

Код: Выделить всё

handler Oborot_tgrU on trigger Oborot before update [100]
Action
{
 var buf : record as table Oborot;
 var dD  : Date;
 dD:=Date(30,09,2006);
 GetTableBuffer(buf);
 if(buf.Datob<=dD And (buf.DBSCHETO='70' Or buf.KRSCHETK='70'))
  {result:=false;
Message('Запрещено модифицировать проводки по счету 70 до '+DateToStr(dD,'DD.MM.YYYY'));
  }
 else
  Result := true;
}
Rollback
{
}
Ответить