Запрет создания номенклатуры 1с
Тема актуальна уже много лет. Интерес к ней у слушателей не ослабевает.
Вопрос
Имеется такая задача: есть ветка номенклатуры, которая привязана к магазину, и всю номенклатуру в этой группе и подгруппах необходимо разрешить изменять только одному-двум пользователям.
У соответствующей роли можно убрать галку прав на чтение. Но как сделать, чтобы эти правила распространялись только на группу магазин, а не блокировали абсолютно все?
Спасибо за помощь и видео, очень интересно!
Ответ
Предлагаю сделать регистр сведений РазрешеннаяНоменклатура, куда записывать все номенклатуры, которые можно изменять указанным пользователям.
Например, в регламентном задании выбираем номенклатуры из определенных групп, записываем в регистр. Получается что-то похожее на состав сегментов номенклатуры из УТ 11.
Затем в роли для справочника Номенклатура для права Изменение прописать ограничение доступа, например, вот так:
То есть пользователю с этой ролью можно изменять только те элементы справочника Номенклатура, которые содержатся в указанном регистре.
Комментарий слушателя
Спасибо за совет, сделал, как вы сказали, все работает! Единственное, не смог самостоятельно доработать. Я в регистр сведений ЗапрещеннаяНоменклатура добавил измерение ЗапрещеннаяНоменклатура с типом данных СправочникСсылка.Номенклатура, установил свойство ВыборГрупп, создал форму регистра и выставил тип ВыборГрупп.
Это все работает, выбираются только группы, как и нужно. Единственное, не понимаю, как доработать условие в роли для права Изменение. Нужно запретить редактирование всего, что есть в регистре сведений, по группам.
Комментарий тренера
Отлично, что заработало! Поскольку в регистре хранятся группы номенклатуры, а не элементы, то будем работать с реквизитом Родитель. Ограничение доступа может выглядеть, например, вот так:
Комментарий слушателя
Добрый человек, все работает как нужно и спасибо еще раз за помощь! Вы крутые!
Не могу понять, куда добавить наше условие: “при перемещении смотреть ограничение на запрещенные группы”.
Комментарий тренера
Поскольку перемещение номенклатуры в другую папку – это запись в базу, для справочника Номенклатура нужно создать ограничение доступа для права Изменение:
Для реализации данной задачи пришлось редактировать конфигурацию. Для примера выкладываю демо базу ут 10.3.24.1 с измененной конфигурацией. Все изменения можно получить путем сравнения с типовой конфигурацией. Ниже идет описание использования доступа к номенклатуры для пользователя:
Основные сведения для ограничения доступа к номенклатуре
Перед настройкой ограничения доступа к номенклатуре нужно знать несколько основных принципов:
- Настраивать ограничения доступа может только администратор (пользователь с полными правами).
- Настройки доступа не распространяются на пользователей с полными правами. Пользователь, имеющий полные права, имеет доступ ко всей номенклатуре, независимо от выполненных в базе настроек.
- Настроенные ограничения действуют, только если в базе включен флаг «Ограничивать права доступа на уровне записей».
- Настроенные ограничения вступают в силу при следующем входе пользователя в базу.
Чтобы сделанные нами настройки работали, включим в базе флаг «Ограничивать права доступа на уровне записей». Для этого откроем настройки параметров учета.
Меню: Сервис – Настройка учета – Настройка параметров учета
В форме настроек на закладке «Общее» поставим соответствующий флаг:
Группы доступа к номенклатуре
Группы доступа к номенклатуре создаются в соответствующем справочнике.
Меню: Сервис – Пользователи – Группы доступа к номенклатуре
При создании группы указывается только ее наименование. Создадим группу доступа:
Указание группы доступа производится в форме номенклатуры на закладке «Прочее».
Желательно указывать группу доступа сразу, в момент создания номенклатуры, чтобы потом не проставлять ее везде.
Укажем для номенклатуры «Вентилятор BINATONE ALPINE 160вт, напольный » группу «БытоваяТехника»
Группы пользователей
Далее создадим группу пользователя на каждого пользователя в справочнике «Группы пользователей».
Меню: Сервис – Пользователи – Группы пользователей
Добавим группу, укажем ее наименование – «ТорговыйБытовойТехники». В таблице «Виды объектов доступа» поставим флаг «Номенклатура».
Если флаг «Номенклатура» не установлен, то пользователи данной группы будут иметь доступ ко всем номенклатурам, независимо от настроек прав доступа. Если флаг установлен, то по умолчанию пользователи группы вообще не имеют доступа к номенклатуре, все доступные группы номенклатур указываются отдельно.
Далее укажем состав группы – выберем пользователя «Торговый».
Пример заполненной группы пользователей:
Настройка ограничений прав доступа
Теперь нам остался последний шаг – указать, что группа пользователей «ТорговыйБытовойТехники» имеет доступ к группе номенклатур «БытоваяТехника».
Перейти к форме настройки прав доступа можно из формы группы пользователя по кнопке «Перейти» и заполнить регистры сведений «Назначение видов объектов доступа» и «Настройки прав доступа пользователей»:
Регистр сведений «Назначение видов объектов доступа»
Регистр сведений «Настройки прав доступа пользователей»
Флаг «запись» не работает.
Результат настройки ограничения доступа к номенклатуре
После сделанных настроек пользователь Торговый, зайдя в справочник номенклатуры, увидит в нем все группы и свои номенклатуры.
Для реализации данной задачи пришлось редактировать конфигурацию. Для примера выкладываю демо базу ут 10.3.24.1 с измененной конфигурацией. Все изменения можно получить путем сравнения с типовой конфигурацией. Ниже идет описание использования доступа к номенклатуры для пользователя:
Основные сведения для ограничения доступа к номенклатуре
Перед настройкой ограничения доступа к номенклатуре нужно знать несколько основных принципов:
- Настраивать ограничения доступа может только администратор (пользователь с полными правами).
- Настройки доступа не распространяются на пользователей с полными правами. Пользователь, имеющий полные права, имеет доступ ко всей номенклатуре, независимо от выполненных в базе настроек.
- Настроенные ограничения действуют, только если в базе включен флаг «Ограничивать права доступа на уровне записей».
- Настроенные ограничения вступают в силу при следующем входе пользователя в базу.
Чтобы сделанные нами настройки работали, включим в базе флаг «Ограничивать права доступа на уровне записей». Для этого откроем настройки параметров учета.
Меню: Сервис – Настройка учета – Настройка параметров учета
В форме настроек на закладке «Общее» поставим соответствующий флаг:
Группы доступа к номенклатуре
Группы доступа к номенклатуре создаются в соответствующем справочнике.
Меню: Сервис – Пользователи – Группы доступа к номенклатуре
При создании группы указывается только ее наименование. Создадим группу доступа:
Указание группы доступа производится в форме номенклатуры на закладке «Прочее».
Желательно указывать группу доступа сразу, в момент создания номенклатуры, чтобы потом не проставлять ее везде.
Укажем для номенклатуры «Вентилятор BINATONE ALPINE 160вт, напольный » группу «БытоваяТехника»
Группы пользователей
Далее создадим группу пользователя на каждого пользователя в справочнике «Группы пользователей».
Меню: Сервис – Пользователи – Группы пользователей
Добавим группу, укажем ее наименование – «ТорговыйБытовойТехники». В таблице «Виды объектов доступа» поставим флаг «Номенклатура».
Если флаг «Номенклатура» не установлен, то пользователи данной группы будут иметь доступ ко всем номенклатурам, независимо от настроек прав доступа. Если флаг установлен, то по умолчанию пользователи группы вообще не имеют доступа к номенклатуре, все доступные группы номенклатур указываются отдельно.
Далее укажем состав группы – выберем пользователя «Торговый».
Пример заполненной группы пользователей:
Настройка ограничений прав доступа
Теперь нам остался последний шаг – указать, что группа пользователей «ТорговыйБытовойТехники» имеет доступ к группе номенклатур «БытоваяТехника».
Перейти к форме настройки прав доступа можно из формы группы пользователя по кнопке «Перейти» и заполнить регистры сведений «Назначение видов объектов доступа» и «Настройки прав доступа пользователей»:
Регистр сведений «Назначение видов объектов доступа»
Регистр сведений «Настройки прав доступа пользователей»
Флаг «запись» не работает.
Результат настройки ограничения доступа к номенклатуре
После сделанных настроек пользователь Торговый, зайдя в справочник номенклатуры, увидит в нем все группы и свои номенклатуры.
Наверняка, у вас есть много вопросов относительно оплаты (как оплатить, как получить разработку, не возникнут ли проблемы и т.п.).
Ответы на самые распространенные вопросы, относящиеся к процессу покупки моих разработок, приведены на странице заказа. Для перехода к ней нажмите Оплатить картой или Заказать счет .
Там же вы найдете мои контакты, на случай если останутся вопросы.
Эта разработка позволяет настроить выборочную блокировку (открытия или изменения) справочников и документов для разных пользователей (или групп пользователей).
Тут вы можете спросить - А не проще ли обойтись установкой нужных ролей для пользователей?
Отвечаю - не всегда. Нередко типовые роли являются избыточными, и в придачу к установке нужных прав для пользователей предоставляют им дополнительные ненужные полномочия. К тому же иногда бывает нужно ограничить возможность редактирования уже проведенных документов - такую задачу типовыми средствами не решить.
Расширение позволяет дополнить функциональность типовых ролей конфигурации и в пользовательском режиме ограничить доступ конкретных пользователей (или групп) к конкретным типам объектов системы (документам или справочникам).
Для примера, ограничим группе пользователей доступ к документу Заказ клиента:
Откроем форму настройки прав доступа:
На форме настроек расположена таблица, в разных строках которой мы можем добавить настройки доступа для разных пользователей /групп. Добавляем новую строку и выбираем в ней:
- тип объекта - документ или справочник,
- имя объекта - в данном случае выбираем из выпадающего списка нужный тип документов информационной базы,
- настраиваем адресата ограничения - можно выбрать конкретного пользователя или группу пользователей (в таком случае ограничение будет срабатывать для всех пользователей, принадлежащих этой группе),
- тип запрета - запрет открытия или запрет изменения (в последнем случае форма будет открываться только на просмотр, таким образом пользователь не сможет редактировать старый документ).
Если включен запрет изменения, пользователь также не сможет перепровести/распровести документ, пометить объект на удаление или снять пометку (из журнала документов или в списке элементов какого-то справочника).
Применительно к документам запрет изменения имеет место только для проведенных документов.
Теперь попытка пользователя открыть заказ заканчивается ничем:
Ограничение не распространяется на пользователей с полными правами.
Несмотря на запрет доступа к заказам, пользователь без проблем может просматривать список заказов, ограничение касается только просмотра формы конкретного документа.
Для корректной работы расширения необходимо отключить Безопасный режим .
Вас может заинтересовать
В данной статье показано, как производится загрузка курсов валют в 1С:Предприятие 8 на примере конфигурации Бухгалтерия предприятия 3.0
В данном видео даются разъяснения, необходимые для понимания того, что такое права, роли и профили групп доступа. Затем создается пользователь и происходит базовая настройка прав него.
В данной статье описывается зачем делать свертку базы и на конкретном примере показано, как выполнить свертку информационной базы 1С:Бухгалтерия 3.0 штатными средствами.
В 1С:Бухгалтерии 2.0 (или любой другой конфигурации) может возникнуть следующая проблема: возможность создания и редактирования элементов справочника Номенклатура должны быть не у всех пользователей программы. Для решения этой проблемы можно внести изменения в типовую роль Бухгалтер, обязательную для запуска системы и поэтому установленной у всех пользователей. Но изменение типовой роли может привести к трудностям при обновлении релиза конфигурации, поэтому данное решение не является приемлемым. В 1с запрет редактирования документа или справочника можно сделать гораздо проще.
Как реализовать в 1с запрет редактирования документа или справочника
Рассмотрим решение данной задачи без изменения типовых ролей. Суть его будет заключаться в создании и использовании своих, не типовых, объектов метаданных:
1. В конфигурации создадим новую, не типовую, роль. Назовем ее Номенклатура. Никакие галочки в ней проставлять не нужно, требуется только ее наличие;
2. Добавим в конфигурацию еще один общий модуль. Можно назвать его, к примеру, НастройкиДоступа. Если в вашей базе уже есть не типовой модуль, то можно использовать его;
3. Добавим в конфигурацию еще одну подписку на событие, назовем ее ПередЗаписьюНоменклатураНастройкиДоступа. В настройках подписки укажем тип данных источника — справочник Номенклатура. Выберем нужное событие для подписки (в нашем случае ПередЗаписью). В поле Источник укажем созданный вами общий модуль. Туда автоматически будет добавлена новая процедура, обрабатывающая событие данной подписки;
4. В этой процедуре пишем следующие строки кода:
Данный программный код проверяет наличие у пользователя роли Номенклатура и разрешает или запрещает запись элемента справочника.
5. Установим роль Номенклатура тем пользователям, которым должны иметь возможность записи элементов справочника, теперь никто кроме них не сможет вносить изменения в справочник.
На основании данного алгоритма можно реализовать ограничения на запись любых документов или справочников. Для этого можно использовать одну или несколько не типовых ролей.
Читайте также: