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

Есть в конфигурациях от 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 не будет опубликован. Обязательные поля помечены *