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

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

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

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

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

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

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

26 Comments

  1. Поручик

    Статья из серии «Как я открыл для себя подписки на события».

    Reply
  2. Famza

    Может тогда уж лучше делать это не перед записью, а при создании?

    Reply
  3. _smile_

    Нормальный вариант

    Reply
  4. WolfKgn

    подписки на события — это, конечно, круто, но зачем выполнять какие-то дополнительные проверки, обработки и проч. если можно во-первых — шибко умных найти и наказать, а во-вторых — в ролях оставить только право чтения на ПВХ и справочник?

    Reply
  5. Serj1C

    (4) SpiderRu, и помнить про эти снятия галочек при каждом обновлении? нет, уж лучше создать новые объекты и проводить обновление автоматически.

    Reply
  6. WolfKgn

    (5) Serj1C, добавленная подписка на событие — это уже ни в каком месте не автоматическое обновление. С ролями всё так же — изменил и уже не обновляешь. или — добавил копированием свою роль — типовые обновляются, нетиповые — нет.

    Reply
  7. Serj1C

    (6) SpiderRu, «Ни в каком месте»? Да, конечно, конфигурация уже будет лишена «девственности», но обновление через поддержку догадается, что новые объекты конфигурации были созданы пользователем, обновятся только объекты поставщика. Разве это не автоматически?

    Reply
  8. WolfKgn

    (7) Serj1C, «автоматически» — это я выбрал обновление в списке обновлений, нажал ОК и пошёл пить кофе до окончания.. а когда мне открывается окно сравнения и объединения — это уже не автоматически — я уже должен смотреть, все ли галочки стоят и должен нажать «выполнить»

    ЗЫ. по-моему, мы всё-таки отвлеклись от темы 🙂

    Reply
  9. Serj1C

    (8) SpiderRu, В том то и дело, что в этом случае не нужно смотреть на галочки, они гарантированно поставятся правильно!

    Reply
  10. Igor030370

    Полность согласен с Serj1C.

    Первая заповедь: «То, что сделано не тобой, и работает — не трогать!»

    Вторая заповедь: «Совершенствуй то, что работает и не тобой создано, используя новые разработанные тобой объекты и механизмы»

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

    Подписки я для себя открыл вместе с переходом на платформу 1с81 в достопамятном 2008 году. Замечательный механизм от разработчиков платформы. Вот с тех пор и пользую….

    Reply
  11. WolfKgn

    вы меня, конечно, извините, но — управлять правами доступа пользователей, используя подписки и игнорируя мощный инструмент ролей — это как всегда и всё в России — через одно место

    Reply
  12. Igor030370

    Целью статьи не является показать мои знания механизма подписок или моё нежелание изменять настройки ролей от поставщика.

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

    Reply
  13. sserazm

    статья из разделка для новичков.

    Предлагаю завести раздел , для новичков, где можно просто выкладывать статьи, но без плюсов.

    Плюсовать не за что.

    Reply
  14. Valerich

    (13) на этом сайте 90% разработок идет из серии «Для новичков».

    Статья достойна плюса хотя бы потому, что позволяет свести проблемы при обновлении к 0 при этом улучшая функционал основного решения.

    Reply
  15. vdi1950

    Как-то мимо меня прошел механизм дополнительных реквизитов. Спасибо вам.

    Reply
  16. andervers2005

    зачем вообще писть код, если можно сделать по другому.

    Ставишь в роли голочку «Чтение, Просмотр и Ввод по строке»

    А в режиме пользователя есть волшебная внопка «редактировать в диалоге». Они могу только открыть и не могут ничего добавить и изменить!

    Reply
  17. andervers2005

    Я у себя реализовал такой механизм для справочника номенклатура. На форме элемента установил галочку (утвердить), она делает проверку. А суть проверки такова. Добавил в «Настройки параметров учета» поле выбора ссылкой на справочник пользователи. И там указывается тот пользователей которому, разрешено добавлять элемент справочника. Если галочка не установлена элемент, красный значит, его нельзя выбирать в документах, как только поставили галочку элемент черный! Теперь у меня полный порядок в справочнике Номенклатура.

    Да и если кто то пытается поставить галочку помимо того пользователя которого мы указывает в настройках. Вводится сообщения, идите нафиг номенклатуру утверждать может только Иванов Иван Иванович!

    Reply
  18. italic

    оставить только право чтения

    Reply
  19. Borisych

    (17) andervers2005, в КОРП 12 филиалов — возможность добавлять/изменять некоторые виды справочников контролируется подпиской на событие и отсутствующим на формах булевым реквизитом справочника «Пользователи».

    Также через подписки и один регистр сведений реализован запрет редактирования объекта (справочник или документ) пользователем, не создавшим его. Добавленная процедура в форме объекта вставляет кнопку командной панели, информирующую о пользователе создавшем документ (справочник), и если это не текущий пользователь — форма только для просмотра 🙂

    Подписки на события — это очень востребованный механизм платформы

    Reply
  20. Borisych

    (17) andervers2005, в КОРП 12 филиалов — возможность добавлять/изменять некоторые виды справочников контролируется подпиской на событие и отсутствующим на формах булевым реквизитом справочника «Пользователи».

    Также через подписки и один регистр сведений реализован запрет редактирования объекта (справочник или документ) пользователем, не создавшим его. Добавленная процедура в форме объекта вставляет кнопку командной панели, информирующую о пользователе создавшем документ (справочник), и если это не текущий пользователь — форма только для просмотра 🙂

    Подписки на события — это очень востребованный механизм платформы

    Reply
  21. balabani

    Вот спасибо Очень нужна такая вещь в работе

    Reply
  22. ms200999

    Заслуживает плюса.

    Reply
  23. farhod54

    Спасибо

    Классная вещь,

    Очень пригодится в работе

    Reply
  24. electronik

    Давно думал как ето зделать, а туту такая статья при помощи минимума показано такой потенциал,все написано просто и доступно. Автору огромное спасибо и конечно заслуженое 5+++

    Reply
  25. zlakizla

    Нужно запретить редактировать справочник «Номенклатура» одному из 5 пользователей с ролью «Кладовщик». Если для этой роли поставить только чтение на Номенклатуру, то все пользователи не смогут редактировать. Если создать новую роль и конкретному пользователю ее назначить вместо обычного «Кладовщика», то он не сможет использовать некоторый функционал, т.к. в коде есть проверки на РольДоступна(«Кладовщик»). Выход вижу пока только один. Создать новую роль «ЗапретРедактированияНоменклатуры» и прописать обработчик ПередЗаписью для справочника Номенклатуры, который как раз и возвращает отказ, если назначена эта роль. Может вы как-то по другому предложите? Конфа самописная:)

    Reply
  26. Igor030370

    (25) zlakizla, в этой публикации речь совсем о другом, речь о дополнительных реквизитах…..

    Если Вам нужно в УТ 10 наложить ограничения на конкретного пользователя, то предлагаю добавить дополнительное право пользователю «ЗапретитьИзмененияНоменклатуры» тип Булево. Установить для этого пользователя значение Истина. И в конфигураторе добавить подписку для справочника «Номенклатура» для события «ПередЗаписью». В обработчике события проверять значение этого ДопПрава для текущего пользователя…..как-то так

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *