|
![]() |
#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 надо параметризировать, а возвращаемое значение. |
|
Теги |
поля на форме запрет редактирования |
|
|