|
Программный запрет удаления элемента справочника | ☑ | ||
---|---|---|---|---|
0
Sasha_1CK
26.06.13
✎
11:11
|
Платформа 1С 8.2.16.368
Конфигурация Бухгалтерия 3.0.21.14 Задача в справочнике "Пользователи" добавлен реквизит - доступ к справочнику "Мой справочник". В справочнике "МойСправочник" необходимо запретить установку пометки удаления на элемент списка справочника. Элементы справочника редактируются в форме списка. Процедура модуля формы списка &НаКлиенте Процедура СписокПередУдалением(Элемент, Отказ) // Вставить содержимое обработчика. КонецПроцедуры тупо не отрабатывает. Процедура в модуле объекта &НаСервере Процедура ПередЗаписью(Отказ) Если ПометкаУдаления тогда Отказ = не ЕстьПрава(); Если Отказ тогда Возврат; КонецЕсли; КонецЕсли; КонецПроцедуры В принципе приводит к желаемому результату, но выглядит не кошерно. Во-первых программа предлагает вопрос "пометить на удаление? да нет" Во-вторых после него появляется предупреждение с ошибкой о невозможности записи элемента. Есть ли более аккуратные способы программно предотвратить установку пометки удаления? в идеале до появления вопроса вывести пользователю предупреждение об отсутствии прав и отменить событие. З.Ы. Настройку прав в конфигураторе просьба не предлагать. Это самый крайний случай. |
|||
1
Конфигуратор1с
26.06.13
✎
11:12
|
(0) а почему просто права не отобрать?
|
|||
2
Конфигуратор1с
26.06.13
✎
11:13
|
рлс рулит)
|
|||
3
Mitriy
26.06.13
✎
11:14
|
Если ПометкаУдаления <> Ссылка.ПометкаУдаления тогда
|
|||
4
Maxus43
26.06.13
✎
11:15
|
>>Это самый крайний случай
Это самый нормальный вариант. программные затычки для этой цели - и есть быдлокод |
|||
5
Sasha_1CK
26.06.13
✎
11:16
|
(3) ну это для того что бы и снять было нельзя.
Но кошерности это не добавляет. Все равно вопрос выводиться и все равно процедура сообщает об ошибке записи. я именно это хочу обойти. Собственно есть ли такая возможность или нет смысла биться головой об стену. |
|||
6
Mitriy
26.06.13
✎
11:19
|
(5) тебе уже сказали про права... и вопрос не в тему, на фига в модуле объекта &НаСервере?
|
|||
7
zladenuw
26.06.13
✎
11:21
|
а не проще ли подписку на событие ?
|
|||
8
Sasha_1CK
26.06.13
✎
11:21
|
(4)а как выглядит нормальный вариант для ситуации
Пользователь 1 - имеет право редактировать номенклатуру. Но не имеет права редактировать контрагентов. Пользователь 2 имеет право редактировать контрагентов, но не имеет права редактировать номенклатуру. Пользователь 3 имеет право редактировать и контрагентов и номенклатуру. |
|||
9
Maxus43
26.06.13
✎
11:21
|
(7) от проблем автора это не спасёт
|
|||
10
zladenuw
26.06.13
✎
11:22
|
(9) ну я так в нетленке делал. там рлс нету и не хочу. так как конфу переписываем. пока не до них :)
|
|||
11
Maxus43
26.06.13
✎
11:22
|
(8) у тебя затычка на запрет интерактивной пометки на удаления. Это легко решается галкой в правах... при чем тут данный пример?
|
|||
12
NcSteel
26.06.13
✎
11:23
|
(0) Удали типовую кнопку и размести свою.
|
|||
13
NcSteel
26.06.13
✎
11:24
|
(11) Достаточно частая задача, когда права настраиваются не ролями, а настройками в справочниках.
|
|||
14
Соло
26.06.13
✎
11:26
|
а тупо найти где выводится "пометить на удаление?" и переписать тоже не предлагать или глобальный поиск не рулит?
|
|||
15
Sasha_1CK
26.06.13
✎
11:28
|
(11) ну как бы запрет редактирования пользователю предполагает и запрет пометки элемента справочника на удаление.
Понятно, что это решается правами - но в пределе это ведет к тому что для каждого пользователя формируется индивидуальный набор прав. И когда их набирается штук 30-40 их администрирование и обновление конфигурации становится слегка не тривиальной задачей. (12) Есть еще кнопка del. (14) уже. Есть такая сообщалка - но в из справочников не вызывается. Вызывается при сохранении настроек отчетов и из дополнительных отчетов и обработок |
|||
16
Maxus43
26.06.13
✎
11:28
|
(14) это платформенное
(13) задача да, но пример неудачный, про пометку на удаление, это платформенный вопрос и его имхо не обойти, если есть права |
|||
17
Maxus43
26.06.13
✎
11:32
|
(15) РЛС то чем не нравится?
|
|||
18
Sasha_1CK
26.06.13
✎
11:35
|
(17) А чем в данном случае РЛС то отличается?
Я так же из ПередЗаписью Вызываю контроль прав. Или я чего то не догоняю? |
|||
19
Sasha_1CK
26.06.13
✎
11:38
|
(6) если в модуле объекта к процедуре ПередЗаписью поставить директиву "наКлиенте" - она тупо не отрабатывает.
|
|||
20
Maxus43
26.06.13
✎
11:39
|
(18) да в принципе конечно ничем, если ещё и перед открытием будешь вызывать контроль прав и лочить форму от изменений.
Но от вопроса "Пометить на удаление" - не уйти |
|||
21
Лефмихалыч
26.06.13
✎
11:41
|
(0) забери у всех ролей право интерактивной пометки удаления. Потом добавь роль, у которой только это право и есть. Реквизит свой выкинь к херам - он не нужен. Пользователям, которым хотел расставить реквизит, выдай новую роль с одним правом
|
|||
22
Mitriy
26.06.13
✎
11:44
|
(19) в том-то и дело, что там вообще директивы компиляции не нужны... модуль объекта всегда на сервере...
|
|||
23
Sasha_1CK
26.06.13
✎
11:44
|
(20)
так "СписокПередНачаломДобавления" и "СписокПередНачаломИзменения" отрабатывают штатно и никаких проблем не вызывают. В принципе пользователь без галочки ничего сделать в справочнике не может. Формально задача решена - только в случае пометка на удаление - выглядит криво. И не было бы так обидно - если бы в форме списка не было события "ПередУдалением" которое тупо не работает. (21) если бы все так просто - см (8) и (15) |
|||
24
Sasha_1CK
26.06.13
✎
11:46
|
(22) Спс. буду знать. Как то до УФ раньше руки не доходили.
|
|||
25
Лефмихалыч
26.06.13
✎
11:46
|
(23) все именно и есть ТАК просто. Это называется проектирование профилей пользователей. А твой реквизит - быдлокод
|
|||
26
Sasha_1CK
26.06.13
✎
11:50
|
(25) Ну и как просто решить задачу из пункта 8? умножив ее хотя бы на 5
|
|||
27
Cyberhawk
26.06.13
✎
11:54
|
(25) а есть чтиво (инфа) по этому самому проектированию?
|
|||
28
Лефмихалыч
26.06.13
✎
11:56
|
(26) Добавить роли:
1. Редактирование номенклатуры 2. Редактирование контрагентов 3. Пометка удаления номенклатуры и контрагентов Определить (хоть на бумажке, хоть из ДО выдрать) профили: 1. Человек первого сорта - все три роли 2. Человек второго сорта - только первая роль 3. Человек третьего сорта - только вторая роль 4. Вообще не человек, а робот - только третья роль 5. ..... свой вариант, если есть И раздавать людям роли в соответствии с этими профилями. Если группы доступа из документооборота, например, выдрать или что-то подобное самому смастерить, то можно людям прямо непосредственно профили раздавать. |
|||
29
Sasha_1CK
26.06.13
✎
12:09
|
(28) Ага. Главное потом заказчика убедить этим профилям следовать.
Потому что на практике все стремится к тому что фактически у каждого пользователя индивидуальный профиль. Создать индивидуальные профили можно - управлять ими примерно через год становится невозможно. Уже проходили. |
|||
30
Лефмихалыч
26.06.13
✎
12:10
|
(29) а реквизитами твоими и костылями в коде, что легко будет через год управлять?
|
|||
31
zladenuw
26.06.13
✎
12:25
|
(30) зачем реквизит ? лучше уже РС с доп настройками и подписки на события. если влом РЛС использовать
|
|||
32
Sasha_1CK
26.06.13
✎
12:30
|
Как показывает практика - гораздо легче.
По факту у заказчика есть только три профиля Главный бухгалтер, пользователь и только просмотр. Однако затем возникают потребности запретить конкретным пользователям доступ к конкретным объектам. Если бы у 1С были права - запретить чтение, запретить изменение, запретить удаление с приоритетом над разрешением и возможность раздать роль всем пользователям (как в файерволлах) было бы проще - создал роль "запрет изменения контрагентов" назначил всем, у нужных снял. Однако по факту получается - есть пользователи - у всех есть права к контрагентам. Потом через месяц выясняется, что некий пользователь накосячил, кто то попал на разборки и следует директива - запретить доступ всем пользователям к изменениям справочника контрагенты, кроме пупкина. Как это происходит в 1С - нужно у роли "пользователь" отключить доступ к контрагентам. Создать отдельную роль "доступ к контрагентам" дать ее Пупкину. И так раз 100. И все бы ничего, но через год-два понять к каким объектам имеет доступ роль "пользователь" тупо невозможно - потому что надо зайти в каждый объект по дереву роли и проверить наличие галочек. |
|||
33
Sasha_1CK
26.06.13
✎
12:38
|
(31) а чем лучше?
|
|||
34
zladenuw
26.06.13
✎
12:46
|
(33) посмотри реализацию типовых. у них доп права реализованы через РС и РЛС. ты можешь использовать РС и подписки на событие
|
|||
35
Лефмихалыч
26.06.13
✎
12:48
|
(32) делай через реквизит, мне пофиг
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |