|
Программно запретить запись элемента | ☑ | ||
---|---|---|---|---|
0
Slowresponse
27.06.19
✎
14:24
|
Всем привет.
Вопрос в следующем - нужно с помощью расширения сделать так, чтобы при выполнении определенного условия пользователь НЕ мог записать элемент справочника. Добавил справочник в расширение, в модуле объекта написал так: &Перед("ПриЗаписи") Процедура Расш1_ПередПриЗаписи(Отказ) Если РольДоступна("Расш1_РСД") Тогда Сообщить("Недостаточно прав доступа!"); отказ = Истина; КонецЕсли; КонецПроцедуры; Но оно не работает. Уже голову сломал, гугл не помогает( Задачка вроде не сложная, но перед отпуском мозги отключились :) |
|||
1
dka80
27.06.19
✎
14:28
|
&Перед("ПриЗаписи")
Во-первых? лучше ПередЗаписью, во-вторых, лучше &После В-третьих, у тебя точно событие в расширении отрабатывается, а не метод? |
|||
2
unbred
27.06.19
✎
14:30
|
(1) &после того,как элемент записан?)) или &после ПередеЗаписью?))
|
|||
3
dka80
27.06.19
✎
14:32
|
(2) &после ПередЗаписью
|
|||
4
unbred
27.06.19
✎
14:35
|
(0) у меня почему то "возврат" просится после отказа. посмотри отладчиком,что в отказе на выходе из процедуры.
и да,передЗаписью,там тоже вроде "отказ " есть |
|||
5
aleks_default
27.06.19
✎
14:39
|
РольДоступна("Расш1_РСД") что в отладке возвращает смотрел?
|
|||
6
Slowresponse
27.06.19
✎
15:11
|
(1) Не очень понял в-третьих)
|
|||
7
repin_mike
27.06.19
✎
16:32
|
(5) РольДоступна() в 8.3 как-то странно работает, я тоже сталкивался
|
|||
8
Nuobu
27.06.19
✎
16:33
|
(7) для этого есть "Пользователи.РолиДоступны("Расш1_РСД")".
|
|||
9
Вафель
27.06.19
✎
16:34
|
лучше конечно делать
Если НЕ РольДоступна() все таки в 1с приняты разрешающие роли |
|||
10
Вафель
27.06.19
✎
16:34
|
(8) это тоже самое, только еще проверяются а вдруг полны права
|
|||
11
AlvlSpb
27.06.19
✎
19:45
|
(0) Отказ - это НЕ прекращение выполнения Процедуры. Т.е. ставишь &Перед процедурой. Твое добавление определяет Отказ = Истина. А дальше выполняется основная процедура, которая переопределяет Отказ в Ложь. В итоге твой код бесполезен. Поэтому либо в своей процедуре &Перед прекращай работу процедуры (Возврат), либо делай &После
|
|||
12
aleks_default
28.06.19
✎
11:45
|
"А дальше выполняется основная процедура, которая переопределяет Отказ в Ложь" - это проверенное утверждение?
|
|||
13
aleks_default
28.06.19
✎
11:46
|
"Поэтому либо в своей процедуре &Перед прекращай работу процедуры (Возврат), либо делай &После" - можно просто дописать "ПродолжитьВызов()" и передать туда свое значение переменной Отказ
|
|||
14
Cyberhawk
28.06.19
✎
12:00
|
(11) "дальше выполняется основная процедура, которая переопределяет Отказ в Ложь" // Это *овнокод, переменную Отказ по-хорошему надо только "взводить", но не гасить
|
|||
15
aleks_default
28.06.19
✎
12:04
|
(14) во и я о том же, хотя товаришь утверждает что это делает сама система
|
|||
16
Cyberhawk
28.06.19
✎
12:05
|
(15) Не, он пример приводит когда это может не срабатывать
|
|||
17
Cyberhawk
28.06.19
✎
12:06
|
Отказ = Истина в расширении работает. Автор что-то не осилил.
|
|||
18
Жан Пердежон
28.06.19
✎
14:38
|
роль добавь пользователю
|
|||
19
Slowresponse
28.06.19
✎
14:59
|
Всем спасибо, разобрался.
Оказывается расширения с безопасным режимом не перехватывают модуль объекта. Сделал через нужные формы. |
|||
20
Фрэнки
28.06.19
✎
15:50
|
(19) да никому просто в голову не могло прийти, что кто-то будет использовать перехват функций-обработчиков из Объекта при включенном безопасном режиме в Расширении.
|
|||
21
Slowresponse
28.06.19
✎
16:46
|
(20) К сожалению, 1C-Fresh обязывает включенный безопасный режим использовать в расширениях)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |