В моей практике поддержки 1С:Бухгалтерии на предприятии неоднократно происходили случаи такого рода. И вот я решил покончить с этим безобразием.
Для этого я сделал следующее:
1. Добавил новую роль «ИзменятьДопРеквизиты» без изменения настроек (по умолчанию);
2. Добавил новую подписку «ПроверкаВозможностиИзмененияДопРеквизитов» для объекта «ПланВидовХарактеристикОбъект.СвойстваОбъектов» на событие «ПередЗаписью». В обработчике этого события добавил код:
Процедура ПроверкаВозможностиИзмененияДопРеквизитовПередЗаписью(Источник, Отказ) Экспорт
Если НЕ РольДоступна(«ИзменятьДопРеквизиты») Тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры
3. Добавил новую подписку «ПроверкаВозможностиИзмененияЗначенийДопРеквизитов» для объекта «СправочникОбъект.ЗначенияСвойствОбъектов» на событие «ПередЗаписью». В обработчике этого события добавил код:
Процедура ПроверкаВозможностиИзмененияЗначенийДопРеквизитовПередЗаписью(Источник, Отказ) Экспорт
Если НЕ РольДоступна(«ИзменятьДопРеквизиты») Тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры
Вот, собственно, и всё. Теперь необходимо дать право «конструировать» дополнительные реквизиты определенным пользователям (в моём случае это Администратор, у вас возможно есть толковый главбух или ещё кто-нибудь) путём установки флажка «Изменять доп реквизиты» в доступных ролях пользователя.
Статья из серии «Как я открыл для себя подписки на события».
Может тогда уж лучше делать это не перед записью, а при создании?
Нормальный вариант
подписки на события — это, конечно, круто, но зачем выполнять какие-то дополнительные проверки, обработки и проч. если можно во-первых — шибко умных найти и наказать, а во-вторых — в ролях оставить только право чтения на ПВХ и справочник?
(4) SpiderRu, и помнить про эти снятия галочек при каждом обновлении? нет, уж лучше создать новые объекты и проводить обновление автоматически.
(5) Serj1C, добавленная подписка на событие — это уже ни в каком месте не автоматическое обновление. С ролями всё так же — изменил и уже не обновляешь. или — добавил копированием свою роль — типовые обновляются, нетиповые — нет.
(6) SpiderRu, «Ни в каком месте»? Да, конечно, конфигурация уже будет лишена «девственности», но обновление через поддержку догадается, что новые объекты конфигурации были созданы пользователем, обновятся только объекты поставщика. Разве это не автоматически?
(7) Serj1C, «автоматически» — это я выбрал обновление в списке обновлений, нажал ОК и пошёл пить кофе до окончания.. а когда мне открывается окно сравнения и объединения — это уже не автоматически — я уже должен смотреть, все ли галочки стоят и должен нажать «выполнить»
ЗЫ. по-моему, мы всё-таки отвлеклись от темы 🙂
(8) SpiderRu, В том то и дело, что в этом случае не нужно смотреть на галочки, они гарантированно поставятся правильно!
Полность согласен с Serj1C.
Первая заповедь: «То, что сделано не тобой, и работает — не трогать!»
Вторая заповедь: «Совершенствуй то, что работает и не тобой создано, используя новые разработанные тобой объекты и механизмы»
Третья заповедь: «Если невозможно усовершенствовать то, что не тобой создано не нарушая вторую заповедь, то комментируй каждый свой шаг. Но помни закон перехода количества (закомментированных шагов) в качество (почти не обновляемая конфа)».
Подписки я для себя открыл вместе с переходом на платформу 1с81 в достопамятном 2008 году. Замечательный механизм от разработчиков платформы. Вот с тех пор и пользую….
вы меня, конечно, извините, но — управлять правами доступа пользователей, используя подписки и игнорируя мощный инструмент ролей — это как всегда и всё в России — через одно место
Целью статьи не является показать мои знания механизма подписок или моё нежелание изменять настройки ролей от поставщика.
Основное, на что я хотел бы обратить внимание людей, которые обслуживают конфигурации от 1С в организациях, — это факт того, что есть хороший механизм (доп. реквизитов), но он не доведен до ума! Иначе эти настройки ролей были бы сделаны поставщиком (т.е. 1С), а не мной. Я лишь предложил вариант, как убрать косяк, чтоб ни у кого из вас небыло моих проблем с пользователями.
статья из разделка для новичков.
Предлагаю завести раздел , для новичков, где можно просто выкладывать статьи, но без плюсов.
Плюсовать не за что.
(13) на этом сайте 90% разработок идет из серии «Для новичков».
Статья достойна плюса хотя бы потому, что позволяет свести проблемы при обновлении к 0 при этом улучшая функционал основного решения.
Как-то мимо меня прошел механизм дополнительных реквизитов. Спасибо вам.
зачем вообще писть код, если можно сделать по другому.
Ставишь в роли голочку «Чтение, Просмотр и Ввод по строке»
А в режиме пользователя есть волшебная внопка «редактировать в диалоге». Они могу только открыть и не могут ничего добавить и изменить!
Я у себя реализовал такой механизм для справочника номенклатура. На форме элемента установил галочку (утвердить), она делает проверку. А суть проверки такова. Добавил в «Настройки параметров учета» поле выбора ссылкой на справочник пользователи. И там указывается тот пользователей которому, разрешено добавлять элемент справочника. Если галочка не установлена элемент, красный значит, его нельзя выбирать в документах, как только поставили галочку элемент черный! Теперь у меня полный порядок в справочнике Номенклатура.
Да и если кто то пытается поставить галочку помимо того пользователя которого мы указывает в настройках. Вводится сообщения, идите нафиг номенклатуру утверждать может только Иванов Иван Иванович!
оставить только право чтения
(17) andervers2005, в КОРП 12 филиалов — возможность добавлять/изменять некоторые виды справочников контролируется подпиской на событие и отсутствующим на формах булевым реквизитом справочника «Пользователи».
Также через подписки и один регистр сведений реализован запрет редактирования объекта (справочник или документ) пользователем, не создавшим его. Добавленная процедура в форме объекта вставляет кнопку командной панели, информирующую о пользователе создавшем документ (справочник), и если это не текущий пользователь — форма только для просмотра 🙂
Подписки на события — это очень востребованный механизм платформы
(17) andervers2005, в КОРП 12 филиалов — возможность добавлять/изменять некоторые виды справочников контролируется подпиской на событие и отсутствующим на формах булевым реквизитом справочника «Пользователи».
Также через подписки и один регистр сведений реализован запрет редактирования объекта (справочник или документ) пользователем, не создавшим его. Добавленная процедура в форме объекта вставляет кнопку командной панели, информирующую о пользователе создавшем документ (справочник), и если это не текущий пользователь — форма только для просмотра 🙂
Подписки на события — это очень востребованный механизм платформы
Вот спасибо Очень нужна такая вещь в работе
Заслуживает плюса.
Спасибо
Классная вещь,
Очень пригодится в работе
Давно думал как ето зделать, а туту такая статья при помощи минимума показано такой потенциал,все написано просто и доступно. Автору огромное спасибо и конечно заслуженое 5+++
Нужно запретить редактировать справочник «Номенклатура» одному из 5 пользователей с ролью «Кладовщик». Если для этой роли поставить только чтение на Номенклатуру, то все пользователи не смогут редактировать. Если создать новую роль и конкретному пользователю ее назначить вместо обычного «Кладовщика», то он не сможет использовать некоторый функционал, т.к. в коде есть проверки на РольДоступна(«Кладовщик»). Выход вижу пока только один. Создать новую роль «ЗапретРедактированияНоменклатуры» и прописать обработчик ПередЗаписью для справочника Номенклатуры, который как раз и возвращает отказ, если назначена эта роль. Может вы как-то по другому предложите? Конфа самописная:)
(25) zlakizla, в этой публикации речь совсем о другом, речь о дополнительных реквизитах…..
Если Вам нужно в УТ 10 наложить ограничения на конкретного пользователя, то предлагаю добавить дополнительное право пользователю «ЗапретитьИзмененияНоменклатуры» тип Булево. Установить для этого пользователя значение Истина. И в конфигураторе добавить подписку для справочника «Номенклатура» для события «ПередЗаписью». В обработчике события проверять значение этого ДопПрава для текущего пользователя…..как-то так