gifts2017

Как запретить "шипко-умным" пользователям редактировать наименование, тип и значения дополнительных реквизитов.

Опубликовал Игорь Калчев (Igor030370) в раздел Администрирование - Защита, права, пароли

Есть в конфигурациях от 1С замечательный механизм, который позволяет без изменений конфигурации добавить, например, элементам справочников допонительный реквизит. Однако в стандартной поставке 1С:Бухгалтерия каждый пользователь может переименовать этот реквизит, изменить ему тип или редактировать значения данного реквизита (например, изменить список строковых значений реквизита).
В моей практике поддержки 1С:Бухгалтерии на предприятии неоднократно происходили случаи такого рода. И вот я решил покончить с этим безобразием.

Для этого я сделал следующее:

1. Добавил новую роль "ИзменятьДопРеквизиты" без изменения настроек (по умолчанию);

2. Добавил новую подписку "ПроверкаВозможностиИзмененияДопРеквизитов" для объекта "ПланВидовХарактеристикОбъект.СвойстваОбъектов" на событие "ПередЗаписью". В обработчике этого события добавил код:
Процедура ПроверкаВозможностиИзмененияДопРеквизитовПередЗаписью(Источник, Отказ) Экспорт
Если НЕ РольДоступна("ИзменятьДопРеквизиты") Тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры

3. Добавил новую подписку "ПроверкаВозможностиИзмененияЗначенийДопРеквизитов" для объекта "СправочникОбъект.ЗначенияСвойствОбъектов" на событие "ПередЗаписью". В обработчике этого события добавил код:
Процедура ПроверкаВозможностиИзмененияЗначенийДопРеквизитовПередЗаписью(Источник, Отказ) Экспорт
Если НЕ РольДоступна("ИзменятьДопРеквизиты") Тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры

Вот, собственно, и всё. Теперь необходимо дать право "конструировать" дополнительные реквизиты определенным пользователям (в моём случае это Администратор, у вас возможно есть толковый главбух или ещё кто-нибудь) путём установки флажка "Изменять доп реквизиты" в доступных ролях пользователя.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Ожерельев (Поручик) 11.11.11 10:38
Статья из серии "Как я открыл для себя подписки на события".
2. Иван Иванов (Famza) 11.11.11 11:22
Может тогда уж лучше делать это не перед записью, а при создании?
3. _smile_ 11.11.11 12:17
4. SpiderRu (WolfKgn) 11.11.11 12:29
подписки на события - это, конечно, круто, но зачем выполнять какие-то дополнительные проверки, обработки и проч. если можно во-первых - шибко умных найти и наказать, а во-вторых - в ролях оставить только право чтения на ПВХ и справочник?
5. Serj (Serj1C) 11.11.11 12:41
(4) SpiderRu, и помнить про эти снятия галочек при каждом обновлении? нет, уж лучше создать новые объекты и проводить обновление автоматически.
6. SpiderRu (WolfKgn) 11.11.11 12:53
(5) Serj1C, добавленная подписка на событие - это уже ни в каком месте не автоматическое обновление. С ролями всё так же - изменил и уже не обновляешь. или - добавил копированием свою роль - типовые обновляются, нетиповые - нет.
7. Serj (Serj1C) 11.11.11 13:05
(6) SpiderRu, "Ни в каком месте"? Да, конечно, конфигурация уже будет лишена "девственности", но обновление через поддержку догадается, что новые объекты конфигурации были созданы пользователем, обновятся только объекты поставщика. Разве это не автоматически?
8. SpiderRu (WolfKgn) 11.11.11 13:10
(7) Serj1C, "автоматически" - это я выбрал обновление в списке обновлений, нажал ОК и пошёл пить кофе до окончания.. а когда мне открывается окно сравнения и объединения - это уже не автоматически - я уже должен смотреть, все ли галочки стоят и должен нажать "выполнить"
ЗЫ. по-моему, мы всё-таки отвлеклись от темы :)
9. Serj (Serj1C) 11.11.11 13:25
(8) SpiderRu, В том то и дело, что в этом случае не нужно смотреть на галочки, они гарантированно поставятся правильно!
10. Игорь Калчев (Igor030370) 11.11.11 13:30
Полность согласен с Serj1C.

Первая заповедь: "То, что сделано не тобой, и работает - не трогать!"
Вторая заповедь: "Совершенствуй то, что работает и не тобой создано, используя новые разработанные тобой объекты и механизмы"
Третья заповедь: "Если невозможно усовершенствовать то, что не тобой создано не нарушая вторую заповедь, то комментируй каждый свой шаг. Но помни закон перехода количества (закомментированных шагов) в качество (почти не обновляемая конфа)".

