Роли, пользователи, интерфейсы, локализация
Цель лекции: научиться управлять пользователями, работающими в системе и решать сопутствующие задачи.
4.1. Постановка задачи
С нашей конфигурацией работают многие пользователи. Логично было бы предоставить каждому из них доступ лишь к тем объектам конфигурации, которые ему нужны, скрыть от него возможности и данные, которые ему не нужны, или которые он не имеет права видеть. Например, вполне логично скрыть от пользователей, которые не занимаются начислением заработной платы, информацию из зарплатной части конфигурации. Руководителю организации можно дать возможность полного просмотра всех данных, и, если он лично не занимается редактированием этих данных, отключить возможность их редактирования. В системе обязательно должен быть администратор, который, по долгу службы, обязан иметь полный доступ ко всем объектам системы, возможность использования Конфигуратора. Эти возможности в 1С:Предприятие реализуются с помощью, во-первых, ведения списка пользователей, во-вторых - назначению пользователям так называемых ролей. Одна роль может быть назначена множеству пользователей, имеющих схожий характер работы. Одному пользователю могут быть назначены несколько ролей.
Дополнительная задача, которую нужно решить, заключается в повышении удобства работы с конфигурацией с точки зрения пользователя. Вспомните: до сих пор мы "доставали" нужные объекты из меню Операция. Это неплохое решение для работы с конфигурацией в процессе ее разработки и отладки. Но отдавать подобную систему пользователям неправильно. Они должны иметь удобные средства для работы с объектами. Эти средства реализуются с помощью так называемых интерфейсов. Интерфейс включает в себя настройки рабочей среды пользователя, в частности - пользовательское меню, которое обычно включает в себя определенным образом сгруппированные объекты. Чаще всего объекты группируют по разделам работ, реализуемых в конфигурации.
4.2. Разработка ролей
Для создания ролей в 1С:Предприятие используется общий объект конфигурации Роли. Создадим новую роль, назовем ее Администратор. По умолчанию все права находятся в отключенном состоянии. Пройдем по дереву конфигурации и установим полные права для всех объектов, рис. 4.1.
В окне настройке прав, для роли Администратор, имеет смысл установить флаг Устанавливать права для новых объектов. Если этого не сделать, то нам, при добавлении новых объектов конфигурации, придется устанавливать права для каждого нового объекта. Например, у пользователя с ролью Администратор, установлен полный набор прав по работе со справочниками. Если параметр Устанавливать права для новых объектов не установлен, тогда, при добавлении нового справочника, набор его прав окажется незаполненным. При установке параметра, соответственно, набор прав будет заполнен. Для обычных пользователей флаг Устанавливать права для новых объектов лучше не включать - иначе им, без должного контроля со стороны администратора, могут быть предоставлены не полагающиеся им права (Мы можем включить это свойство - иначе нам, при рассмотрении дальнейших примеров, придется тратить время на поддержание набора прав в актуальном состоянии при изменении конфигурации).
Создадим роль Директор. Для константы ТекстСообщения установим полные права. Для остальных объектов - права Просмотр и Чтение, рис. 4.2.
Пользователь с ролью Расчетчик должен иметь доступ к документу Начисление зарплаты, к планам видов расчетов, к регистрам расчетов, к документу Бухгалтерская операция, который используется, в том числе, для отражения в учете операций по заработной плате. Этот документ используется и другими сотрудниками, поэтому здесь мы приходим к противоречию. С одной стороны обычные сотрудники не должны иметь доступ к информации о заработной плате других сотрудников, с другой, им нужен документ Бухгалтерская операция. В подобной ситуации можно поступить двумя способами. Первый заключается в том, чтобы создать еще один документ, предназначенный исключительно для расчетчика. Второй заключается в том, чтобы настроить ограничения доступа к данным документа для разных пользователей на основании какого-либо признака документа.
Откроем документ Бухгалтерская операция, добавим, на закладке Данные, новый реквизит ( рис. 4.3):
Выведем реквизит на форму документа. Для этого откроем форму, выполним команду меню Форма > Размещение данных, установим флаг напротив реквизита Зарплата и флаг в поле Вставить надписи ( рис. 4.4). После нажатия на ОК нужно будет с помощью мыши указать место на форме, куда надо вставить реквизит.
Создадим параметр сеанса логического типа, в который будем записывать ЛОЖЬ, если в систему вошел обычный пользователь, и ИСТИНА, если - расчетчик. Для этого добавим в ветви Параметры сеанса новый параметр ( рис. 4.5):
Приступим к настройке роли Расчетчик. Установим у этой роли параметры доступа к необходимым документам и другим объектам системы. Особенность настройки заключается в том, что при задании параметров доступа к документу Бухгалтерская операция мы добавим новое ограничение доступа к данным для права Чтение. Для этого выделим право Чтение, в поле Ограничение доступа к данным нажмем на кнопку Добавить в поле появится новая запись ( рис. 4.6). В колонке Поля здесь можно указать список полей, на которые налагается ограничение (здесь в данный момент имеет смысл не делать дополнительных настроек), колонке Ограничение доступа нужно будет задать ограничение.
Выделим правую часть строки ограничения, нажмем кнопку с тремя точками и введем следующее ограничение ( рис. 4.7).
ГДЕ Зарплата = &ПользовательРасчетчик
В справочнике Сотрудники создадим новый реквизит для хранения информации о том, является ли пользователь расчетчиком:
Очень важно, создавая реквизит Пользователь, включить его индексирование. Иначе мы не сможем правильно идентифицировать пользователя при входе в систему. Реквизит будет содержать строку, соответствующую имени пользователя. Пользователей мы будем создавать ниже.
Разместим вновь созданные реквизиты на форме элемента справочника, рис. 4.8.
Все это нужно для того, чтобы, при входе пользователя в систему, можно было бы найти пользователя в справочнике Сотрудники, и, в зависимости от состояния флага Расчетчик, установить параметр сеанса ПользовательРасчетчик. После установки этого параметра он будет использован при ограничении доступа к документам Бухгалтерская операция. Расчетчики смогут видеть только документы, предназначенные для зарплатных операций, другие служащие - все документы кроме "зарплатных".
Для этого откроем модуль сеанса. Создадим в нем процедуру Установка параметров сеанса. Введем в нее следующий код ( рис. 4.9):
Сотрудник = Справочники.Сотрудники.НайтиПоРеквизиту("Пользователь", ИмяПользователя()); Если не Сотрудник.Пустая() тогда ПараметрыСеанса.ПользовательРасчетчик = Сотрудник.Расчетчик; КонецЕсли;
Здесь мы сначала пытаемся найти элемент справочника Сотрудники, который соответствует пользователю, указанному при входе в систему.
Если такой элемент найден - устанавливаем параметр сеанса ПользовательРасчетчик в соответствии со значением реквизита Расчетчик найденного элемента справочника.
Теперь создадим еще одну роль. Назовем ее Сотрудник. Откроем доступ ко всем объектам, кроме "зарплатных". В ограничении доступа к данных документа Бухгалтерская операция установим ограничение, аналогичное тому, которое задано для роли Расчетчик, рис. 4.10.