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

Администрирование - Защита, права, пароли

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

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

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

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

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

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

См. также

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

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

Подписки я для себя открыл вместе с переходом на платформу 1с81 в достопамятном 2008 году. Замечательный механизм от разработчиков платформы. Вот с тех пор и пользую....
11. SpiderRu (WolfKgn) 11.11.11 13:45 Сейчас в теме
вы меня, конечно, извините, но - управлять правами доступа пользователей, используя подписки и игнорируя мощный инструмент ролей - это как всегда и всё в России - через одно место
Новиков; +1 Ответить
12. Игорь Калчев (Igor030370) 165 11.11.11 14:45 Сейчас в теме
Целью статьи не является показать мои знания механизма подписок или моё нежелание изменять настройки ролей от поставщика.
Основное, на что я хотел бы обратить внимание людей, которые обслуживают конфигурации от 1С в организациях, - это факт того, что есть хороший механизм (доп. реквизитов), но он не доведен до ума! Иначе эти настройки ролей были бы сделаны поставщиком (т.е. 1С), а не мной. Я лишь предложил вариант, как убрать косяк, чтоб ни у кого из вас небыло моих проблем с пользователями.
13. Серазм С (sserazm) 14.11.11 12:41 Сейчас в теме
статья из разделка для новичков.
Предлагаю завести раздел , для новичков, где можно просто выкладывать статьи, но без плюсов.
Плюсовать не за что.
14. Валерий Дубовой (Valerich) 1620 16.11.11 03:32 Сейчас в теме
(13) на этом сайте 90% разработок идет из серии "Для новичков".
Статья достойна плюса хотя бы потому, что позволяет свести проблемы при обновлении к 0 при этом улучшая функционал основного решения.
15. Владимир Ильюков (vdi1950) 1224 16.11.11 07:44 Сейчас в теме
Как-то мимо меня прошел механизм дополнительных реквизитов. Спасибо вам.
16. Pasha Schepin (andervers2005) 39 16.11.11 10:45 Сейчас в теме
зачем вообще писть код, если можно сделать по другому.
Ставишь в роли голочку "Чтение, Просмотр и Ввод по строке"
А в режиме пользователя есть волшебная внопка "редактировать в диалоге". Они могу только открыть и не могут ничего добавить и изменить!
17. Pasha Schepin (andervers2005) 39 16.11.11 10:51 Сейчас в теме
Я у себя реализовал такой механизм для справочника номенклатура. На форме элемента установил галочку (утвердить), она делает проверку. А суть проверки такова. Добавил в "Настройки параметров учета" поле выбора ссылкой на справочник пользователи. И там указывается тот пользователей которому, разрешено добавлять элемент справочника. Если галочка не установлена элемент, красный значит, его нельзя выбирать в документах, как только поставили галочку элемент черный! Теперь у меня полный порядок в справочнике Номенклатура.
Да и если кто то пытается поставить галочку помимо того пользователя которого мы указывает в настройках. Вводится сообщения, идите нафиг номенклатуру утверждать может только Иванов Иван Иванович!
18. Виталий Dnepr (italic) 16.11.11 14:26 Сейчас в теме
оставить только право чтения
19. Андрей Григорьев (Borisych) 502 18.11.11 02:12 Сейчас в теме
(17) andervers2005, в КОРП 12 филиалов - возможность добавлять/изменять некоторые виды справочников контролируется подпиской на событие и отсутствующим на формах булевым реквизитом справочника "Пользователи".
Также через подписки и один регистр сведений реализован запрет редактирования объекта (справочник или документ) пользователем, не создавшим его. Добавленная процедура в форме объекта вставляет кнопку командной панели, информирующую о пользователе создавшем документ (справочник), и если это не текущий пользователь - форма только для просмотра :)
Подписки на события - это очень востребованный механизм платформы
20. Андрей Григорьев (Borisych) 502 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) 59 18.03.14 13:43 Сейчас в теме
Нужно запретить редактировать справочник "Номенклатура" одному из 5 пользователей с ролью "Кладовщик". Если для этой роли поставить только чтение на Номенклатуру, то все пользователи не смогут редактировать. Если создать новую роль и конкретному пользователю ее назначить вместо обычного "Кладовщика", то он не сможет использовать некоторый функционал, т.к. в коде есть проверки на РольДоступна("Кладовщик"). Выход вижу пока только один. Создать новую роль "ЗапретРедактированияНоменклатуры" и прописать обработчик ПередЗаписью для справочника Номенклатуры, который как раз и возвращает отказ, если назначена эта роль. Может вы как-то по другому предложите? Конфа самописная:)
26. Игорь Калчев (Igor030370) 165 18.03.14 14:47 Сейчас в теме
(25) zlakizla, в этой публикации речь совсем о другом, речь о дополнительных реквизитах.....
Если Вам нужно в УТ 10 наложить ограничения на конкретного пользователя, то предлагаю добавить дополнительное право пользователю "ЗапретитьИзмененияНоменклатуры" тип Булево. Установить для этого пользователя значение Истина. И в конфигураторе добавить подписку для справочника "Номенклатура" для события "ПередЗаписью". В обработчике события проверять значение этого ДопПрава для текущего пользователя.....как-то так
Оставьте свое сообщение