Подписки я для себя открыл вместе с переходом на платформу 1с81 в достопамятном 2008 году. Замечательный механизм от разработчиков платформы. Вот с тех пор и пользую....
11. SpiderRu (WolfKgn) 11.11.11 13:45
вы меня, конечно, извините, но - управлять правами доступа пользователей, используя подписки и игнорируя мощный инструмент ролей - это как всегда и всё в России - через одно место
Новиков; +1 Ответить
12. Игорь Калчев (Igor030370) 11.11.11 14:45
Целью статьи не является показать мои знания механизма подписок или моё нежелание изменять настройки ролей от поставщика.
Основное, на что я хотел бы обратить внимание людей, которые обслуживают конфигурации от 1С в организациях, - это факт того, что есть хороший механизм (доп. реквизитов), но он не доведен до ума! Иначе эти настройки ролей были бы сделаны поставщиком (т.е. 1С), а не мной. Я лишь предложил вариант, как убрать косяк, чтоб ни у кого из вас небыло моих проблем с пользователями.
13. Серазм С (sserazm) 14.11.11 12:41
статья из разделка для новичков.
Предлагаю завести раздел , для новичков, где можно просто выкладывать статьи, но без плюсов.
Плюсовать не за что.
14. Валерий Дубовой (Valerich) 16.11.11 03:32
(13) на этом сайте 90% разработок идет из серии "Для новичков".
Статья достойна плюса хотя бы потому, что позволяет свести проблемы при обновлении к 0 при этом улучшая функционал основного решения.
15. Владимир Ильюков (vdi1950) 16.11.11 07:44
Как-то мимо меня прошел механизм дополнительных реквизитов. Спасибо вам.
16. Pasha Schepin (andervers2005) 16.11.11 10:45
зачем вообще писть код, если можно сделать по другому.
Ставишь в роли голочку "Чтение, Просмотр и Ввод по строке"
А в режиме пользователя есть волшебная внопка "редактировать в диалоге". Они могу только открыть и не могут ничего добавить и изменить!
17. Pasha Schepin (andervers2005) 16.11.11 10:51
Я у себя реализовал такой механизм для справочника номенклатура. На форме элемента установил галочку (утвердить), она делает проверку. А суть проверки такова. Добавил в "Настройки параметров учета" поле выбора ссылкой на справочник пользователи. И там указывается тот пользователей которому, разрешено добавлять элемент справочника. Если галочка не установлена элемент, красный значит, его нельзя выбирать в документах, как только поставили галочку элемент черный! Теперь у меня полный порядок в справочнике Номенклатура.
Да и если кто то пытается поставить галочку помимо того пользователя которого мы указывает в настройках. Вводится сообщения, идите нафиг номенклатуру утверждать может только Иванов Иван Иванович!
18. Виталий Dnepr (italic) 16.11.11 14:26
оставить только право чтения
19. Андрей Григорьев (Borisych) 18.11.11 02:12
(17) andervers2005, в КОРП 12 филиалов - возможность добавлять/изменять некоторые виды справочников контролируется подпиской на событие и отсутствующим на формах булевым реквизитом справочника "Пользователи".
Также через подписки и один регистр сведений реализован запрет редактирования объекта (справочник или документ) пользователем, не создавшим его. Добавленная процедура в форме объекта вставляет кнопку командной панели, информирующую о пользователе создавшем документ (справочник), и если это не текущий пользователь - форма только для просмотра :)
Подписки на события - это очень востребованный механизм платформы
20. Андрей Григорьев (Borisych) 18.11.11 02:12
(17) andervers2005, в КОРП 12 филиалов - возможность добавлять/изменять некоторые виды справочников контролируется подпиской на событие и отсутствующим на формах булевым реквизитом справочника "Пользователи".
Также через подписки и один регистр сведений реализован запрет редактирования объекта (справочник или документ) пользователем, не создавшим его. Добавленная процедура в форме объекта вставляет кнопку командной панели, информирующую о пользователе создавшем документ (справочник), и если это не текущий пользователь - форма только для просмотра :)
Подписки на события - это очень востребованный механизм платформы
21. samir omarov (balabani) 20.11.11 03:13
Вот спасибо Очень нужна такая вещь в работе
22. igor sarafanov (ms200999) 21.11.11 14:31
23. Farhod Alimov (farhod54) 24.11.11 16:26
Спасибо
Классная вещь,
Очень пригодится в работе
24. Andrey Dyak (electronik) 23.04.12 09:20
Давно думал как ето зделать, а туту такая статья при помощи минимума показано такой потенциал,все написано просто и доступно. Автору огромное спасибо и конечно заслуженое 5+++
25. Максим Кулбараков (zlakizla) 18.03.14 13:43
Нужно запретить редактировать справочник "Номенклатура" одному из 5 пользователей с ролью "Кладовщик". Если для этой роли поставить только чтение на Номенклатуру, то все пользователи не смогут редактировать. Если создать новую роль и конкретному пользователю ее назначить вместо обычного "Кладовщика", то он не сможет использовать некоторый функционал, т.к. в коде есть проверки на РольДоступна("Кладовщик"). Выход вижу пока только один. Создать новую роль "ЗапретРедактированияНоменклатуры" и прописать обработчик ПередЗаписью для справочника Номенклатуры, который как раз и возвращает отказ, если назначена эта роль. Может вы как-то по другому предложите? Конфа самописная:)
26. Игорь Калчев (Igor030370) 18.03.14 14:47
(25) zlakizla, в этой публикации речь совсем о другом, речь о дополнительных реквизитах.....
Если Вам нужно в УТ 10 наложить ограничения на конкретного пользователя, то предлагаю добавить дополнительное право пользователю "ЗапретитьИзмененияНоменклатуры" тип Булево. Установить для этого пользователя значение Истина. И в конфигураторе добавить подписку для справочника "Номенклатура" для события "ПередЗаписью". В обработчике события проверять значение этого ДопПрава для текущего пользователя.....как-то так
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа