|
|
|
|
#1 |
|
северный Будда
|
А что мешает просто сделать проверку на сохранении записи?
__________________
С уважением, Вячеслав |
|
|
|
|
#2 |
|
Участник
|
|
|
|
|
|
#3 |
|
Участник
|
И кажется мне нужно было разместить тему в разделе Программирование
![]() Просьба модераторам перенести тему в раздел Программирование. Спасибо. Последний раз редактировалось Natali77; 10.04.2018 в 06:40. |
|
|
|
|
#4 |
|
северный Будда
|
Например, так:
В каждом датасурсе, поля в которых надо защищать, перекрываете метод active. Внутри метода определяете, сохранена ли запись (курсор должен иметь ненулевой RecId) и относится ли пользователь к нужной группе. Если оба условия выполнены - ставите allowEdit датасоурса в true. Это если вкратце. По-хорошему, я бы ещё в этот момент обрабатывал allowDelete. P.S. Те же манипуляции можно сделать на validateWrite таблицы датасоурса, только там не allowEdit надо параметризировать, а возвращаемое значение.
__________________
С уважением, Вячеслав Последний раз редактировалось pitersky; 10.04.2018 в 09:39. |
|
|
|
|
#5 |
|
Участник
|
Цитата:
Сообщение от pitersky
Например, так:
В каждом датасурсе, поля в которых надо защищать, перекрываете метод active. Внутри метода определяете, сохранена ли запись (курсор должен иметь ненулевой RecId) и относится ли пользователь к нужной группе. Если оба условия выполнены - ставите allowEdit датасоурса в true. Это если вкратце. По-хорошему, я бы ещё в этот момент обрабатывал allowDelete. P.S. Те же манипуляции можно сделать на validateWrite таблицы датасоурса, только там не allowEdit надо параметризировать, а возвращаемое значение. |
|
|
|
|
#6 |
|
северный Будда
|
Цитата:
X++: boolean isValidGroup = (UserInfoHelp::userInUserGroup(curUserId(), 'Admin' ) || UserInfoHelp::userInUserGroup(curUserId(), 'Бухгалтерия' )); MyTable this_orig = this.orig(); if (this.RecId && !isValidGroup) { if (this.FieldToCheck != this_orig.FieldToCheck) { ret = checkFailed("This field can be changed only by admins or accountants"); } }
__________________
С уважением, Вячеслав |
|
|
|
|
#7 |
|
Участник
|
Цитата:
Сообщение от pitersky
ну вот так можно на validateWrite таблицы MyTable
X++: boolean isValidGroup = (UserInfoHelp::userInUserGroup(curUserId(), 'Admin' ) || UserInfoHelp::userInUserGroup(curUserId(), 'Бухгалтерия' )); MyTable this_orig = this.orig(); if (this.RecId && !isValidGroup) { if (this.FieldToCheck != this_orig.FieldToCheck) { ret = checkFailed("This field can be changed only by admins or accountants"); } } |
|
|
|
|
#8 |
|
Участник
|
Цитата:
Сообщение от pitersky
Например, так:
В каждом датасурсе, поля в которых надо защищать, перекрываете метод active. Внутри метода определяете, сохранена ли запись (курсор должен иметь ненулевой RecId) и относится ли пользователь к нужной группе. Если оба условия выполнены - ставите allowEdit датасоурса в true. Это если вкратце. По-хорошему, я бы ещё в этот момент обрабатывал allowDelete. P.S. Те же манипуляции можно сделать на validateWrite таблицы датасоурса, только там не allowEdit надо параметризировать, а возвращаемое значение. |
|
|
| Теги |
| поля на форме запрет редактирования |
|
|
|