При автоматизации складского учета в типовых конфигурациях, таких как «1С:Бухгалтерия предприятия 3.0», часто возникает задача ограничить права пользователей. Стандартный набор ролей может быть избыточным или не полностью соответствовать бизнес-процессам компании. Например, кладовщику часто требуется запретить проведение и удаление документов, закрыть доступ к созданию контрагентов и ограничить печать непроведенных документов.
Чтобы сохранить конфигурацию на полной поддержке и обеспечить простоту обновлений, оптимальным решением является использование механизма расширений конфигурации совместно с возможностями Библиотеки стандартных подсистем (БСП). В этой статье мы подробно разберем, как правильно реализовать роль «Кладовщик» со всеми ограничениями, избежав типичных ошибок начинающих разработчиков.
Типичная ошибка при создании роли в расширении — заимствование сотен типовых объектов (документов, справочников, регистров) для настройки прав «с нуля». Это превращает обновление базы данных в кошмар, так как любое изменение структуры заимствованных объектов в основной конфигурации вызовет конфликт совместимости расширения.
Мы применим комбинированный подход:
Расш1_Кладовщик, которая будет отвечать за добавление/изменение конкретных документов склада и покупок в непроведенном состоянии.Рассмотрим весь процесс по шагам.
Создадим новое расширение конфигурации в конфигураторе:
УправлениеДоступомКладовщик, и синоним. Назначение укажем как Адаптация. Снимем флажки «Активно» на время разработки, если база рабочая.Важный нюанс (Решение проблемы нехватки прав «Администрирование данных» при входе):
При создании нового расширения платформа автоматически заполняет свойство расширения Основные роли (задавая туда автоматически созданную роль по умолчанию). При использовании БСП это приводит к тому, что при запуске система выдает ошибку о нехватке прав или требует роль Администрирование данных.
Для решения этой проблемы выделим корень конфигурации расширения, откроем его свойства (F4) и полностью очистим свойство «Основные роли» (оно должно остаться пустым).
После этого добавим в расширение новую роль с именем Кладовщик.
Заказчик требует дать права на создание и корректировку только непроведенных документов для следующего списка объектов:
Разберем, как правильно заимствовать эти документы в расширение и настроить права:
ПеремещениеТоваров), кликнем по нему правой кнопкой мыши и выберем Добавить в расширение.Кладовщик.ПеремещениеТоваров и установим для него следующие права:
Типичная ловушка: Ошибка видимости реквизитов документа
Часто разработчики забывают дать права на стандартные и пользовательские реквизиты документа. Если дать права только на сам документ, но не предоставить доступ на чтение его реквизитов (таких как Дата, Номер, Проведен), программа не сможет вывести форму списка или форму документа, возвращая ошибку доступа. Убедимся, что в роли на вкладке «Поля» для каждого заимствованного документа установлены флажки «Чтение» и «Просмотр» для всех реквизитов и табличных частей.
Чтобы кладовщик мог выбирать контрагентов в документе Поступление (акты, накладные), но не имел технической возможности создавать новые элементы в справочнике Контрагенты, нам вообще не требуется программировать или заменять формы. Достаточно правильно распределить права в роли:
Контрагенты в наше расширение.Кладовщик для справочника Контрагенты установим только права Чтение и Просмотр.При таких настройках платформа 1С автоматически скроет кнопку «Создать» (плюсик) в форме выбора контрагента и запретит открытие карточки на редактирование, но позволит выбирать уже существующих партнеров из списка.
Автор темы столкнулся с проблемой: документ добавлен в расширение, права выданы, подсистема заимствована, но сам документ не отображается в интерфейсе программы.
Проанализируем причины этой проблемы и устраним их:
Использовать стандартные команды установлено в значение Истина.Склад) в расширении и выберем пункт Открыть командный интерфейс. В появившемся окне найдем команду перехода к списку нашего документа и вручную установим флажок в колонке «Видимость». При заимствовании подсистем настройки видимости стандартных команд часто сбрасываются платформой по умолчанию.Для реализации этого требования напишем небольшой код в расширении. Мы можем перехватить процедуру печати в общем модуле БСП УправлениеПечатьюКлиент или выполнить перехват непосредственно перед выводом на печать.
Рассмотрим пример создания программного перехватчика для клиентской печати. Добавим в расширение общий модуль УправлениеПечатьюКлиент с возможностью вызова серверных методов. Создадим процедуру-предобработку:
&Вместо("ВыполнитьОткрытиеПечатнойФормы")
Процедура Расш1_ВыполнитьОткрытиеПечатнойФормы(ПараметрыОткрытия, НастройкиВывода, ПараметрыВывода)
// Проверим, назначена ли пользователю наша ограниченная роль
Если РольДоступна("Расш1_Кладовщик") Тогда
// Из параметров открытия получаем массив документов, отправленных на печать
МассивОбъектов = ПараметрыОткрытия.ОбъектыПечати;
Для Каждого СсылкаИзСписка Из МассивОбъектов Цикл
// Проверяем статус проведения документа через стандартный метод БСП
Если Не ОбщегоНазначенияВызовСервера.ЗначениеРеквизитаОбъекта(СсылкаИзСписка, "Проведен") Тогда
ВызватьИсключение "Вывод на печать непроведенных документов для роли 'Кладовщик' запрещен!";
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Если проверки пройдены, вызываем оригинальный метод печати
ПродолжитьВызов(ПараметрыОткрытия, НастройкиВывода, ПараметрыВывода);
КонецПроцедуры
Этот код надежно заблокирует печать любых непроведенных документов (как складских, так и документов поступления) для любого пользователя, подпадающего под ограничения роли кладовщика.
Для корректного запуска сеанса пользователя под созданной ролью выполним следующие настройки в режиме Предприятия:
Профиль Кладовщик (Склад).Кладовщик (УправлениеДоступомКладовщик).Запуск тонкого клиента, Запуск веб-клиента, Вывод (необходима для работы экранных форм и базовой печати).Чтение базовой нормативно-справочной информации или Чтение данных бухгалтерии.Разделение прав таким способом гарантирует стабильность конфигурации при последующих обновлениях. Все стандартные механизмы обновления «1С:Бухгалтерии» будут проходить в штатном режиме, а расширение потребует минимального контроля со стороны технического специалиста.