Использование встроенного механизма ограничения доступа в 8.1 (Управление торговлей)
Пример для справочника с небольшим числом строк (по типу справочника "Организации")
Ограничения доступа по кассам
В конфигураторе:
Перечисления/ВидыОбъектовДоступа/Значение - добавить Кассы
РегистрыСведений/ОбъектыДоступаДокументов/Измерения/ОбъектДоступа - добавить тип Справочник.Кассы
РегистрыСведений/НастройкиПравДоступаПользователей/Измерения/ОбъектДоступа - добавить тип Справочник.Кассы
РегистрыСведений/НастройкиПравДоступаПользователей/Измерения/ВладелецПравДоступа - добавить тип Справочник.Кассы
Общие модули/НастройкаПравДоступа/ПолучитьВидОбъектаДоступа:
Обработки/НастройкаПравДоступа/Формы/НастройкаПравДоступа/Форма - добавить копированием страницу "Кассы", добавить копированием на страницу табличное поле ТаблицаПравДоступа_Кассы
Обработки/НастройкаПравДоступа/Формы/НастройкаПравДоступа/Форма/ПередОткрытием:
Обработки/НастройкаПравДоступа/Формы/НастройкаПравДоступа/Форма/ПолучитьСписокОбластейДанных:
В ролях скопировать существующие шаблоны по организации и контрагенту, по доступу к журналам документов, дополнить их проверкой по кассе: скопировать секцию выбора по организации, заменить ссылку на справочник Организации ссылкой на справочник Кассы, изменить номер #Параметр(1). Скорректировать ограничения для нужных документов и журналов документов (изменить шаблон на новый, добавить параметр по кассе в соответствии с порядковым номером - наименование реквизита документа). Каждую роль настраиваем отдельно, ограничения можно скопировать.
В предприятии:
В настройках параметров учета поставить галочку "Ограничивать права доступа на уровне записей". Создать группы пользователей в справочнике ГруппыПользователей, определить их состав. Поставить галочку для вида объекта доступа, по которому будут установлены ограничения - Кассы.
Заполнить регистр НастройкиПравДоступаПользователей - вручную или интерактивно обработкой "НастройкаПравДоступа" (Кнопка "Права" с справочнике ГруппыПользователей).
Для корректной работы механизма ограничений заполнить регистр сведений ОбъектыДоступаДокументов - перепровести документы, к которым относятся ограничения доступа. Если этого не делать, в журналах и списках документов они будут видны, но открываться не будут.
Пример для справочника с небольшим числом строк (по типу справочника "Организации")
Ограничения доступа по кассам
В конфигураторе:
Перечисления/ВидыОбъектовДоступа/Значение - добавить Кассы
РегистрыСведений/ОбъектыДоступаДокументов/Измерения/ОбъектДоступа - добавить тип Справочник.Кассы
РегистрыСведений/НастройкиПравДоступаПользователей/Измерения/ОбъектДоступа - добавить тип Справочник.Кассы
РегистрыСведений/НастройкиПравДоступаПользователей/Измерения/ВладелецПравДоступа - добавить тип Справочник.Кассы
Общие модули/НастройкаПравДоступа/ПолучитьВидОбъектаДоступа:
Функция ПолучитьВидОбъектаДоступа(ОбъектДоступа) Экспорт Если ТипЗнч(ОбъектДоступа) = Тип("СправочникСсылка.Организации") Тогда Возврат Перечисления.ВидыОбъектовДоступа.Организации; //ДОБАВЛЯЕМ ТЕКСТ ИначеЕсли ТипЗнч(ОбъектДоступа) = Тип("СправочникСсылка.Кассы") Тогда Возврат Перечисления.ВидыОбъектовДоступа.Кассы; //ДОБАВЛЯЕМ ТЕКСТ ИначеЕсли ТипЗнч(ОбъектДоступа) = Тип("СправочникСсылка.ГруппыДоступаККонтрагентам") Тогда Возврат Перечисления.ВидыОбъектовДоступа.Контрагенты; Иначе Возврат Перечисления.ВидыОбъектовДоступа.ПустаяСсылка(); КонецЕсли; КонецФункции
Для интерактивной настройки прав доступа - необязательная часть
Обработки/НастройкаПравДоступа/Формы/НастройкаПравДоступа/Форма - добавить копированием страницу "Кассы", добавить копированием на страницу табличное поле ТаблицаПравДоступа_Кассы
Обработки/НастройкаПравДоступа/Формы/НастройкаПравДоступа/Форма/ПередОткрытием:
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Если НЕ ПараметрыСеанса.ИспользоватьОграниченияПравДоступаНаУровнеЗаписей Тогда Предупреждение("В конфигурации отключено использование ограничения прав доступа не уровне записей."); Отказ = Истина; Возврат; КонецЕсли; ТипыОбъектовДоступа = Новый Структура; ТипыОбъектовДоступа.Вставить("Организации", Тип("СправочникСсылка.Организации")); ТипыОбъектовДоступа.Вставить("Контрагенты", Тип("СправочникСсылка.ГруппыДоступаККонтрагентам")); //ДОБАВЛЯЕМ ТЕКСТ ТипыОбъектовДоступа.Вставить("Кассы", Тип("СправочникСсылка.Кассы")); //ДОБАВЛЯЕМ ТЕКСТ СсылкаОбъекта = ЭтаФорма.КлючУникальности; МетаданныеОбъекта = СсылкаОбъекта.Метаданные(); Если Не НаличиеПраваНаЧтениеСсылки(СсылкаОбъекта) Тогда Предупреждение("Отсутствует право на чтение объекта!"); Отказ = Истина; Возврат; КонецЕсли; НастройкаПользователя = ТипЗнч(СсылкаОбъекта) = Тип("СправочникСсылка.ГруппыПользователей"); СформироватьЗакладки(); ОбновитьОтборПоНаследуемымЗаписям(); ПраваДоступаПользователей = РегистрыСведений.НастройкиПравДоступаПользователей.СоздатьНаборЗаписей(); НастройкаПравДоступа.ПрочитатьПраваДоступаКОбъекту(ПраваДоступаПользователей, СсылкаОбъекта); ПрочитатьТаблицыПравДоступа(ПраваДоступаПользователей); Заголовок = Заголовок + ": " + ?(НЕ ЗначениеЗаполнено(МетаданныеОбъекта.Синоним), МетаданныеОбъекта.Имя, МетаданныеОбъекта.Синоним) + ": " + ?(НЕ ЗначениеЗаполнено(СсылкаОбъекта),"<Весь справочник>", Строка(СсылкаОбъекта)); КонецПроцедуры
Обработки/НастройкаПравДоступа/Формы/НастройкаПравДоступа/Форма/ПолучитьСписокОбластейДанных:
Функция ПолучитьСписокОбластейДанных(ТипДанных) СписокОбластей = Новый СписокЗначений; Если ТипДанных = Тип("СправочникСсылка.Организации") Тогда СписокОбластей.Добавить(Перечисления.ВидыОбъектовДоступа.Организации); //ДОБАВЛЯЕМ ТЕКСТ ИначеЕсли ТипДанных = Тип("СправочникСсылка.Кассы") Тогда СписокОбластей.Добавить(Перечисления.ВидыОбъектовДоступа.Кассы); //ДОБАВЛЯЕМ ТЕКСТ ИначеЕсли ТипДанных = Тип("СправочникСсылка.ГруппыДоступаККонтрагентам") Тогда СписокОбластей.Добавить(Перечисления.ОбластиДанныхОбъектовДоступа.КонтрагентыСписок); ИначеЕсли ТипДанных = Тип("СправочникСсылка.ГруппыПользователей") Тогда // Добавим только те виды объектов доступа, для которых нет областей данных СписокОбластей.Добавить(Перечисления.ВидыОбъектовДоступа.Организации); //ДОБАВЛЯЕМ ТЕКСТ СписокОбластей.Добавить(Перечисления.ВидыОбъектовДоступа.Кассы); //ДОБАВЛЯЕМ ТЕКСТ // Добавим все области данных Для каждого Перечисление Из Перечисления.ОбластиДанныхОбъектовДоступа Цикл СписокОбластей.Добавить(Перечисление); КонецЦикла; КонецЕсли; Возврат СписокОбластей; КонецФункцииКонец Для интерактивной настройки прав доступа - необязательная часть
В ролях скопировать существующие шаблоны по организации и контрагенту, по доступу к журналам документов, дополнить их проверкой по кассе: скопировать секцию выбора по организации, заменить ссылку на справочник Организации ссылкой на справочник Кассы, изменить номер #Параметр(1). Скорректировать ограничения для нужных документов и журналов документов (изменить шаблон на новый, добавить параметр по кассе в соответствии с порядковым номером - наименование реквизита документа). Каждую роль настраиваем отдельно, ограничения можно скопировать.
В предприятии:
В настройках параметров учета поставить галочку "Ограничивать права доступа на уровне записей". Создать группы пользователей в справочнике ГруппыПользователей, определить их состав. Поставить галочку для вида объекта доступа, по которому будут установлены ограничения - Кассы.
Заполнить регистр НастройкиПравДоступаПользователей - вручную или интерактивно обработкой "НастройкаПравДоступа" (Кнопка "Права" с справочнике ГруппыПользователей).
Для корректной работы механизма ограничений заполнить регистр сведений ОбъектыДоступаДокументов - перепровести документы, к которым относятся ограничения доступа. Если этого не делать, в журналах и списках документов они будут видны, но открываться не будут.
Нашел на сайте sql.ru
Еще одна статья по теме от sanches
Комментариев нет:
Отправить комментарий