3310 lines
225 KiB
Plaintext
3310 lines
225 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// Copyright (c) 2025, ООО 1С-Софт
|
||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||
// Текст лицензии доступен по ссылке:
|
||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||
|
||
#Область ПрограммныйИнтерфейс
|
||
|
||
#Область ДляВызоваИзДругихПодсистем
|
||
|
||
// Задать настройки формы отчета.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения
|
||
// - Неопределено
|
||
// КлючВарианта - Строка
|
||
// - Неопределено
|
||
// Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию
|
||
//
|
||
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
|
||
|
||
Настройки.ОтключитьСтандартноеКонтекстноеМеню = Истина;
|
||
Настройки.РазрешеноИзменятьСтруктуру = Ложь;
|
||
Настройки.ФормироватьСразу = Истина;
|
||
Настройки.События.ПриСозданииНаСервере = Истина;
|
||
Настройки.События.ПриОпределенииИспользуемыхТаблиц = Истина;
|
||
Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
|
||
Настройки.События.ПослеЗагрузкиНастроекВКомпоновщик = Истина;
|
||
Настройки.События.ПередФормированиемОтчета = Истина;
|
||
Настройки.События.ПриОпределенииПараметровВыбора = Истина;
|
||
|
||
КонецПроцедуры
|
||
|
||
// См. ОтчетыПереопределяемый.ПриСозданииНаСервере
|
||
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
|
||
|
||
РеквизитыФормы = Новый Структура("КонтекстВарианта");
|
||
ЗаполнитьЗначенияСвойств(РеквизитыФормы, Форма);
|
||
|
||
Если ЗначениеЗаполнено(РеквизитыФормы.КонтекстВарианта) Тогда
|
||
Вариант = Форма.КлючТекущегоВарианта;
|
||
ФормаПараметрыОтбор = Форма.ФормаПараметры.Отбор;
|
||
|
||
Если Вариант = "ПраваРолейИПрофилейНаОбъектМетаданных" Тогда
|
||
ФормаПараметрыОтбор.Вставить("ОбъектМетаданных", РеквизитыФормы.КонтекстВарианта);
|
||
|
||
ИначеЕсли Форма.Параметры.Свойство("ПараметрКоманды") Тогда
|
||
ИмяПараметра = "";
|
||
Если Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных" Тогда
|
||
ИмяПараметра = "Профиль";
|
||
ЗначениеПараметра = СписокПрофилейБезГрупп(Форма.Параметры.ПараметрКоманды);
|
||
|
||
ИначеЕсли Вариант = "ПраваРолей" Тогда
|
||
ИмяПараметра = "Роль";
|
||
ЗначениеПараметра = СписокИменРолейПрофилей(Форма.Параметры.ПараметрКоманды);
|
||
КонецЕсли;
|
||
Если ЗначениеЗаполнено(ИмяПараметра) Тогда
|
||
Если ФормаПараметрыОтбор.Свойство("НачальныйОтбор") Тогда
|
||
НачальныйОтбор = ФормаПараметрыОтбор.НачальныйОтбор;
|
||
Иначе
|
||
НачальныйОтбор = Новый Структура;
|
||
ФормаПараметрыОтбор.Вставить("НачальныйОтбор", НачальныйОтбор);
|
||
КонецЕсли;
|
||
НачальныйОтбор.Вставить(ИмяПараметра, ЗначениеПараметра);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Вызывается перед загрузкой новых настроек. Используется для изменения СКД отчета.
|
||
//
|
||
// Параметры:
|
||
// Контекст - Произвольный
|
||
// КлючСхемы - Строка
|
||
// КлючВарианта - Строка
|
||
// - Неопределено
|
||
// НовыеНастройкиКД - НастройкиКомпоновкиДанных
|
||
// - Неопределено
|
||
// НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных
|
||
// - Неопределено
|
||
//
|
||
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт
|
||
|
||
Если ТипЗнч(Контекст) <> Тип("ФормаКлиентскогоПриложения")
|
||
Или ТипЗнч(НовыеПользовательскиеНастройкиКД) <> Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
СхемаКомпоновкиДанных.Параметры.Роль.УстановитьДоступныеЗначения(
|
||
ПользователиСлужебный.ВсеРоли().Список.Получить());
|
||
|
||
СхемаКомпоновкиДанных.Параметры.ОбъектМетаданных.УстановитьДоступныеЗначения(
|
||
УправлениеДоступомСлужебныйПовтИсп.СписокОбъектовМетаданныхСПравами().Получить());
|
||
|
||
ДополнительныеСвойства = КомпоновщикНастроек.Настройки.ДополнительныеСвойства;
|
||
Вариант = ДополнительныеСвойства.КлючПредопределенногоВарианта;
|
||
Форма = Контекст;
|
||
ФормаПараметрыОтбор = ДополнительныеСвойства.ФормаПараметрыОтбор;
|
||
|
||
Если НовыеНастройкиКД <> Неопределено Тогда
|
||
СкрытьЛишниеПоляДанных(Вариант, ФормаПараметрыОтбор, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД);
|
||
КонецЕсли;
|
||
|
||
НедоступныеПараметры = Новый Структура;
|
||
|
||
Если Вариант = "ПраваРолей"
|
||
И Не ФормаПараметрыОтбор.Свойство("НачальныйОтбор") Тогда
|
||
|
||
Если Не ПараметрИспользуется(НовыеПользовательскиеНастройкиКД, "ОбъектМетаданных")
|
||
И Не ПараметрИспользуется(НовыеПользовательскиеНастройкиКД, "Роль") Тогда
|
||
|
||
Форма.НастройкиОтчета.ФормироватьСразу = Ложь;
|
||
КонецЕсли;
|
||
НедоступныеПараметры = Новый Структура("Право,Профиль");
|
||
Иначе
|
||
Если Не ФормаПараметрыОтбор.Свойство("НачальныйОтбор") Тогда
|
||
ФормаПараметрыОтбор.Вставить("НачальныйОтбор", Новый Структура);
|
||
КонецЕсли;
|
||
Если ТипЗнч(ФормаПараметрыОтбор.НачальныйОтбор) <> Тип("Структура") Тогда
|
||
ФормаПараметрыОтбор.НачальныйОтбор = Новый Структура;
|
||
КонецЕсли;
|
||
Если Не ФормаПараметрыОтбор.НачальныйОтбор.Свойство("НачальныйОтборУстановлен") Тогда
|
||
ФормаПараметрыОтбор.НачальныйОтбор.Вставить("НачальныйОтборУстановлен",
|
||
Не ЗначениеЗаполнено(ФормаПараметрыОтбор.НачальныйОтбор)
|
||
И ФормаПараметрыОтбор.Количество() = 1);
|
||
КонецЕсли;
|
||
|
||
Если Вариант = "ПодробныеПраваРолейНаОбъектМетаданных" Тогда
|
||
НедоступныеПараметры = Новый Структура("УровеньДоступа,
|
||
|ПраваНаРеквизиты, ПоказыватьПраваНеинтерфейсныхПодсистем,
|
||
|НеПредупреждатьОБольшомРазмереОтчета");
|
||
Если УстановленОтборПоПрофилю(ФормаПараметрыОтбор, КомпоновщикНастроек.Настройки) Тогда
|
||
НедоступныеПараметры.Вставить("Роль");
|
||
НедоступныеПараметры.Вставить("ПоказыватьОбъектыИРолиБезПрав");
|
||
Если ТипЗнч(НовыеНастройкиКД) = Тип("НастройкиКомпоновкиДанных") Тогда
|
||
НовыеНастройкиКД.ДополнительныеСвойства.Вставить("УстановленОтборПоПрофилю");
|
||
КонецЕсли;
|
||
Иначе
|
||
НедоступныеПараметры.Вставить("Профиль");
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли Вариант = "ПраваРолейИПрофилейНаОбъектМетаданных" Тогда
|
||
НедоступныеПараметры = Новый Структура("ПраваНаРеквизиты,Право,
|
||
|НеПредупреждатьОБольшомРазмереОтчета");
|
||
|
||
ИначеЕсли Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных" Тогда
|
||
Если УстановленОтборПоПрофилю(ФормаПараметрыОтбор, КомпоновщикНастроек.Настройки) Тогда
|
||
НедоступныеПараметры.Вставить("Роль");
|
||
КонецЕсли;
|
||
НедоступныеПараметры.Вставить("Право");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ФормаПараметрыОтбор.Свойство("НачальныйОтбор")
|
||
И Не ФормаПараметрыОтбор.НачальныйОтбор.НачальныйОтборУстановлен Тогда
|
||
|
||
ВсеПараметры = Новый Структура("ОбъектМетаданных, Роль, ПраваНаРеквизиты, Профиль,
|
||
|УровеньДоступа, Право, ПоказыватьОбъектыИРолиБезПрав, ФорматИмени,
|
||
|ПоказыватьПраваНеинтерфейсныхПодсистем, НеПредупреждатьОБольшомРазмереОтчета");
|
||
Иначе
|
||
ВсеПараметры = НедоступныеПараметры;
|
||
КонецЕсли;
|
||
|
||
Для Каждого ОписаниеПараметра Из ВсеПараметры Цикл
|
||
Если Не ФормаПараметрыОтбор.Свойство(ОписаниеПараметра.Ключ) Тогда
|
||
ВыключитьПараметр(ОписаниеПараметра.Ключ, НедоступныеПараметры,
|
||
НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
|
||
МодульОтчетыСервер = ОбщегоНазначения.ОбщийМодуль("ОтчетыСервер");
|
||
МодульОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКомпоновкиДанных, КлючСхемы);
|
||
КонецЕсли;
|
||
|
||
Если Не ФормаПараметрыОтбор.Свойство("НачальныйОтбор")
|
||
Или ФормаПараметрыОтбор.НачальныйОтбор.НачальныйОтборУстановлен Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ФормаПараметрыОтбор.НачальныйОтбор.НачальныйОтборУстановлен = Истина;
|
||
|
||
Если Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных"
|
||
И ФормаПараметрыОтбор.НачальныйОтбор.Свойство("Профиль") Тогда
|
||
|
||
УстановитьРежимОтображения("Профиль", РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ,
|
||
НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД);
|
||
|
||
УстановитьРежимОтображения("Роль", РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный,
|
||
НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД);
|
||
КонецЕсли;
|
||
|
||
Если ТипЗнч(ФормаПараметрыОтбор.НачальныйОтбор) = Тип("Структура") Тогда
|
||
Для Каждого КлючИЗначение Из ФормаПараметрыОтбор.НачальныйОтбор Цикл
|
||
Если КлючИЗначение.Ключ = "НачальныйОтборУстановлен" Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ВключитьПараметр(НовыеПользовательскиеНастройкиКД,
|
||
КлючИЗначение.Ключ, КлючИЗначение.Значение,
|
||
Форма.НастройкиОтчета.ФормироватьСразу);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Параметры:
|
||
// ДополнительныеПараметры - Структура
|
||
//
|
||
Процедура ПослеЗагрузкиНастроекВКомпоновщик(ДополнительныеПараметры) Экспорт
|
||
|
||
ДополнительныеСвойства = КомпоновщикНастроек.Настройки.ДополнительныеСвойства;
|
||
Вариант = ДополнительныеСвойства.КлючПредопределенногоВарианта;
|
||
ФормаПараметрыОтбор = ДополнительныеСвойства.ФормаПараметрыОтбор;
|
||
|
||
НастроитьПараметрУровеньДоступа(КомпоновщикНастроек.Настройки);
|
||
НастроитьПараметрПраво(Вариант, КомпоновщикНастроек.Настройки);
|
||
|
||
Если Вариант = "ПраваРолей" Тогда
|
||
ВариантНаименование = НСтр("ru = 'Права ролей'");
|
||
|
||
ИначеЕсли Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных" Тогда
|
||
Если УстановленОтборПоПрофилю(ФормаПараметрыОтбор, КомпоновщикНастроек.Настройки)
|
||
Или Не ПараметрИспользуется(КомпоновщикНастроек.ПользовательскиеНастройки, "Роль") Тогда
|
||
ВариантНаименование = НСтр("ru = 'Права профилей на объекты метаданных'");
|
||
Иначе
|
||
ВариантНаименование = НСтр("ru = 'Права роли и профилей на объекты метаданных'");
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли Вариант = "ПраваРолейИПрофилейНаОбъектМетаданных" Тогда
|
||
ВариантНаименование = НСтр("ru = 'Права ролей и профилей на объект метаданных'");
|
||
|
||
ИначеЕсли Вариант = "ПодробныеПраваРолейНаОбъектМетаданных" Тогда
|
||
Если УстановленОтборПоПрофилю(ФормаПараметрыОтбор, КомпоновщикНастроек.Настройки) Тогда
|
||
ВариантНаименование = НСтр("ru = 'Подробные права профилей на объект метаданных'");
|
||
Иначе
|
||
ВариантНаименование = НСтр("ru = 'Подробные права ролей на объект метаданных'");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(ВариантНаименование) Тогда
|
||
ДополнительныеСвойства.Вставить("ВариантНаименование", ВариантНаименование);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Параметры:
|
||
// КлючВарианта - Строка
|
||
// - Неопределено
|
||
// ИспользуемыеТаблицы - Массив из Строка
|
||
//
|
||
Процедура ПриОпределенииИспользуемыхТаблиц(КлючВарианта, ИспользуемыеТаблицы) Экспорт
|
||
|
||
ИспользуемыеТаблицы.Добавить(Метаданные.РегистрыСведений.ПраваРолей.ПолноеИмя());
|
||
ИспользуемыеТаблицы.Добавить(Метаданные.Справочники.ПрофилиГруппДоступа.ПолноеИмя());
|
||
|
||
КонецПроцедуры
|
||
|
||
// Параметры:
|
||
// ФормаОтчета - ФормаКлиентскогоПриложения
|
||
// ДополнительныеПараметры - Структура:
|
||
// * ТекстПредупреждения - Строка
|
||
// * ИмяПараметраХраненияОтказаОтПредупреждения - Строка
|
||
//
|
||
Процедура ПередФормированиемОтчета(ФормаОтчета, ДополнительныеПараметры) Экспорт
|
||
|
||
Вариант = КомпоновщикНастроек.Настройки.ДополнительныеСвойства.КлючПредопределенногоВарианта;
|
||
|
||
Если Вариант <> "ПраваРолей"
|
||
И Вариант <> "ПраваРолиИПрофилейНаОбъектыМетаданных" Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Значения = ЗначенияВыбранногоПараметра("НеПредупреждатьОБольшомРазмереОтчета", Истина);
|
||
Если ТипЗнч(Значения) = Тип("СписокЗначений")
|
||
И Значения[0].Значение = Истина Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Результат = ПраваРолей(Истина, Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных", Истина);
|
||
|
||
КоличествоСтрок = Результат.Иерархия.Количество();
|
||
КоличествоКолонок = Результат.Роли.Количество();
|
||
|
||
КоличествоЯчеек = КоличествоСтрок * КоличествоКолонок;
|
||
|
||
Если КоличествоЯчеек < 1000000 Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ГигабайтДо = Окр(КоличествоЯчеек / 1500000 + КоличествоСтрок / 6000, 1) + 0.4;
|
||
|
||
ДополнительныеПараметры.ИмяПараметраХраненияОтказаОтПредупреждения =
|
||
"НеПредупреждатьОБольшомРазмереОтчета";
|
||
ДополнительныеПараметры.ТекстПредупреждения =
|
||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||
НСтр("ru = 'При текущих отборах отчет может быть очень большим
|
||
|до %1 строк и %2 столбцов (%3 ячеек).
|
||
|
|
||
|Может долго формироваться.
|
||
|Может не хватить памяти (нужно ~ до %4 Гб).
|
||
|
|
||
|Рекомендуется усилить отборы.'"),
|
||
Формат(КоличествоСтрок, ""),
|
||
Формат(КоличествоКолонок, ""),
|
||
Формат(КоличествоЯчеек, ""),
|
||
Формат(ГигабайтДо, "ЧДЦ=1"));
|
||
|
||
КонецПроцедуры
|
||
|
||
// См. ОтчетыПереопределяемый.ПриОпределенииПараметровВыбора.
|
||
Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт
|
||
|
||
Если СвойстваНастройки.ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных.Роль") Тогда
|
||
Если ТипЗнч(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение) = Тип("СписокЗначений") Тогда
|
||
Для Каждого Элемент Из СвойстваНастройки.ПользовательскаяНастройкаКД.Значение Цикл
|
||
ОбъектМетаданных = Метаданные.Роли.Найти(Элемент.Значение);
|
||
Если ОбъектМетаданных = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Элемент.Представление = ОбъектМетаданных.Представление();
|
||
КонецЦикла;
|
||
ИначеЕсли ТипЗнч(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение) = Тип("Строка") Тогда
|
||
ОбъектМетаданных = Метаданные.Роли.Найти(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение);
|
||
Если ОбъектМетаданных = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
СписокЗначений = Новый СписокЗначений;
|
||
СписокЗначений.Добавить(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение, ОбъектМетаданных.Представление());
|
||
СвойстваНастройки.ПользовательскаяНастройкаКД.Значение = СписокЗначений;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если СвойстваНастройки.ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ОбъектМетаданных") Тогда
|
||
Если ТипЗнч(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение) = Тип("СписокЗначений") Тогда
|
||
Для Каждого Элемент Из СвойстваНастройки.ПользовательскаяНастройкаКД.Значение Цикл
|
||
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(Элемент.Значение);
|
||
Если ОбъектМетаданных = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Элемент.Представление = ОбъектМетаданных.Представление();
|
||
КонецЦикла;
|
||
ИначеЕсли ТипЗнч(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение) = Тип("Строка") Тогда
|
||
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение);
|
||
Если ОбъектМетаданных = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
СписокЗначений = Новый СписокЗначений;
|
||
СписокЗначений.Добавить(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение, ОбъектМетаданных.Представление());
|
||
СвойстваНастройки.ПользовательскаяНастройкаКД.Значение = СписокЗначений;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ОбработчикиСобытий
|
||
|
||
// Параметры:
|
||
// ДокументРезультат - ТабличныйДокумент
|
||
// ДанныеРасшифровки - ДанныеРасшифровкиКомпоновкиДанных
|
||
// СтандартнаяОбработка - Булево
|
||
//
|
||
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
|
||
|
||
СтандартнаяОбработка = Ложь;
|
||
|
||
НастройкиКомпоновщика = КомпоновщикНастроек.ПолучитьНастройки();
|
||
|
||
ПараметрФорматИмени = НастройкиКомпоновщика.ПараметрыДанных.Элементы.Найти("ФорматИмени");
|
||
ПараметрФорматИмениВыбранный = НастройкиКомпоновщика.ПараметрыДанных.Элементы.Найти("ФорматИмениВыбранный");
|
||
Если ПараметрФорматИмени.Использование Тогда
|
||
ПараметрФорматИмениВыбранный.Значение = ПараметрФорматИмени.Значение;
|
||
Иначе
|
||
ПараметрФорматИмениВыбранный.Значение = 0;
|
||
КонецЕсли;
|
||
ПараметрВысотаШапки = НастройкиКомпоновщика.ПараметрыДанных.Элементы.Найти("ВысотаШапки");
|
||
ВысотаШапки = 0;
|
||
Если ПараметрВысотаШапки.Использование Тогда
|
||
ВысотаШапки = ПараметрВысотаШапки.Значение;
|
||
Если ТипЗнч(ВысотаШапки) = Тип("Число") Тогда
|
||
Если ВысотаШапки < 30 Тогда
|
||
ВысотаШапки = 30;
|
||
ИначеЕсли ВысотаШапки > 350 Тогда
|
||
ВысотаШапки = 250;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
|
||
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновщика, ДанныеРасшифровки);
|
||
|
||
ВнешниеНаборыДанных = Новый Структура;
|
||
Вариант = НастройкиКомпоновщика.ДополнительныеСвойства.КлючПредопределенногоВарианта;
|
||
|
||
ПраваРолей = ПраваРолей(Вариант = "ПраваРолей" Или Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных",
|
||
Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных");
|
||
ВнешниеНаборыДанных.Вставить("Иерархия", ПраваРолей.Иерархия);
|
||
ВнешниеНаборыДанных.Вставить("Права", ПраваРолей.Права);
|
||
ВнешниеНаборыДанных.Вставить("Роли", ПраваРолей.Роли);
|
||
|
||
ПрофилиВместоРолей = НастройкиКомпоновщика.ДополнительныеСвойства.Свойство("УстановленОтборПоПрофилю");
|
||
ВнешниеНаборыДанных.Вставить("ПодробныеПраваОбъекта", ПодробныеПраваОбъекта(
|
||
Вариант = "ПодробныеПраваРолейНаОбъектМетаданных",
|
||
ПрофилиВместоРолей));
|
||
|
||
ВнешниеНаборыДанных.Вставить("ПраваРолейНаОбъект", ПраваРолейНаОбъект(
|
||
Вариант = "ПраваРолейИПрофилейНаОбъектМетаданных"));
|
||
|
||
ВнешниеНаборыДанных.Вставить("ОтборРоли", ОтборРоли(
|
||
Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных"));
|
||
|
||
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
|
||
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных , ДанныеРасшифровки);
|
||
|
||
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
|
||
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
|
||
|
||
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
|
||
|
||
ЗавершитьВывод(ДокументРезультат, ДанныеРасшифровки, Вариант, ПрофилиВместоРолей, ВысотаШапки);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныеПроцедурыИФункции
|
||
|
||
// Для процедуры ПриКомпоновкеРезультата.
|
||
Процедура ЗавершитьВывод(ДокументРезультат, ДанныеРасшифровки, Вариант, ПрофилиВместоРолей, ВысотаШапки)
|
||
|
||
Картинки = Картинки();
|
||
НетЛинии = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
|
||
// АПК:163-выкл - №598.1 Использование допустимо, так как влияет на смысл.
|
||
ТекстЕстьОграничение = НСтр("ru = 'Есть ограничение'");
|
||
// АПК:163-вкл.
|
||
|
||
Если Вариант = "ПраваРолей"
|
||
Или Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных" Тогда
|
||
ПервыйЗаголовокТаблицы = НСтр("ru = 'Вид объектов метаданных'");
|
||
|
||
ИначеЕсли Вариант = "ПодробныеПраваРолейНаОбъектМетаданных" Тогда
|
||
ПервыйЗаголовокТаблицы = ?(ПрофилиВместоРолей, НСтр("ru = 'Профиль'"), НСтр("ru = 'Роль'"));
|
||
Иначе
|
||
ПервыйЗаголовокТаблицы = НСтр("ru = 'Роль'");
|
||
КонецЕсли;
|
||
|
||
ВысотаТаблицы = ДокументРезультат.ВысотаТаблицы;
|
||
ШиринаТаблицы = ДокументРезультат.ШиринаТаблицы;
|
||
ТипИдентификаторРасшифровкиКомпоновкиДанных = Тип("ИдентификаторРасшифровкиКомпоновкиДанных");
|
||
НачальноеЗначениеЕстьПравоСОграничением =
|
||
Вариант = "ПодробныеПраваРолейНаОбъектМетаданных";
|
||
ТекстПравоРазрешено = НСтр("ru = '✔'");
|
||
|
||
Для НомерСтроки = 1 По ВысотаТаблицы Цикл
|
||
ЕстьПравоСОграничением = НачальноеЗначениеЕстьПравоСОграничением;
|
||
Для НомерКолонки = 1 По ШиринаТаблицы Цикл
|
||
Область = ДокументРезультат.Область(НомерСтроки, НомерКолонки);
|
||
|
||
Расшифровка = Область.Расшифровка;
|
||
Если ТипЗнч(Расшифровка) <> ТипИдентификаторРасшифровкиКомпоновкиДанных Тогда
|
||
Если Область.Текст = "*" Тогда
|
||
Область.Текст = "";
|
||
Область.Примечание.Текст = ТекстЕстьОграничение;
|
||
ИначеЕсли Область.Текст = "+" Тогда
|
||
Область.Текст = ТекстПравоРазрешено;
|
||
Область.Примечание.Текст = ТекстЕстьОграничение;
|
||
ИначеЕсли Область.Текст = "***" Тогда
|
||
Область.Текст = ПервыйЗаголовокТаблицы;
|
||
Если ЗначениеЗаполнено(ВысотаШапки) Тогда
|
||
Если Вариант = "ПраваРолей"
|
||
Или Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных" Тогда
|
||
ОбластьНиже = ДокументРезультат.Область(НомерСтроки + 1, НомерКолонки);
|
||
Если ЗначениеЗаполнено(Область.ВысотаСтроки)
|
||
И ЗначениеЗаполнено(ОбластьНиже.ВысотаСтроки) Тогда
|
||
ТекущаяВысота = Область.ВысотаСтроки + ОбластьНиже.ВысотаСтроки;
|
||
Область.ВысотаСтроки = ВысотаШапки * (Область.ВысотаСтроки / ТекущаяВысота);
|
||
ОбластьНиже.ВысотаСтроки = ВысотаШапки * (ОбластьНиже.ВысотаСтроки / ТекущаяВысота);
|
||
Если Область.ВысотаСтроки < 13 Тогда
|
||
Область.ВысотаСтроки = 13;
|
||
ОбластьНиже.ВысотаСтроки = ВысотаШапки - Область.ВысотаСтроки;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Иначе
|
||
Область.ВысотаСтроки = ВысотаШапки;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если Не ЕстьПравоСОграничением И НомерКолонки >= 2 Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
ЗначенияПолей = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля();
|
||
ПолеЕстьОграничение = ЗначенияПолей.Найти("ЕстьОграничение");
|
||
|
||
Если ПолеЕстьОграничение <> Неопределено Тогда
|
||
Если ПолеЕстьОграничение.Значение = Истина Тогда
|
||
Область.Примечание.Текст = ТекстЕстьОграничение;
|
||
КонецЕсли;
|
||
Продолжить;
|
||
|
||
ИначеЕсли ЗначенияПолей.Найти("ИндексКартинки") <> Неопределено Тогда
|
||
Отступ = (ЗначенияПолей.Найти("Уровень").Значение - 1) * 2;
|
||
ОбластьСтроки = ДокументРезультат.Область(НомерСтроки, , НомерСтроки);
|
||
ОбластьСтроки.СоздатьФорматСтрок();
|
||
ОбластьСправа = ДокументРезультат.Область(НомерСтроки, НомерКолонки);
|
||
ОбластьСлева = ДокументРезультат.Область(НомерСтроки, НомерКолонки - 1);
|
||
ОбластьСправа.ГраницаСлева = НетЛинии;
|
||
ОбластьСлева.ГраницаСправа = НетЛинии;
|
||
ОбластьСправа.ШиринаКолонки = Область.ШиринаКолонки + ОбластьСлева.ШиринаКолонки - Отступ;
|
||
ОбластьСлева.ШиринаКолонки = Отступ;
|
||
ОбластьСправа.Картинка = Картинки.Получить(ЗначенияПолей.Найти("ИндексКартинки").Значение).Картинка;
|
||
Если ЗначенияПолей.Найти("ЕстьПравоСОграничением").Значение = Истина Тогда
|
||
ЕстьПравоСОграничением = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если Не ЕстьПравоСОграничением И НомерКолонки >= 2 Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Для процедур ПередЗагрузкойНастроекВКомпоновщик.
|
||
Процедура СкрытьЛишниеПоляДанных(Вариант, ФормаПараметрыОтбор, НастройкиКД, ПользовательскиеНастройкиКД)
|
||
|
||
Иерархия = Новый Массив;
|
||
Права = Новый Массив;
|
||
Роли = Новый Массив;
|
||
ОтборРоли = Новый Массив;
|
||
|
||
ПодробныеПраваОбъекта = Новый Массив;
|
||
ПраваРолейНаОбъект = Новый Массив;
|
||
|
||
Если Вариант = "ПодробныеПраваРолейНаОбъектМетаданных" Тогда
|
||
ПодробныеПраваОбъекта = "*";
|
||
ПолеИмяРоли = СхемаКомпоновкиДанных.НаборыДанных.ПодробныеПраваОбъекта.Поля.Найти("ИмяРоли2");
|
||
ПолеПредставлениеРоли = СхемаКомпоновкиДанных.НаборыДанных.ПодробныеПраваОбъекта.Поля.Найти("ПредставлениеРоли2");
|
||
ПолеПрофиль = СхемаКомпоновкиДанных.НаборыДанных.ПодробныеПраваОбъекта.Поля.Найти("Профиль2");
|
||
Если УстановленОтборПоПрофилю(ФормаПараметрыОтбор, КомпоновщикНастроек.Настройки) Тогда
|
||
ПолеИмяРоли.Заголовок = НСтр("ru = 'Имя профиля'");
|
||
ПолеПредставлениеРоли.Заголовок = НСтр("ru = 'Представление профиля'");
|
||
ПолеПрофиль.Заголовок = НСтр("ru = 'Профиль'");
|
||
Иначе
|
||
ПолеИмяРоли.Заголовок = НСтр("ru = 'Имя роли'");
|
||
ПолеПредставлениеРоли.Заголовок = НСтр("ru = 'Представление роли'");
|
||
ПолеПрофиль.Заголовок = НСтр("ru = 'Профиль (не используется)'");
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли Вариант = "ПраваРолейИПрофилейНаОбъектМетаданных" Тогда
|
||
ПраваРолейНаОбъект = "*";
|
||
Иначе
|
||
Иерархия = "*";
|
||
Права = "*";
|
||
Роли = Новый Соответствие;
|
||
ПолеЕстьПраваРоли = СхемаКомпоновкиДанных.НаборыДанных.Роли.Поля.Найти("ЕстьПраваРоли");
|
||
ПолеКодРоли = СхемаКомпоновкиДанных.НаборыДанных.Права.Поля.Найти("КодРоли");
|
||
Если Вариант = "ПраваРолиИПрофилейНаОбъектыМетаданных" Тогда
|
||
Роли.Вставить("ИмяРоли", Ложь);
|
||
Роли.Вставить("ПредставлениеРоли", Ложь);
|
||
ПолеКодРоли.Заголовок = НСтр("ru = 'Код профиля'");
|
||
ПолеЕстьПраваРоли.Заголовок = НСтр("ru = 'Есть права профиля'");
|
||
Если Не УстановленОтборПоПрофилю(ФормаПараметрыОтбор, КомпоновщикНастроек.Настройки) Тогда
|
||
ОтборРоли = "*";
|
||
КонецЕсли;
|
||
Иначе
|
||
Роли.Вставить("Профиль4", Ложь);
|
||
ПолеКодРоли.Заголовок = НСтр("ru = 'Код роли'");
|
||
ПолеЕстьПраваРоли.Заголовок = НСтр("ru = 'Есть права роли'");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ИсходнаяСхема = ПолучитьМакет("Макет");
|
||
ТекущаяСхема = СхемаКомпоновкиДанных;
|
||
|
||
СкрытьПоляДанныхКромеУказанных("Иерархия", Иерархия, ИсходнаяСхема, ТекущаяСхема);
|
||
СкрытьПоляДанныхКромеУказанных("Права", Права, ИсходнаяСхема, ТекущаяСхема);
|
||
СкрытьПоляДанныхКромеУказанных("Роли", Роли, ИсходнаяСхема, ТекущаяСхема);
|
||
СкрытьПоляДанныхКромеУказанных("ОтборРоли", ОтборРоли, ИсходнаяСхема, ТекущаяСхема);
|
||
|
||
СкрытьПоляДанныхКромеУказанных("ПодробныеПраваОбъекта", ПодробныеПраваОбъекта, ИсходнаяСхема, ТекущаяСхема);
|
||
СкрытьПоляДанныхКромеУказанных("ПраваРолейНаОбъект", ПраваРолейНаОбъект, ИсходнаяСхема, ТекущаяСхема);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Для процедуры СкрытьЛишниеПоляДанных.
|
||
Процедура СкрытьПоляДанныхКромеУказанных(ИмяНабораДанных, ПутиКДанным, ИсходнаяСхема, ТекущаяСхема)
|
||
|
||
Отчеты.АнализПравДоступа.СкрытьПоляДанныхКромеУказанных(ИмяНабораДанных,
|
||
ПутиКДанным, ИсходнаяСхема, ТекущаяСхема);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Для процедуры ПослеЗагрузкиНастроекВКомпоновщик.
|
||
Процедура НастроитьПараметрУровеньДоступа(Настройки)
|
||
|
||
Параметр = Новый ПараметрКомпоновкиДанных("УровеньДоступа");
|
||
ДоступныйПараметр = Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(Параметр);
|
||
Если ДоступныйПараметр = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Список = Новый СписокЗначений;
|
||
Список.Добавить(01, НСтр("ru = 'Есть право'"));
|
||
Список.Добавить(02, НСтр("ru = 'Использование'"));
|
||
Список.Добавить(03, НСтр("ru = 'Чтение'"));
|
||
Список.Добавить(04, НСтр("ru = 'Изменение'"));
|
||
Список.Добавить(05, НСтр("ru = 'Добавление'"));
|
||
Список.Добавить(06, НСтр("ru = 'Просмотр'"));
|
||
Список.Добавить(07, НСтр("ru = 'Просмотр и Изменение'"));
|
||
Список.Добавить(08, НСтр("ru = 'Просмотр и Добавление'"));
|
||
Список.Добавить(09, НСтр("ru = 'Редактирование'"));
|
||
Список.Добавить(10, НСтр("ru = 'Редактирование и Добавление'"));
|
||
Список.Добавить(11, НСтр("ru = 'Создание'"));
|
||
Список.Добавить(12, НСтр("ru = 'Получение'"));
|
||
Список.Добавить(13, НСтр("ru = 'Установка'"));
|
||
Список.Добавить(14, НСтр("ru = 'Получение и Установка'"));
|
||
Список.Добавить(15, НСтр("ru = 'Внешний источник данных: Использование'"));
|
||
Список.Добавить(16, НСтр("ru = 'Внешний источник данных: Администрирование'"));
|
||
Список.Добавить(17, НСтр("ru = 'Внешний источник данных: Использование и Администрирование'"));
|
||
|
||
ДоступныйПараметр.ДоступныеЗначения = Список;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Для процедуры ПослеЗагрузкиНастроекВКомпоновщик.
|
||
Процедура НастроитьПараметрПраво(Вариант, Настройки)
|
||
|
||
Если Вариант <> "ПодробныеПраваРолейНаОбъектМетаданных" Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Параметр = Новый ПараметрКомпоновкиДанных("Право");
|
||
ДоступныйПараметр = Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(Параметр);
|
||
Если ДоступныйПараметр = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Контекст = КонтекстОтчетаПоОбъекту(Истина);
|
||
Если Контекст = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ДоступныйПараметр.ДоступныеЗначения = Контекст.ОписаниеПрав.СписокПрав;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Для процедуры ПередЗагрузкойНастроекВКомпоновщик.
|
||
Процедура ВключитьПараметр(ПользовательскиеНастройки, ИмяПараметра, Значение, ФормироватьСразу)
|
||
|
||
ЭлементНастройки = НастройкаПараметра(ПользовательскиеНастройки, ИмяПараметра);
|
||
Если ЭлементНастройки = Неопределено Тогда
|
||
ФормироватьСразу = Ложь;
|
||
Иначе
|
||
ЭлементНастройки.Значение = Значение;
|
||
ЭлементНастройки.Использование = ИмяПараметра <> "Профиль" Или ЗначениеЗаполнено(Значение);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Для процедуры ПередЗагрузкойНастроекВКомпоновщик.
|
||
Процедура ВыключитьПараметр(ИмяПараметра, НедоступныеПараметры, НастройкиКД, ПользовательскиеНастройкиКД)
|
||
|
||
Если НастройкиКД = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если НедоступныеПараметры.Свойство(ИмяПараметра) Тогда
|
||
Параметр = СхемаКомпоновкиДанных.Параметры.Найти(ИмяПараметра);
|
||
Параметр.ОграничениеИспользования = Истина;
|
||
Параметр.ВключатьВДоступныеПоля = Ложь;
|
||
КонецЕсли;
|
||
|
||
ЭлементНастройки = НастройкаПараметра(ПользовательскиеНастройкиКД, ИмяПараметра);
|
||
Если ЭлементНастройки = Неопределено Тогда
|
||
ЭлементНастройки = НастройкаПараметра(НастройкиКД.ПараметрыДанных, ИмяПараметра);
|
||
Если ЭлементНастройки = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ЭлементНастройки.Использование Тогда
|
||
ЭлементНастройки.Использование = Ложь;
|
||
КонецЕсли;
|
||
|
||
Если ЭлементНастройки.Значение = Истина Тогда
|
||
ЭлементНастройки.Значение = Ложь;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура УстановитьРежимОтображения(ИмяПараметра, Режим, НастройкиКД, ПользовательскиеНастройкиКД)
|
||
|
||
Если НастройкиКД = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ЭлементНастройки = НастройкаПараметра(НастройкиКД.ПараметрыДанных, ИмяПараметра);
|
||
|
||
Если ЭлементНастройки <> Неопределено Тогда
|
||
ЭлементНастройки.РежимОтображения = Режим;
|
||
КонецЕсли;
|
||
|
||
ЭлементНастройки = НастройкаПараметра(ПользовательскиеНастройкиКД, ИмяПараметра);
|
||
|
||
Если ЭлементНастройки <> Неопределено Тогда
|
||
ЭлементНастройки.РежимОтображения = Режим;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Для процедуры ВыключитьПараметр.
|
||
Функция НастройкаПараметра(ПользовательскиеНастройкиКД, ИмяПараметра)
|
||
|
||
Параметр = Новый ПараметрКомпоновкиДанных(ИмяПараметра);
|
||
|
||
Для Каждого ЭлементНастройки Из ПользовательскиеНастройкиКД.Элементы Цикл
|
||
Свойства = Новый Структура("Параметр");
|
||
ЗаполнитьЗначенияСвойств(Свойства, ЭлементНастройки);
|
||
Если Свойства.Параметр = Параметр Тогда
|
||
Возврат ЭлементНастройки;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат Неопределено;
|
||
|
||
КонецФункции
|
||
|
||
// Для процедуры ПередЗагрузкойНастроекВКомпоновщик.
|
||
Функция ПараметрИспользуется(ПользовательскиеНастройки, ИмяПараметра)
|
||
|
||
ПараметрКомпоновки = Новый ПараметрКомпоновкиДанных(ИмяПараметра);
|
||
|
||
Для Каждого ЭлементНастройки Из ПользовательскиеНастройки.Элементы Цикл
|
||
Свойства = Новый Структура("Параметр");
|
||
ЗаполнитьЗначенияСвойств(Свойства, ЭлементНастройки);
|
||
Если Свойства.Параметр = ПараметрКомпоновки Тогда
|
||
Возврат ЭлементНастройки.Использование
|
||
И ЗначениеЗаполнено(ЭлементНастройки.Значение);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат Ложь;
|
||
|
||
КонецФункции
|
||
|
||
Функция УстановленОтборПоПрофилю(ФормаПараметрыОтбор, Настройки)
|
||
|
||
Возврат ФормаПараметрыОтбор.Свойство("НачальныйОтбор")
|
||
И ФормаПараметрыОтбор.НачальныйОтбор.Свойство("Профиль")
|
||
Или Настройки.ДополнительныеСвойства.Свойство("УстановленОтборПоПрофилю");
|
||
|
||
КонецФункции
|
||
|
||
Функция ПодробныеПраваОбъекта(Заполнить, ПрофилиВместоРолей)
|
||
|
||
Права = Новый ТаблицаЗначений;
|
||
Права.Колонки.Добавить("ИмяОбъекта", ТипСтрока(430));
|
||
Права.Колонки.Добавить("ПредставлениеОбъекта", ТипСтрока(1000));
|
||
Права.Колонки.Добавить("ИмяРоли", ТипСтрока(255));
|
||
Права.Колонки.Добавить("ПредставлениеРоли", ТипСтрока(255));
|
||
Права.Колонки.Добавить("ИмяПрава", ТипСтрока(255));
|
||
Права.Колонки.Добавить("ПредставлениеПрава", ТипСтрока(255));
|
||
Права.Колонки.Добавить("ПорядокПрава", ТипЧисло(2));
|
||
Права.Колонки.Добавить("ЗначениеПрава", Новый ОписаниеТипов("Булево"));
|
||
Права.Колонки.Добавить("ЕстьОграничениеПрава", Новый ОписаниеТипов("Булево"));
|
||
Права.Колонки.Добавить("Профиль", Новый ОписаниеТипов("СправочникСсылка.ПрофилиГруппДоступа"));
|
||
|
||
Если Не Заполнить Тогда
|
||
Возврат Права;
|
||
КонецЕсли;
|
||
|
||
Контекст = КонтекстОтчетаПоОбъекту();
|
||
Если Контекст = Неопределено Тогда
|
||
Возврат Права;
|
||
КонецЕсли;
|
||
ПолноеИмяОбъекта = Контекст.ПолноеИмяОбъекта;
|
||
ПредставлениеОбъекта = Контекст.ПредставлениеОбъекта;
|
||
СписокПрав = Контекст.ОписаниеПрав.СписокПрав;
|
||
ОбъектМетаданных = Контекст.ОбъектМетаданных;
|
||
ИмяСтандартногоРеквизита = Контекст.ИмяСтандартногоРеквизита;
|
||
|
||
НайденныеПрава = Новый Соответствие;
|
||
ВыбранныеПрава = ЗначенияВыбранногоПараметра("Право");
|
||
|
||
Если ПрофилиВместоРолей Тогда
|
||
ПрофилиРолей = ПрофилиРолей();
|
||
КонецЕсли;
|
||
|
||
ОписаниеРолей = ОписаниеРолей(, ПрофилиВместоРолей);
|
||
ПоляОбъектов = Новый Соответствие;
|
||
Для Каждого ОписаниеПрава Из СписокПрав Цикл
|
||
Если ПрофилиВместоРолей Тогда
|
||
СтрокиПравПрофилей = Новый Соответствие;
|
||
КонецЕсли;
|
||
Для Каждого ОписаниеРоли Из ОписаниеРолей Цикл
|
||
ЕстьПраво = ПравоДоступа(ОписаниеПрава.Значение, ОбъектМетаданных, ОписаниеРоли.Метаданные, ИмяСтандартногоРеквизита);
|
||
Если Не ЕстьПраво Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Если ВыбранныеПрава <> Неопределено
|
||
И ВыбранныеПрава.НайтиПоЗначению(ОписаниеПрава.Значение) = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
НайденныеПрава.Вставить(ОписаниеПрава, Истина);
|
||
ОписаниеРоли.ЕстьПраваРоли = Истина;
|
||
ЕстьОграничение = Ложь;
|
||
Если ОписаниеПрава.Пометка Тогда
|
||
ЕстьОграничение = ЕстьОграничение(ОписаниеПрава.Значение,
|
||
ОбъектМетаданных, ПоляОбъектов, ОписаниеРоли.Метаданные);
|
||
КонецЕсли;
|
||
Если ПрофилиВместоРолей Тогда
|
||
ПрофилиРоли = ПрофилиРолей.Получить(ОписаниеРоли.Ссылка);
|
||
Если Не ЗначениеЗаполнено(ПрофилиРоли) Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Для Каждого Профиль Из ПрофилиРоли Цикл
|
||
СтрокаПрав = СтрокиПравПрофилей.Получить(Профиль);
|
||
Если СтрокаПрав = Неопределено Тогда
|
||
Отбор = Новый Структура("Профиль", Профиль);
|
||
СтрокаПрав = Права.Добавить();
|
||
СтрокаПрав.ИмяОбъекта = ПолноеИмяОбъекта;
|
||
СтрокаПрав.ПредставлениеОбъекта = ПредставлениеОбъекта;
|
||
СтрокаПрав.ИмяРоли = Строка(Профиль);
|
||
СтрокаПрав.ПредставлениеРоли = СтрокаПрав.ИмяРоли;
|
||
СтрокаПрав.Профиль = Профиль;
|
||
СтрокаПрав.ИмяПрава = ОписаниеПрава.Значение;
|
||
СтрокаПрав.ПредставлениеПрава = ОписаниеПрава.Представление;
|
||
СтрокаПрав.ПорядокПрава = СписокПрав.Индекс(ОписаниеПрава) + 1;
|
||
СтрокаПрав.ЗначениеПрава = Истина;
|
||
СтрокаПрав.ЕстьОграничениеПрава = ЕстьОграничение;
|
||
СтрокиПравПрофилей.Вставить(Профиль, СтрокаПрав);
|
||
Иначе
|
||
Если Не ЕстьОграничение И СтрокаПрав.ЕстьОграничениеПрава Тогда
|
||
СтрокаПрав.ЕстьОграничениеПрава = Ложь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Иначе
|
||
СтрокаПрав = Права.Добавить();
|
||
СтрокаПрав.ИмяОбъекта = ПолноеИмяОбъекта;
|
||
СтрокаПрав.ПредставлениеОбъекта = ПредставлениеОбъекта;
|
||
СтрокаПрав.ИмяРоли = ОписаниеРоли.ИмяРоли;
|
||
СтрокаПрав.ПредставлениеРоли = ОписаниеРоли.ПредставлениеРоли;
|
||
СтрокаПрав.ИмяПрава = ОписаниеПрава.Значение;
|
||
СтрокаПрав.ПредставлениеПрава = ОписаниеПрава.Представление;
|
||
СтрокаПрав.ПорядокПрава = СписокПрав.Индекс(ОписаниеПрава) + 1;
|
||
СтрокаПрав.ЗначениеПрава = Истина;
|
||
СтрокаПрав.ЕстьОграничениеПрава = ЕстьОграничение;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
|
||
Если ПоказыватьОбъектыИРолиБезПрав() И Не ПрофилиВместоРолей Тогда
|
||
Отбор = Новый Структура("ЕстьПраваРоли", Ложь);
|
||
ОписаниеРолейБезПрав = ОписаниеРолей.НайтиСтроки(Отбор);
|
||
Если Права.Количество() = 0 Тогда
|
||
ИмяПрава = "";
|
||
ПредставлениеПрава = "";
|
||
ПорядокПрава = 0;
|
||
Если СписокПрав.Количество() > 0 Тогда
|
||
ПервоеПраво = Неопределено;
|
||
Для Каждого ОписаниеПрава Из СписокПрав Цикл
|
||
Если ВыбранныеПрава = Неопределено
|
||
Или ВыбранныеПрава.НайтиПоЗначению(ПервоеПраво.Значение) <> Неопределено Тогда
|
||
ПервоеПраво = ОписаниеПрава;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Если ПервоеПраво <> Неопределено Тогда
|
||
ИмяПрава = ПервоеПраво.Значение;
|
||
ПредставлениеПрава = ПервоеПраво.Представление;
|
||
НайденныеПрава.Вставить(ПервоеПраво, Истина);
|
||
ПорядокПрава = 1;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Иначе
|
||
ИмяПрава = Права[0].ИмяПрава;
|
||
ПредставлениеПрава = Права[0].ПредставлениеПрава;
|
||
ПорядокПрава = Права[0].ПорядокПрава;
|
||
КонецЕсли;
|
||
Для Каждого ОписаниеРоли Из ОписаниеРолейБезПрав Цикл
|
||
НоваяСтрока = Права.Добавить();
|
||
НоваяСтрока.ИмяОбъекта = ПолноеИмяОбъекта;
|
||
НоваяСтрока.ПредставлениеОбъекта = ПредставлениеОбъекта;
|
||
НоваяСтрока.ИмяРоли = ОписаниеРоли.ИмяРоли;
|
||
НоваяСтрока.ПредставлениеРоли = ОписаниеРоли.ПредставлениеРоли;
|
||
НоваяСтрока.ИмяПрава = ИмяПрава;
|
||
НоваяСтрока.ПредставлениеПрава = ПредставлениеПрава;
|
||
НоваяСтрока.ПорядокПрава = ПорядокПрава;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
Если Права.Количество() = 0 Тогда
|
||
ИмяРоли = "";
|
||
ПредставлениеРоли = "";
|
||
Профиль = Неопределено;
|
||
Иначе
|
||
ИмяРоли = Права[0].ИмяРоли;
|
||
ПредставлениеРоли = Права[0].ПредставлениеРоли;
|
||
Профиль = Права[0].Профиль;
|
||
КонецЕсли;
|
||
|
||
Для Каждого ОписаниеПрава Из СписокПрав Цикл
|
||
Если НайденныеПрава.Получить(ОписаниеПрава) <> Неопределено
|
||
Или ВыбранныеПрава <> Неопределено
|
||
И ВыбранныеПрава.НайтиПоЗначению(ОписаниеПрава.Значение) = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
НоваяСтрока = Права.Добавить();
|
||
НоваяСтрока.ИмяОбъекта = ПолноеИмяОбъекта;
|
||
НоваяСтрока.ПредставлениеОбъекта = ПредставлениеОбъекта;
|
||
НоваяСтрока.ИмяРоли = ИмяРоли;
|
||
НоваяСтрока.ПредставлениеРоли = ПредставлениеРоли;
|
||
НоваяСтрока.Профиль = Профиль;
|
||
НоваяСтрока.ИмяПрава = ОписаниеПрава.Значение;
|
||
НоваяСтрока.ПредставлениеПрава = ОписаниеПрава.Представление;
|
||
НоваяСтрока.ПорядокПрава = СписокПрав.Индекс(ОписаниеПрава) + 1;
|
||
КонецЦикла;
|
||
|
||
Возврат Права;
|
||
|
||
КонецФункции
|
||
|
||
// Параметры:
|
||
// ЗаполнитьТолькоОписаниеПрав - Булево
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ПолноеИмяОбъекта - Строка
|
||
// * ОписаниеПрав - см. ОписаниеПрав
|
||
// * ОбъектМетаданных - ОбъектМетаданных
|
||
// * ИмяСтандартногоРеквизита - Строка
|
||
// * ПредставлениеОбъекта - Строка
|
||
// Неопределено
|
||
//
|
||
Функция КонтекстОтчетаПоОбъекту(ЗаполнитьТолькоОписаниеПрав = Ложь)
|
||
|
||
ВыбранныеОбъекты = ЗначенияВыбранногоПараметра("ОбъектМетаданных");
|
||
Если Не ЗначениеЗаполнено(ВыбранныеОбъекты)
|
||
Или ВыбранныеОбъекты.Количество() <> 1 Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
ПолноеИмяОбъекта = ВыбранныеОбъекты[0].Значение;
|
||
|
||
Контекст = Новый Структура;
|
||
Контекст.Вставить("ПолноеИмяОбъекта", ПолноеИмяОбъекта);
|
||
|
||
Если ПолноеИмяОбъекта = "Конфигурация" Тогда
|
||
ОбъектМетаданных = Метаданные;
|
||
ПутьКОбъекту = "Конфигурация";
|
||
Иначе
|
||
ЧастиПутиКОбъекту = СтрРазделить(ПолноеИмяОбъекта, ".");
|
||
Если ЧастиПутиКОбъекту[0] = "Подсистема" Тогда
|
||
ПутьКОбъекту = "Подсистема.*";
|
||
Иначе
|
||
ЭтоЧастьПути = Истина;
|
||
Для Индекс = 0 По ЧастиПутиКОбъекту.ВГраница() Цикл
|
||
Если Не ЭтоЧастьПути Тогда
|
||
ЧастиПутиКОбъекту[Индекс] = "*";
|
||
КонецЕсли;
|
||
ЭтоЧастьПути = Не ЭтоЧастьПути;
|
||
КонецЦикла;
|
||
ПутьКОбъекту = СтрСоединить(ЧастиПутиКОбъекту, ".");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Дерево = ДеревоМетаданных(Истина);
|
||
СтрокаДерева = Дерево.Строки.Найти(ПутьКОбъекту, "ПутьКОбъекту", Истина);
|
||
Если СтрокаДерева = Неопределено
|
||
Или СтрокаДерева.ОписаниеПрав = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
Контекст.Вставить("ОписаниеПрав", СтрокаДерева.ОписаниеПрав);
|
||
|
||
Если ЗаполнитьТолькоОписаниеПрав Тогда
|
||
Возврат Контекст;
|
||
КонецЕсли;
|
||
|
||
Если ПолноеИмяОбъекта = "Конфигурация" Тогда
|
||
ПредставлениеОбъекта = СтрокаДерева.ПредставлениеОбъекта;
|
||
Иначе
|
||
ИмяСтандартногоРеквизита = Неопределено;
|
||
ПредставлениеОбъекта = "";
|
||
ПредставлениеВидаОбъектов = "";
|
||
ЧастиИмени = СтрРазделить(ПолноеИмяОбъекта, ".");
|
||
КоличествоИмен = Цел(ЧастиИмени.Количество() / 2);
|
||
Если ЧастиИмени.Количество() <> КоличествоИмен * 2 Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
ТекущееПолноеИмя = "";
|
||
ТекущийПутьКОбъекту = "";
|
||
СтандартнаяТабличнаяЧасть = Неопределено;
|
||
Для НомерИмени = 1 По КоличествоИмен Цикл
|
||
Индекс = (НомерИмени - 1) * 2;
|
||
Если ЧастиИмени[Индекс] = "СтандартнаяТабличнаяЧасть" Тогда
|
||
ИмяСтандартногоРеквизита = ЧастиИмени[Индекс + 1];
|
||
СтандартнаяТабличнаяЧасть = СтандартнаяТабличнаяЧасть(ОбъектМетаданных, ЧастиИмени[Индекс + 1]);
|
||
Если СтандартнаяТабличнаяЧасть = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
ТекущееПредставлениеОбъекта = СтандартнаяТабличнаяЧасть.Представление();
|
||
|
||
ИначеЕсли ЧастиИмени[Индекс] = "СтандартныйРеквизит" Тогда
|
||
ИмяСтандартногоРеквизита = ?(ЗначениеЗаполнено(ИмяСтандартногоРеквизита),
|
||
ИмяСтандартногоРеквизита + ".", "") + ЧастиИмени[Индекс + 1];
|
||
СтандартныйРеквизит = СтандартныйРеквизит(?(СтандартнаяТабличнаяЧасть = Неопределено,
|
||
ОбъектМетаданных, СтандартнаяТабличнаяЧасть), ЧастиИмени[Индекс + 1]);
|
||
Если СтандартныйРеквизит = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
ТекущееПредставлениеОбъекта = СтандартныйРеквизит.Представление();
|
||
Иначе
|
||
ТекущееПолноеИмя = ?(ЗначениеЗаполнено(ТекущееПолноеИмя), ТекущееПолноеИмя + ".", "")
|
||
+ ЧастиИмени[Индекс] + "." + ЧастиИмени[Индекс + 1];
|
||
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(ТекущееПолноеИмя);
|
||
Если ОбъектМетаданных = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
ТекущееПредставлениеОбъекта = ОбъектМетаданных.Представление();
|
||
КонецЕсли;
|
||
ПредставлениеОбъекта = ?(ЗначениеЗаполнено(ПредставлениеОбъекта),
|
||
ПредставлениеОбъекта + ".", "") + ТекущееПредставлениеОбъекта;
|
||
Если ЧастиПутиКОбъекту[0] = "Подсистема" Тогда
|
||
ТекущаяСтрокаДерева = СтрокаДерева;
|
||
Иначе
|
||
ТекущийПутьКОбъекту = ?(ЗначениеЗаполнено(ТекущийПутьКОбъекту), ТекущийПутьКОбъекту + ".", "")
|
||
+ ЧастиПутиКОбъекту[Индекс] + "." + ЧастиПутиКОбъекту[Индекс + 1];
|
||
ТекущаяСтрокаДерева = Дерево.Строки.Найти(ТекущийПутьКОбъекту, "ПутьКОбъекту", Истина);
|
||
Если ТекущаяСтрокаДерева = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
ПредставлениеВидаОбъектов = ?(ЗначениеЗаполнено(ПредставлениеВидаОбъектов),
|
||
ПредставлениеВидаОбъектов + ".", "") + ТекущаяСтрокаДерева.ПредставлениеОбъекта;
|
||
КонецЦикла;
|
||
ПредставлениеОбъекта = ПредставлениеОбъекта + " (" + ПредставлениеВидаОбъектов + ")";
|
||
КонецЕсли;
|
||
|
||
Контекст.Вставить("ОбъектМетаданных", ОбъектМетаданных);
|
||
Контекст.Вставить("ИмяСтандартногоРеквизита", ИмяСтандартногоРеквизита);
|
||
Контекст.Вставить("ПредставлениеОбъекта", ПредставлениеОбъекта);
|
||
|
||
Возврат Контекст;
|
||
|
||
КонецФункции
|
||
|
||
Функция СтандартнаяТабличнаяЧасть(ОбъектМетаданных, ИмяСтандартнойТабличнойЧасти)
|
||
|
||
СвойстваОбъекта = Новый Структура("СтандартныеТабличныеЧасти");
|
||
ЗаполнитьЗначенияСвойств(СвойстваОбъекта, ОбъектМетаданных);
|
||
|
||
Если ТипЗнч(СвойстваОбъекта.СтандартныеТабличныеЧасти) <> Тип("ОписанияСтандартныхТабличныхЧастей") Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
СтандартныеТабличныеЧасти = СвойстваОбъекта.СтандартныеТабличныеЧасти; // ОписанияСтандартныхТабличныхЧастей
|
||
|
||
Для Каждого СтандартнаяТабличнаяЧасть Из СтандартныеТабличныеЧасти Цикл
|
||
Если СтандартнаяТабличнаяЧасть.Имя = ИмяСтандартнойТабличнойЧасти Тогда
|
||
Возврат СтандартнаяТабличнаяЧасть;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат Неопределено;
|
||
|
||
КонецФункции
|
||
|
||
Функция СтандартныйРеквизит(ОбъектМетаданных, ИмяСтандартногоРеквизита)
|
||
|
||
СвойстваОбъекта = Новый Структура("СтандартныеРеквизиты");
|
||
ЗаполнитьЗначенияСвойств(СвойстваОбъекта, ОбъектМетаданных);
|
||
|
||
Если ТипЗнч(СвойстваОбъекта.СтандартныеРеквизиты) <> Тип("ОписанияСтандартныхРеквизитов") Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
СтандартныеТабличныеЧасти = СвойстваОбъекта.СтандартныеТабличныеЧасти; // ОписанияСтандартныхТабличныхЧастей
|
||
|
||
Для Каждого СтандартныйРеквизит Из СвойстваОбъекта.СтандартныеРеквизиты Цикл
|
||
Если СтандартныйРеквизит.Имя = ИмяСтандартногоРеквизита Тогда
|
||
Возврат СтандартныйРеквизит;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат Неопределено;
|
||
|
||
КонецФункции
|
||
|
||
Функция ОтборРоли(Заполнить)
|
||
|
||
ОтборРоли = Новый ТаблицаЗначений;
|
||
ОтборРоли.Колонки.Добавить("ИмяРоли", ТипСтрока(255));
|
||
ОтборРоли.Колонки.Добавить("ПредставлениеРоли", ТипСтрока(255));
|
||
|
||
Если Не Заполнить Тогда
|
||
Возврат ОтборРоли;
|
||
КонецЕсли;
|
||
|
||
ВыбранныеРоли = ЗначенияВыбранногоПараметра("Роль");
|
||
Если Не ЗначениеЗаполнено(ВыбранныеРоли)
|
||
Или ВыбранныеРоли.Количество() <> 1 Тогда
|
||
Возврат ОтборРоли;
|
||
КонецЕсли;
|
||
|
||
ИмяРоли = ВыбранныеРоли[0].Значение;
|
||
МетаданныеРоли = Метаданные.Роли.Найти(ИмяРоли);
|
||
Если МетаданныеРоли = Неопределено Тогда
|
||
Возврат ОтборРоли;
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока = ОтборРоли.Добавить();
|
||
НоваяСтрока.ИмяРоли = МетаданныеРоли.Имя;
|
||
НоваяСтрока.ПредставлениеРоли = МетаданныеРоли.Представление();
|
||
|
||
Возврат ОтборРоли;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваРолейНаОбъект(Заполнить)
|
||
|
||
Права = Новый ТаблицаЗначений;
|
||
Права.Колонки.Добавить("ИмяОбъекта", ТипСтрока(430));
|
||
Права.Колонки.Добавить("ПредставлениеОбъекта", ТипСтрока(1000));
|
||
Права.Колонки.Добавить("ИмяРоли", ТипСтрока(255));
|
||
Права.Колонки.Добавить("ПредставлениеРоли", ТипСтрока(255));
|
||
Права.Колонки.Добавить("БезПрофиля", Новый ОписаниеТипов("Булево"));
|
||
Права.Колонки.Добавить("Профиль", Новый ОписаниеТипов("СправочникСсылка.ПрофилиГруппДоступа"));
|
||
Права.Колонки.Добавить("УровеньДоступа", ТипЧисло(2));
|
||
Права.Колонки.Добавить("ЕстьОграничение", Новый ОписаниеТипов("Булево"));
|
||
|
||
Если Не Заполнить Тогда
|
||
Возврат Права;
|
||
КонецЕсли;
|
||
|
||
ПоказыватьОбъектыИРолиБезПрав = ПоказыватьОбъектыИРолиБезПрав();
|
||
|
||
Контекст = КонтекстОтчетаПоОбъекту();
|
||
Если Контекст = Неопределено Тогда
|
||
Возврат Права;
|
||
КонецЕсли;
|
||
УровниДоступа = Контекст.ОписаниеПрав.УровниДоступа;
|
||
ОбъектМетаданных = Контекст.ОбъектМетаданных;
|
||
ИмяСтандартногоРеквизита = Контекст.ИмяСтандартногоРеквизита;
|
||
|
||
Контекст.Вставить("Права", Права);
|
||
Контекст.Вставить("ПрофилиРолей", ПрофилиРолей());
|
||
|
||
ВыбранныеУровни = ЗначенияВыбранногоПараметра("УровеньДоступа");
|
||
ОписаниеРолей = ОписаниеРолей(, Истина);
|
||
|
||
ПоляОбъектов = Новый Соответствие;
|
||
Для Каждого ОписаниеРоли Из ОписаниеРолей Цикл
|
||
Для Каждого ОписаниеУровня Из УровниДоступа Цикл
|
||
Если ОписаниеУровня.ЭтоНаборПрав Тогда
|
||
ЕстьПраво = ЗначениеЗаполнено(ОписаниеУровня.Право);
|
||
НаборПрав = СтрРазделить(ОписаниеУровня.Право, ",", Ложь);
|
||
Для Каждого Право Из НаборПрав Цикл
|
||
Если Не ПравоДоступа(Право, ОбъектМетаданных, ОписаниеРоли.Метаданные) Тогда
|
||
ЕстьПраво = Ложь;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Иначе
|
||
ЕстьПраво = ПравоДоступа(ОписаниеУровня.Право, ОбъектМетаданных, ОписаниеРоли.Метаданные, ИмяСтандартногоРеквизита);
|
||
КонецЕсли;
|
||
Если Не ЕстьПраво Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Если ВыбранныеУровни <> Неопределено
|
||
И ВыбранныеУровни.НайтиПоЗначению(ОписаниеУровня.Уровень) = Неопределено Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
ОписаниеРоли.ЕстьПраваРоли = Истина;
|
||
ЕстьОграничение = Ложь;
|
||
Если ЗначениеЗаполнено(ОписаниеУровня.ПравоСОграничением) Тогда
|
||
ЕстьОграничение = ЕстьОграничение(ОписаниеУровня.ПравоСОграничением,
|
||
ОбъектМетаданных, ПоляОбъектов, ОписаниеРоли.Метаданные);
|
||
КонецЕсли;
|
||
ДобавитьПраваРолиПрофилей(Контекст, ОписаниеРоли, ОписаниеУровня.Уровень, ЕстьОграничение);
|
||
Прервать;
|
||
КонецЦикла;
|
||
Если Не ОписаниеРоли.ЕстьПраваРоли И ПоказыватьОбъектыИРолиБезПрав Тогда
|
||
ДобавитьПраваРолиПрофилей(Контекст, ОписаниеРоли, 0, Ложь);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат Права;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращаемое значение:
|
||
// Соответствие из КлючИЗначение:
|
||
// * Ключ - СправочникСсылка.ИдентификаторыОбъектовМетаданных,
|
||
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
|
||
// * Значение - Массив из СправочникСсылка.ПрофилиГруппДоступа
|
||
//
|
||
Функция ПрофилиРолей()
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||
| РолиПрофилей.Роль КАК Роль,
|
||
| РолиПрофилей.Ссылка КАК Профиль
|
||
|ИЗ
|
||
| Справочник.ПрофилиГруппДоступа.Роли КАК РолиПрофилей
|
||
|ГДЕ
|
||
| &ОтборПрофилей
|
||
|ИТОГИ ПО
|
||
| Роль";
|
||
|
||
ВыбранныеПрофили = ЗначенияВыбранногоПараметра("Профиль");
|
||
Если ВыбранныеПрофили = Неопределено Тогда
|
||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПрофилей", "ИСТИНА");
|
||
Иначе
|
||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПрофилей",
|
||
"РолиПрофилей.Ссылка В(&Профили)");
|
||
Запрос.УстановитьПараметр("Профили", ВыбранныеПрофили.ВыгрузитьЗначения());
|
||
КонецЕсли;
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
|
||
|
||
ПрофилиРолей = Новый Соответствие;
|
||
Пока Выборка.Следующий() Цикл
|
||
ВыборкаПрофилей = Выборка.Выбрать();
|
||
Профили = Новый Массив;
|
||
ПрофилиРолей.Вставить(Выборка.Роль, Профили);
|
||
Пока ВыборкаПрофилей.Следующий() Цикл
|
||
Профили.Добавить(ВыборкаПрофилей.Профиль);
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
|
||
Возврат ПрофилиРолей;
|
||
|
||
КонецФункции
|
||
|
||
// Параметры:
|
||
// Профили - Массив из СправочникСсылка.ПрофилиГруппДоступа
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из Строка - имена ролей
|
||
//
|
||
Функция СписокИменРолейПрофилей(Профили)
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.УстановитьПараметр("Профили", Профили);
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||
| РолиПрофилей.Роль КАК Роль
|
||
|ИЗ
|
||
| Справочник.ПрофилиГруппДоступа.Роли КАК РолиПрофилей
|
||
|ГДЕ
|
||
| РолиПрофилей.Ссылка.ЭтоГруппа = ЛОЖЬ
|
||
| И РолиПрофилей.Ссылка В(&Профили)";
|
||
|
||
ИдентификаторыРолей = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Роль");
|
||
|
||
ОбъектыМетаданныхРолей = ОбщегоНазначения.ОбъектыМетаданныхПоИдентификаторам(
|
||
ИдентификаторыРолей, Ложь);
|
||
|
||
СписокРолей = Новый СписокЗначений;
|
||
Для Каждого КлючИЗначение Из ОбъектыМетаданныхРолей Цикл
|
||
ОбъектМетаданныхРоль = КлючИЗначение.Значение;
|
||
Если ТипЗнч(ОбъектМетаданныхРоль) <> Тип("ОбъектМетаданных") Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
СписокРолей.Добавить(ОбъектМетаданныхРоль.Имя, ОбъектМетаданныхРоль.Синоним);
|
||
КонецЦикла;
|
||
|
||
СписокРолей.СортироватьПоПредставлению();
|
||
|
||
Возврат СписокРолей;
|
||
|
||
КонецФункции
|
||
|
||
// Параметры:
|
||
// Профили - Массив из СправочникСсылка.ПрофилиГруппДоступа
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из СправочникСсылка.ПрофилиГруппДоступа - профили без групп
|
||
//
|
||
Функция СписокПрофилейБезГрупп(Профили)
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.УстановитьПараметр("Профили", Профили);
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Профили.Ссылка КАК Профиль
|
||
|ИЗ
|
||
| Справочник.ПрофилиГруппДоступа КАК Профили
|
||
|ГДЕ
|
||
| Профили.ЭтоГруппа = ЛОЖЬ
|
||
| И Профили.Ссылка В(&Профили)
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| Профили.Наименование";
|
||
|
||
Профили = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Профиль");
|
||
|
||
СписокПрофилей = Новый СписокЗначений;
|
||
СписокПрофилей.ЗагрузитьЗначения(Профили);
|
||
|
||
Возврат СписокПрофилей;
|
||
|
||
КонецФункции
|
||
|
||
|
||
Функция ОписаниеПрофилей()
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||
| Профили.Ссылка КАК Ссылка,
|
||
| Профили.Наименование КАК Наименование
|
||
|ИЗ
|
||
| Справочник.ПрофилиГруппДоступа КАК Профили
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| Наименование";
|
||
|
||
ОписаниеПрофилей = ОписаниеРолей(Ложь).Скопировать(Новый Массив,
|
||
"КодРоли, ИмяРоли, ПредставлениеРоли, ЕстьПраваРоли");
|
||
ОписаниеПрофилей.Колонки.Добавить("Профиль",
|
||
Новый ОписаниеТипов("СправочникСсылка.ПрофилиГруппДоступа"));
|
||
|
||
ТекущийНомер = 1;
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
НоваяСтрока = ОписаниеПрофилей.Добавить();
|
||
НоваяСтрока.КодРоли = ТекущийНомер;
|
||
НоваяСтрока.ИмяРоли = Выборка.Наименование;
|
||
НоваяСтрока.ПредставлениеРоли = НоваяСтрока.ИмяРоли;
|
||
НоваяСтрока.Профиль = Выборка.Ссылка;
|
||
ТекущийНомер = ТекущийНомер + 1;
|
||
КонецЦикла;
|
||
|
||
НоваяСтрока = ОписаниеПрофилей.Добавить();
|
||
НоваяСтрока.КодРоли = ТекущийНомер;
|
||
НоваяСтрока.ИмяРоли = НСтр("ru = '<Без профиля>'");
|
||
НоваяСтрока.ПредставлениеРоли = НоваяСтрока.ИмяРоли;
|
||
НоваяСтрока.Профиль = Справочники.ПрофилиГруппДоступа.ПустаяСсылка();
|
||
|
||
ОписаниеПрофилей.Индексы.Добавить("Профиль");
|
||
|
||
Возврат ОписаниеПрофилей;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ДобавитьПраваРолиПрофилей(Контекст, ОписаниеРоли, УровеньДоступа, ЕстьОграничение)
|
||
|
||
ПрофилиРоли = Контекст.ПрофилиРолей.Получить(ОписаниеРоли.Ссылка);
|
||
ПустойПрофиль = Справочники.ПрофилиГруппДоступа.ПустаяСсылка();
|
||
|
||
Если Не ЗначениеЗаполнено(ПрофилиРоли) Тогда
|
||
ПрофилиРоли = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ПустойПрофиль);
|
||
КонецЕсли;
|
||
|
||
Для Каждого Профиль Из ПрофилиРоли Цикл
|
||
НоваяСтрока = Контекст.Права.Добавить();
|
||
НоваяСтрока.ИмяОбъекта = Контекст.ПолноеИмяОбъекта;
|
||
НоваяСтрока.ПредставлениеОбъекта = Контекст.ПредставлениеОбъекта;
|
||
НоваяСтрока.ИмяРоли = ОписаниеРоли.ИмяРоли;
|
||
НоваяСтрока.ПредставлениеРоли = ОписаниеРоли.ПредставлениеРоли;
|
||
НоваяСтрока.БезПрофиля = Профиль = ПустойПрофиль;
|
||
НоваяСтрока.Профиль = Профиль;
|
||
НоваяСтрока.УровеньДоступа = УровеньДоступа;
|
||
НоваяСтрока.ЕстьОграничение = ЕстьОграничение;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ПоказыватьПраваНаРеквизиты()
|
||
|
||
ПолеОтбора = КомпоновщикНастроек.ПолучитьНастройки().ПараметрыДанных.Элементы.Найти("ПраваНаРеквизиты");
|
||
|
||
Возврат ПолеОтбора.Значение = Истина;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПоказыватьОбъектыИРолиБезПрав()
|
||
|
||
ПолеОтбора = КомпоновщикНастроек.ПолучитьНастройки().ПараметрыДанных.Элементы.Найти("ПоказыватьОбъектыИРолиБезПрав");
|
||
|
||
Возврат ПолеОтбора.Значение = Истина;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПоказыватьПраваНеинтерфейсныхПодсистем()
|
||
|
||
ПолеОтбора = КомпоновщикНастроек.ПолучитьНастройки().ПараметрыДанных.Элементы.Найти("ПоказыватьПраваНеинтерфейсныхПодсистем");
|
||
|
||
Возврат ПолеОтбора.Значение = Истина;
|
||
|
||
КонецФункции
|
||
|
||
Функция ЗначенияВыбранногоПараметра(ИмяПараметра, ИспользуетсяВсегда = Ложь)
|
||
|
||
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
|
||
ПолеОтбора = Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
|
||
|
||
Если Не ПолеОтбора.Использование И Не ИспользуетсяВсегда Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
Если ТипЗнч(ПолеОтбора.Значение) = Тип("СписокЗначений") Тогда
|
||
Возврат ПолеОтбора.Значение;
|
||
КонецЕсли;
|
||
|
||
Список = Новый СписокЗначений;
|
||
Список.Добавить(ПолеОтбора.Значение);
|
||
|
||
Возврат Список;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваРолей(Заполнить, ПрофилиВместоРолей, ТолькоИерархия = Ложь)
|
||
|
||
Иерархия = Новый ТаблицаЗначений;
|
||
Иерархия.Колонки.Добавить("КодРодителя", ТипСтрока(50));
|
||
Иерархия.Колонки.Добавить("КодЭлемента", ТипСтрока(50));
|
||
Иерархия.Колонки.Добавить("ИндексКартинки", ТипЧисло(2));
|
||
Иерархия.Колонки.Добавить("ИмяЭлемента", ТипСтрока(255));
|
||
Иерархия.Колонки.Добавить("ПредставлениеЭлемента", ТипСтрока(1000));
|
||
Иерархия.Колонки.Добавить("ЕстьПраваЭлемента", Новый ОписаниеТипов("Булево"));
|
||
Иерархия.Колонки.Добавить("ЕстьПравоСОграничением", Новый ОписаниеТипов("Булево"));
|
||
Иерархия.Колонки.Добавить("ПолноеИмяОбъекта", ТипСтрока(430));
|
||
|
||
Права = Новый ТаблицаЗначений;
|
||
Права.Колонки.Добавить("КодЭлемента", ТипСтрока(50));
|
||
Права.Колонки.Добавить("КодРоли", ТипЧисло(4));
|
||
Права.Колонки.Добавить("УровеньДоступа", ТипЧисло(2));
|
||
Права.Колонки.Добавить("ЕстьОграничение", Новый ОписаниеТипов("Булево"));
|
||
|
||
ОписаниеРолей = ОписаниеРолей(Заполнить, ПрофилиВместоРолей);
|
||
|
||
Результат = Новый Структура;
|
||
Результат.Вставить("Иерархия", Иерархия);
|
||
Результат.Вставить("Права", Права);
|
||
Результат.Вставить("Роли", ОписаниеРолей);
|
||
|
||
Если Не Заполнить Тогда
|
||
Возврат Результат;
|
||
КонецЕсли;
|
||
|
||
Контекст = Новый Структура;
|
||
Контекст.Вставить("ПрофилиВместоРолей", ПрофилиВместоРолей);
|
||
Контекст.Вставить("ОписаниеРолей", ОписаниеРолей);
|
||
Контекст.Вставить("МетаданныеРолей", ОписаниеРолей.ВыгрузитьКолонку("Метаданные"));
|
||
Контекст.Вставить("Иерархия", Иерархия);
|
||
Контекст.Вставить("Права", Права);
|
||
Контекст.Вставить("Картинки", Картинки());
|
||
Контекст.Вставить("ПоляОбъектов", Новый Соответствие);
|
||
Контекст.Вставить("ОбъектыБезПрав", ПоказыватьОбъектыИРолиБезПрав() Или ТолькоИерархия);
|
||
Контекст.Вставить("ВыбранныеОМД", ЗначенияВыбранногоПараметра("ОбъектМетаданных"));
|
||
Контекст.Вставить("ВыбранныеУровни", ЗначенияВыбранногоПараметра("УровеньДоступа"));
|
||
Контекст.Вставить("ВсеПодсистемы", ПоказыватьПраваНеинтерфейсныхПодсистем());
|
||
|
||
Если ПрофилиВместоРолей Тогда
|
||
Контекст.Вставить("ОписаниеПрофилей", ОписаниеПрофилей());
|
||
Контекст.Вставить("ПрофилиРолей", ПрофилиРолей());
|
||
Результат.Роли = Контекст.ОписаниеПрофилей;
|
||
КонецЕсли;
|
||
|
||
Дерево = ДеревоМетаданных(ПоказыватьПраваНаРеквизиты());
|
||
Если ТолькоИерархия Тогда
|
||
ОчиститьОписаниеПрав(Дерево.Строки);
|
||
КонецЕсли;
|
||
ОбработатьСтрокиДерева(Контекст, Дерево.Строки, "", Ложь);
|
||
|
||
Если ТолькоИерархия Тогда
|
||
Возврат Результат;
|
||
КонецЕсли;
|
||
|
||
Если Контекст.ОбъектыБезПрав Тогда
|
||
Отбор = Новый Структура("ЕстьПраваРоли", Ложь);
|
||
Строки = Результат.Роли.НайтиСтроки(Отбор);
|
||
КодЭлементаКонфигурация = Иерархия[0].КодЭлемента;
|
||
Для Каждого ОписаниеРоли Из Строки Цикл
|
||
СтрокаПрав = Права.Добавить();
|
||
СтрокаПрав.КодЭлемента = КодЭлементаКонфигурация;
|
||
СтрокаПрав.КодРоли = ОписаниеРоли.КодРоли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипСтрока(ДлинаСтроки)
|
||
|
||
Возврат Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(ДлинаСтроки))
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипЧисло(ЧислоРазрядов)
|
||
|
||
Возврат Новый ОписаниеТипов("Число",,,
|
||
Новый КвалификаторыЧисла(ЧислоРазрядов, 0, ДопустимыйЗнак.Неотрицательный));
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипИдентификаторОбъектаМетаданных()
|
||
|
||
Возврат Новый ОписаниеТипов("СправочникСсылка.ИдентификаторыОбъектовМетаданных,
|
||
|СправочникСсылка.ИдентификаторыОбъектовРасширений");
|
||
|
||
КонецФункции
|
||
|
||
Функция ОписаниеРолей(Заполнить = Истина, СИдентификаторами = Ложь)
|
||
|
||
ОписаниеРолей = Новый ТаблицаЗначений;
|
||
ОписаниеРолей.Колонки.Добавить("Метаданные", Новый ОписаниеТипов("ОбъектМетаданных"));
|
||
ОписаниеРолей.Колонки.Добавить("КодРоли", ТипЧисло(4));
|
||
ОписаниеРолей.Колонки.Добавить("ИмяРоли", ТипСтрока(255));
|
||
ОписаниеРолей.Колонки.Добавить("ПредставлениеРоли", ТипСтрока(255));
|
||
ОписаниеРолей.Колонки.Добавить("ЕстьПраваРоли", Новый ОписаниеТипов("Булево"));
|
||
ОписаниеРолей.Колонки.Добавить("Ссылка", ТипИдентификаторОбъектаМетаданных());
|
||
|
||
Если Не Заполнить Тогда
|
||
Возврат ОписаниеРолей;
|
||
КонецЕсли;
|
||
|
||
ВыбранныеРоли = ЗначенияВыбранногоПараметра("Роль");
|
||
|
||
ТекущийНомер = 1;
|
||
Для Каждого Роль Из Метаданные.Роли Цикл
|
||
Если ВыбранныеРоли <> Неопределено
|
||
И ВыбранныеРоли.НайтиПоЗначению(Роль.Имя) = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
НоваяСтрока = ОписаниеРолей.Добавить();
|
||
НоваяСтрока.КодРоли = ТекущийНомер;
|
||
НоваяСтрока.Метаданные = Роль;
|
||
НоваяСтрока.ИмяРоли = Роль.Имя;
|
||
НоваяСтрока.ПредставлениеРоли = Роль.Представление();
|
||
ТекущийНомер = ТекущийНомер + 1;
|
||
КонецЦикла;
|
||
|
||
Если СИдентификаторами Тогда
|
||
РолиВыбранныхПрофилей = РолиВыбранныхПрофилей();
|
||
Идентификаторы = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(
|
||
ОписаниеРолей.ВыгрузитьКолонку("Метаданные"));
|
||
Индекс = ОписаниеРолей.Количество() - 1;
|
||
Пока Индекс >= 0 Цикл
|
||
ОписаниеРоли = ОписаниеРолей[Индекс];
|
||
РольСсылка = Идентификаторы.Получить(ОписаниеРоли.Метаданные.ПолноеИмя());
|
||
Если РолиВыбранныхПрофилей <> Неопределено
|
||
И РолиВыбранныхПрофилей.Получить(РольСсылка) = Неопределено Тогда
|
||
ОписаниеРолей.Удалить(ОписаниеРоли);
|
||
Иначе
|
||
ОписаниеРоли.Ссылка = РольСсылка;
|
||
КонецЕсли;
|
||
Индекс = Индекс - 1;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
ОписаниеРолей.Индексы.Добавить("Метаданные");
|
||
|
||
Возврат ОписаниеРолей;
|
||
|
||
КонецФункции
|
||
|
||
Функция РолиВыбранныхПрофилей()
|
||
|
||
ВыбранныеПрофили = ЗначенияВыбранногоПараметра("Профиль");
|
||
Если ВыбранныеПрофили = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.УстановитьПараметр("Профили", ВыбранныеПрофили.ВыгрузитьЗначения());
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||
| РолиПрофилей.Роль КАК Роль
|
||
|ИЗ
|
||
| Справочник.ПрофилиГруппДоступа.Роли КАК РолиПрофилей
|
||
|ГДЕ
|
||
| РолиПрофилей.Ссылка В(&Профили)";
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
|
||
Роли = Новый Соответствие;
|
||
Пока Выборка.Следующий() Цикл
|
||
Роли.Вставить(Выборка.Роль, Истина);
|
||
КонецЦикла;
|
||
|
||
Возврат Роли;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ОбработатьСтрокиДерева(Контекст, СтрокиДерева, КодРодителя, СтрокиЕстьПрава)
|
||
|
||
Счетчик = 0;
|
||
СвойствоВключатьВКомандныйИнтерфейс = Новый Структура("ВключатьВКомандныйИнтерфейс", Истина);
|
||
|
||
Количество = СтрокиДерева.Количество();
|
||
Для Каждого СтрокаДерева Из СтрокиДерева Цикл
|
||
Если СтрокаДерева.БезГруппы Тогда
|
||
Количество = Количество - 1 + КоличествоЭлементов(СтрокаДерева.Метаданные);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
ЧислоЦифр = СтрДлина(Количество);
|
||
|
||
Для Каждого СтрокаДерева Из СтрокиДерева Цикл
|
||
Счетчик = Счетчик + 1;
|
||
ИндексКартинки = ИндексКартинки(Контекст, СтрокаДерева.Имя);
|
||
СтрокаИерархииЕстьПрава = Ложь;
|
||
Если СтрокаДерева.БезГруппы Тогда
|
||
КодСтроки = КодРодителя;
|
||
Иначе
|
||
КодСтроки = КодРодителя + Прав("00000000" + Формат(Счетчик, "ЧГ="), ЧислоЦифр);
|
||
СтрокаИерархии = Контекст.Иерархия.Добавить();
|
||
СтрокаИерархии.КодРодителя = КодРодителя;
|
||
СтрокаИерархии.КодЭлемента = КодСтроки;
|
||
СтрокаИерархии.ИндексКартинки = ИндексКартинки;
|
||
СтрокаИерархии.ИмяЭлемента = СтрокаДерева.Представление;
|
||
СтрокаИерархии.ПредставлениеЭлемента = СтрокаДерева.Представление;
|
||
КонецЕсли;
|
||
|
||
СтрокиВложения = Неопределено;
|
||
Если ТипЗнч(СтрокаДерева.Метаданные) = Тип("КоллекцияОбъектовМетаданных")
|
||
Или ТипЗнч(СтрокаДерева.Метаданные) = Тип("ОписанияСтандартныхРеквизитов")
|
||
Или ТипЗнч(СтрокаДерева.Метаданные) = Тип("ОписанияСтандартныхТабличныхЧастей") Тогда
|
||
|
||
НомерОбъекта = ?(СтрокаДерева.БезГруппы, Счетчик, 0);
|
||
Если СтрокаДерева.Строки.Количество() > 0 Тогда
|
||
СтрокиВложения = СтрокаДерева.Строки;
|
||
КонецЕсли;
|
||
Если ТипЗнч(СтрокаДерева.Метаданные) = Тип("КоллекцияОбъектовМетаданных") Тогда
|
||
ВыбранныеОбъектыМетаданных = Контекст.ВыбранныеОМД;
|
||
Если ВыбранныеОбъектыМетаданных <> Неопределено
|
||
И ВыбранныеОбъектыМетаданных.НайтиПоЗначению(СтрокаДерева.Имя) <> Неопределено Тогда
|
||
ВыбранныеОбъектыМетаданных = Неопределено;
|
||
КонецЕсли;
|
||
Иначе
|
||
ВыбранныеОбъектыМетаданных = Неопределено;
|
||
КонецЕсли;
|
||
ЧислоЦифрДляОбъектов = ?(СтрокаДерева.БезГруппы, ЧислоЦифр,
|
||
СтрДлина(КоличествоЭлементов(СтрокаДерева.Метаданные)));
|
||
Для Каждого ОбъектМетаданных Из СтрокаДерева.Метаданные Цикл
|
||
ТолькоИерархия = Ложь;
|
||
Если ВыбранныеОбъектыМетаданных <> Неопределено Тогда
|
||
ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
|
||
Если ВыбранныеОбъектыМетаданных.НайтиПоЗначению(ПолноеИмя) = Неопределено
|
||
И (СтрокаДерева.Имя <> "Подсистемы"
|
||
И СтрРазделить(ПолноеИмя, ".", Ложь).Количество() < 3
|
||
Или СтрокаДерева.Имя = "Подсистемы"
|
||
И Не ЭтоРодительскаяПодсистема(ВыбранныеОбъектыМетаданных, ПолноеИмя, ТолькоИерархия)) Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если Не Контекст.ВсеПодсистемы Тогда
|
||
СвойствоВключатьВКомандныйИнтерфейс.ВключатьВКомандныйИнтерфейс = Истина;
|
||
ЗаполнитьЗначенияСвойств(СвойствоВключатьВКомандныйИнтерфейс, ОбъектМетаданных);
|
||
Если Не СвойствоВключатьВКомандныйИнтерфейс.ВключатьВКомандныйИнтерфейс Тогда
|
||
ТолькоИерархия = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
НомерОбъекта = НомерОбъекта + 1;
|
||
КодЭлемента = КодСтроки + Прав("00000000" + Формат(НомерОбъекта, "ЧГ="), ЧислоЦифрДляОбъектов);
|
||
ДополнительнаяСтрокаИерархии = Контекст.Иерархия.Добавить();
|
||
ДополнительнаяСтрокаИерархии.КодРодителя = КодСтроки;
|
||
ДополнительнаяСтрокаИерархии.КодЭлемента = КодЭлемента;
|
||
ДополнительнаяСтрокаИерархии.ИндексКартинки = ИндексКартинки;
|
||
ДополнительнаяСтрокаИерархии.ИмяЭлемента = ОбъектМетаданных.Имя;
|
||
ДополнительнаяСтрокаИерархии.ПредставлениеЭлемента = ОбъектМетаданных.Представление();
|
||
ЕстьПрава = Ложь;
|
||
Если Не ТолькоИерархия Тогда
|
||
Если Не СтрокаДерева.БезРасшифровки Тогда
|
||
Если ТипЗнч(ОбъектМетаданных) = Тип("ОписаниеСтандартнойТабличнойЧасти") Тогда
|
||
ДополнительнаяСтрокаИерархии.ПолноеИмяОбъекта = СтрокаДерева.МетаданныеРодителяВложения.ПолноеИмя()
|
||
+ ".СтандартнаяТабличнаяЧасть." + ОбъектМетаданных.Имя;
|
||
ИначеЕсли ТипЗнч(ОбъектМетаданных) = Тип("ОписаниеСтандартногоРеквизита") Тогда
|
||
Если ТипЗнч(СтрокаДерева.МетаданныеРодителяВложения) = Тип("ОписаниеСтандартнойТабличнойЧасти") Тогда
|
||
ДополнительнаяСтрокаИерархии.ПолноеИмяОбъекта = СтрокаДерева.Родитель.МетаданныеРодителяВложения.ПолноеИмя()
|
||
+ ".СтандартнаяТабличнаяЧасть." + СтрокаДерева.МетаданныеРодителяВложения.Имя
|
||
+ ".СтандартныйРеквизит." + ОбъектМетаданных.Имя;
|
||
Иначе
|
||
ДополнительнаяСтрокаИерархии.ПолноеИмяОбъекта = СтрокаДерева.МетаданныеРодителяВложения.ПолноеИмя()
|
||
+ ".СтандартныйРеквизит." + ОбъектМетаданных.Имя;
|
||
КонецЕсли;
|
||
Иначе
|
||
ДополнительнаяСтрокаИерархии.ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
СОграничением = Ложь;
|
||
Если ТипЗнч(СтрокаДерева.Метаданные) = Тип("КоллекцияОбъектовМетаданных") Тогда
|
||
ДобавитьПрава(Контекст, ОбъектМетаданных, СтрокаДерева, КодЭлемента, ЕстьПрава, СОграничением);
|
||
ИначеЕсли ТипЗнч(СтрокаДерева.МетаданныеРодителяВложения) = Тип("ОписаниеСтандартнойТабличнойЧасти") Тогда
|
||
ДобавитьПрава(Контекст, СтрокаДерева.Родитель.МетаданныеРодителяВложения, СтрокаДерева, КодЭлемента,
|
||
ЕстьПрава, СОграничением, СтрокаДерева.МетаданныеРодителяВложения.Имя + "." + ОбъектМетаданных.Имя);
|
||
Иначе
|
||
ДобавитьПрава(Контекст, СтрокаДерева.МетаданныеРодителяВложения, СтрокаДерева, КодЭлемента,
|
||
ЕстьПрава, СОграничением, ОбъектМетаданных.Имя);
|
||
КонецЕсли;
|
||
ДополнительнаяСтрокаИерархии.ЕстьПравоСОграничением = СОграничением;
|
||
КонецЕсли;
|
||
Если СтрокиВложения <> Неопределено Тогда
|
||
Для Каждого СтрокаВложения Из СтрокиВложения Цикл
|
||
СтрокаВложения.МетаданныеРодителяВложения = ОбъектМетаданных;
|
||
СтрокаВложения.Метаданные = ОбъектМетаданных[СтрокаВложения.ИмяВложений];
|
||
КонецЦикла;
|
||
ОбработатьСтрокиДерева(Контекст, СтрокаДерева.Строки, КодЭлемента, ЕстьПрава);
|
||
ИначеЕсли СтрокаДерева.ЕстьИерархия Тогда
|
||
ОписаниеСтроки = Новый Структура("Строки, Имя,Метаданные,ОписаниеПрав,Представление,
|
||
|ИмяВложений,БезГруппы,БезРасшифровки,ЕстьИерархия");
|
||
ЗаполнитьЗначенияСвойств(ОписаниеСтроки, СтрокаДерева);
|
||
ОписаниеСтроки.Метаданные = ОбъектМетаданных[СтрокаДерева.ИмяВложений];
|
||
ОписаниеСтрок = Новый Массив;
|
||
ОписаниеСтрок.Добавить(ОписаниеСтроки);
|
||
ОбработатьСтрокиДерева(Контекст, ОписаниеСтрок, КодЭлемента, ЕстьПрава);
|
||
КонецЕсли;
|
||
Если ЕстьПрава Тогда
|
||
СтрокаИерархииЕстьПрава = Истина;
|
||
ДополнительнаяСтрокаИерархии.ЕстьПраваЭлемента = Истина;
|
||
ИначеЕсли Не Контекст.ОбъектыБезПрав Тогда
|
||
НомерОбъекта = НомерОбъекта - 1;
|
||
Контекст.Иерархия.Удалить(ДополнительнаяСтрокаИерархии);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Если СтрокаДерева.БезГруппы Тогда
|
||
Счетчик = НомерОбъекта;
|
||
КонецЕсли;
|
||
ИначеЕсли ТипЗнч(СтрокаДерева.Метаданные) = Тип("ОбъектМетаданныхКонфигурация") Тогда
|
||
Если Контекст.ВыбранныеОМД = Неопределено
|
||
Или Контекст.ВыбранныеОМД.НайтиПоЗначению("Конфигурация") <> Неопределено Тогда
|
||
ДобавитьПрава(Контекст, СтрокаДерева.Метаданные, СтрокаДерева, КодСтроки, СтрокаИерархииЕстьПрава);
|
||
КонецЕсли;
|
||
СтрокаИерархии.ПолноеИмяОбъекта = "Конфигурация";
|
||
КонецЕсли;
|
||
Если СтрокиВложения = Неопределено Тогда
|
||
ОбработатьСтрокиДерева(Контекст, СтрокаДерева.Строки, КодСтроки, СтрокаИерархииЕстьПрава);
|
||
КонецЕсли;
|
||
Если СтрокаИерархииЕстьПрава Тогда
|
||
СтрокиЕстьПрава = Истина;
|
||
Если Не СтрокаДерева.БезГруппы Тогда
|
||
СтрокаИерархии.ЕстьПраваЭлемента = Истина;
|
||
КонецЕсли;
|
||
ИначеЕсли Не Контекст.ОбъектыБезПрав И Не СтрокаДерева.БезГруппы Тогда
|
||
Счетчик = Счетчик - 1;
|
||
Контекст.Иерархия.Удалить(СтрокаИерархии);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция КоличествоЭлементов(Коллекция)
|
||
|
||
Если ТипЗнч(Коллекция) = Тип("КоллекцияОбъектовМетаданных")
|
||
Или ТипЗнч(Коллекция) = Тип("ОписанияСтандартныхРеквизитов") Тогда
|
||
Возврат Коллекция.Количество();
|
||
|
||
ИначеЕсли ТипЗнч(Коллекция) = Тип("ОписанияСтандартныхТабличныхЧастей") Тогда
|
||
Количество = 0;
|
||
//@skip-check module-unused-local-variable
|
||
Для Каждого ЭлементКоллекции Из Коллекция Цикл
|
||
Количество = Количество + 1;
|
||
КонецЦикла;
|
||
Возврат Количество;
|
||
КонецЕсли;
|
||
|
||
Возврат 1;
|
||
|
||
КонецФункции
|
||
|
||
Функция ЭтоРодительскаяПодсистема(ВыбранныеОбъектыМетаданных, ПолноеИмяПодсистемы, ДобавитьВИерархию)
|
||
|
||
Для Каждого ЭлементСписка Из ВыбранныеОбъектыМетаданных Цикл
|
||
Если СтрНачинаетсяС(ЭлементСписка.Значение, ПолноеИмяПодсистемы) Тогда
|
||
ДобавитьВИерархию = Истина;
|
||
Возврат Истина;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат Ложь;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ДобавитьПрава(Контекст, ОбъектМетаданных, СтрокаДерева, КодЭлемента, ЕстьПрава,
|
||
СОграничением = Ложь, ИмяСтандартногоРеквизита = Неопределено)
|
||
|
||
Если Не ЗначениеЗаполнено(СтрокаДерева.ОписаниеПрав) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ВыбранныеУровни = Контекст.ВыбранныеУровни;
|
||
Если ВыбранныеУровни <> Неопределено Тогда
|
||
ЕстьУровеньДоступа = Ложь;
|
||
Для Каждого ОписаниеУровня Из СтрокаДерева.ОписаниеПрав.УровниДоступа Цикл
|
||
Если ВыбранныеУровни.НайтиПоЗначению(ОписаниеУровня.Уровень) <> Неопределено Тогда
|
||
ЕстьУровеньДоступа = Истина;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Если Не ЕстьУровеньДоступа Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ЕстьНаборПрав = Ложь;
|
||
ПраваУровней = Новый Массив;
|
||
Для Каждого ОписаниеУровня Из СтрокаДерева.ОписаниеПрав.УровниДоступа Цикл
|
||
ПраваУровней.Добавить(ОписаниеУровня.Право);
|
||
Если ОписаниеУровня.ЭтоНаборПрав Тогда
|
||
ЕстьНаборПрав = Истина;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Если Контекст.ПрофилиВместоРолей Тогда
|
||
Контекст.Вставить("ПустойПрофиль", Справочники.ПрофилиГруппДоступа.ПустаяСсылка());
|
||
Контекст.Вставить("СтрокиПравПрофилей", Новый Соответствие);
|
||
КонецЕсли;
|
||
Контекст.Вставить("КодЭлемента", КодЭлемента);
|
||
МетаданныеРолей = Контекст.МетаданныеРолей;
|
||
УровниДоступа = СтрокаДерева.ОписаниеПрав.УровниДоступа;
|
||
|
||
Если ЕстьНаборПрав Тогда
|
||
Для Каждого Роль Из МетаданныеРолей Цикл
|
||
Для Каждого ОписаниеУровня Из УровниДоступа Цикл
|
||
Если ОписаниеУровня.ЭтоНаборПрав Тогда
|
||
ЕстьПраво = ЗначениеЗаполнено(ОписаниеУровня.Право);
|
||
НаборПрав = СтрРазделить(ОписаниеУровня.Право, ",", Ложь);
|
||
Для Каждого Право Из НаборПрав Цикл
|
||
Если Не ПравоДоступа(Право, ОбъектМетаданных, Роль) Тогда
|
||
ЕстьПраво = Ложь;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Иначе
|
||
ЕстьПраво = ПравоДоступа(ОписаниеУровня.Право, ОбъектМетаданных, Роль, ИмяСтандартногоРеквизита);
|
||
КонецЕсли;
|
||
Если Не ЕстьПраво Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ЕстьПрава = Истина;
|
||
Если ЗначениеЗаполнено(ОписаниеУровня.ПравоСОграничением) Тогда
|
||
СОграничением = Истина;
|
||
КонецЕсли;
|
||
ДобавитьПраво(Контекст, ОписаниеУровня, ОбъектМетаданных, Роль);
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
Иначе
|
||
Для Каждого Роль Из МетаданныеРолей Цикл
|
||
Для Каждого Право Из ПраваУровней Цикл
|
||
Если ПравоДоступа(Право, ОбъектМетаданных, Роль, ИмяСтандартногоРеквизита) Тогда
|
||
ОписаниеУровня = УровниДоступа[ПраваУровней.Найти(Право)];
|
||
ЕстьПрава = Истина;
|
||
Если ЗначениеЗаполнено(ОписаниеУровня.ПравоСОграничением) Тогда
|
||
СОграничением = Истина;
|
||
КонецЕсли;
|
||
ДобавитьПраво(Контекст, ОписаниеУровня, ОбъектМетаданных, Роль);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ДобавитьПраво(Контекст, ОписаниеУровня, ОбъектМетаданных, Роль)
|
||
|
||
Если Контекст.ВыбранныеУровни <> Неопределено
|
||
И Контекст.ВыбранныеУровни.НайтиПоЗначению(ОписаниеУровня.Уровень) = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ОписаниеРоли = Контекст.ОписаниеРолей.Найти(Роль, "Метаданные");
|
||
ОписаниеРоли.ЕстьПраваРоли = Истина;
|
||
ЕстьОграничение = Ложь;
|
||
Если ЗначениеЗаполнено(ОписаниеУровня.ПравоСОграничением) Тогда
|
||
ЕстьОграничение = ЕстьОграничение(ОписаниеУровня.ПравоСОграничением,
|
||
ОбъектМетаданных, Контекст.ПоляОбъектов, ОписаниеРоли.Метаданные);
|
||
КонецЕсли;
|
||
Если Контекст.ПрофилиВместоРолей Тогда
|
||
ОписаниеПрофилей = Контекст.ОписаниеПрофилей;
|
||
СтрокиПравПрофилей = Контекст.СтрокиПравПрофилей;
|
||
ПрофилиРоли = Контекст.ПрофилиРолей.Получить(ОписаниеРоли.Ссылка);
|
||
Если Не ЗначениеЗаполнено(ПрофилиРоли) Тогда
|
||
ПрофилиРоли = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Контекст.ПустойПрофиль);
|
||
КонецЕсли;
|
||
Для Каждого Профиль Из ПрофилиРоли Цикл
|
||
СтрокаПрав = СтрокиПравПрофилей.Получить(Профиль);
|
||
Если СтрокаПрав = Неопределено Тогда
|
||
Отбор = Новый Структура("Профиль", Профиль);
|
||
НайденныеСтроки = ОписаниеПрофилей.НайтиСтроки(Отбор);
|
||
Если НайденныеСтроки.Количество() <> 1 Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ОписаниеПрофиля = НайденныеСтроки[0];
|
||
ОписаниеПрофиля.ЕстьПраваРоли = Истина;
|
||
СтрокаПрав = Контекст.Права.Добавить();
|
||
СтрокаПрав.КодЭлемента = Контекст.КодЭлемента;
|
||
СтрокаПрав.КодРоли = ОписаниеПрофиля.КодРоли;
|
||
СтрокаПрав.УровеньДоступа = ОписаниеУровня.Уровень;
|
||
СтрокаПрав.ЕстьОграничение = ЕстьОграничение;
|
||
СтрокиПравПрофилей.Вставить(Профиль, СтрокаПрав);
|
||
Иначе
|
||
Если СтрокаПрав.УровеньДоступа < ОписаниеУровня.Уровень Тогда
|
||
СтрокаПрав.УровеньДоступа = ОписаниеУровня.Уровень;
|
||
КонецЕсли;
|
||
Если Не ЕстьОграничение И СтрокаПрав.ЕстьОграничение Тогда
|
||
СтрокаПрав.ЕстьОграничение = Ложь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Иначе
|
||
СтрокаПрав = Контекст.Права.Добавить();
|
||
СтрокаПрав.КодЭлемента = Контекст.КодЭлемента;
|
||
СтрокаПрав.КодРоли = ОписаниеРоли.КодРоли;
|
||
СтрокаПрав.УровеньДоступа = ОписаниеУровня.Уровень;
|
||
СтрокаПрав.ЕстьОграничение = ЕстьОграничение;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ЕстьОграничение(ИмяПрава, ОбъектМетаданных, ПоляОбъектов, Роль);
|
||
|
||
Поля = ПоляОбъектов.Получить(ОбъектМетаданных);
|
||
|
||
Если Поля = Неопределено Тогда
|
||
Поля = РегистрыСведений.ПраваРолей.ВсеПоляОграниченияДоступаОбъектаМетаданных(
|
||
ОбъектМетаданных, ОбъектМетаданных.ПолноеИмя());
|
||
ПоляОбъектов.Вставить(ОбъектМетаданных, Поля);
|
||
КонецЕсли;
|
||
|
||
Возврат ПараметрыДоступа(ИмяПрава, ОбъектМетаданных, Поля, Роль).ОграничениеУсловием;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ОчиститьОписаниеПрав(СтрокиДерева)
|
||
|
||
Для Каждого Строка Из СтрокиДерева Цикл
|
||
Строка.ОписаниеПрав = Неопределено;
|
||
ОчиститьОписаниеПрав(Строка.Строки);
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращаемое значение:
|
||
// ДеревоЗначений:
|
||
// * Имя - Строка
|
||
// * Метаданные - ОбъектМетаданных
|
||
// - Неопределено
|
||
// * ОписаниеПрав - см. ОписаниеПрав
|
||
// * Представление - Строка
|
||
// * ПредставлениеОбъекта - Строка
|
||
// * ИмяВложений - Строка
|
||
// * БезГруппы - Булево
|
||
// * ЕстьИерархия - Булево
|
||
// * БезРасшифровки - Булево
|
||
// * ПутьКОбъекту - Строка
|
||
// * МетаданныеРодителяВложения - ОбъектМетаданных
|
||
// - Неопределено
|
||
//
|
||
Функция ДеревоМетаданных(СПолями)
|
||
|
||
Дерево = Новый ДеревоЗначений;
|
||
Дерево.Колонки.Добавить("Имя", ТипСтрока(150));
|
||
Дерево.Колонки.Добавить("Метаданные");
|
||
Дерево.Колонки.Добавить("ОписаниеПрав", Новый ОписаниеТипов("Структура"));
|
||
Дерево.Колонки.Добавить("Представление", ТипСтрока(150));
|
||
Дерево.Колонки.Добавить("ПредставлениеОбъекта", ТипСтрока(150));
|
||
Дерево.Колонки.Добавить("ИмяВложений", ТипСтрока(100));
|
||
Дерево.Колонки.Добавить("БезГруппы", Новый ОписаниеТипов("Булево"));
|
||
Дерево.Колонки.Добавить("ЕстьИерархия", Новый ОписаниеТипов("Булево"));
|
||
Дерево.Колонки.Добавить("БезРасшифровки", Новый ОписаниеТипов("Булево"));
|
||
Дерево.Колонки.Добавить("ПутьКОбъекту", ТипСтрока(255));
|
||
Дерево.Колонки.Добавить("МетаданныеРодителяВложения"); // Заполняется автоматически.
|
||
|
||
// Конфигурация
|
||
СтрокаКонфигурация = Дерево.Строки.Добавить();
|
||
СтрокаКонфигурация.Имя = "Конфигурация";
|
||
СтрокаКонфигурация.Метаданные = Метаданные;
|
||
СтрокаКонфигурация.ОписаниеПрав = ПраваКонфигурации();
|
||
СтрокаКонфигурация.ПутьКОбъекту = "Конфигурация";
|
||
СтрокаКонфигурация.Представление = НСтр("ru = 'Конфигурация'");
|
||
СтрокаКонфигурация.ПредставлениеОбъекта = НСтр("ru = 'Конфигурация'");
|
||
|
||
// Конфигурация.Общие
|
||
СтрокаОбщие = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаОбщие.Имя = "Общие";
|
||
СтрокаОбщие.Представление = НСтр("ru = 'Общие'");
|
||
|
||
// Конфигурация.Общие.Подсистемы
|
||
СтрокаПодсистемы = СтрокаОбщие.Строки.Добавить();
|
||
СтрокаПодсистемы.Имя = "Подсистемы";
|
||
СтрокаПодсистемы.Метаданные = Метаданные.Подсистемы;
|
||
СтрокаПодсистемы.ОписаниеПрав = ПравоПросмотр();
|
||
СтрокаПодсистемы.ПутьКОбъекту = "Подсистема.*";
|
||
СтрокаПодсистемы.Представление = НСтр("ru = 'Подсистемы'");
|
||
СтрокаПодсистемы.ПредставлениеОбъекта = НСтр("ru = 'Подсистема'");
|
||
|
||
// Конфигурация.Общие.Подсистемы.Подсистемы.*
|
||
СтрокаВложенныеПодсистемы = СтрокаПодсистемы.Строки.Добавить();
|
||
СтрокаВложенныеПодсистемы.Имя = "Подсистемы";
|
||
СтрокаВложенныеПодсистемы.Метаданные = "Подсистемы";
|
||
СтрокаВложенныеПодсистемы.ПутьКОбъекту = "Подсистема.*.Подсистема.*";
|
||
СтрокаВложенныеПодсистемы.ОписаниеПрав = ПравоПросмотр();
|
||
СтрокаВложенныеПодсистемы.Представление = НСтр("ru = 'Подсистемы'");
|
||
СтрокаВложенныеПодсистемы.ПредставлениеОбъекта = НСтр("ru = 'Подсистема'");
|
||
СтрокаВложенныеПодсистемы.ИмяВложений = "Подсистемы";
|
||
СтрокаВложенныеПодсистемы.БезГруппы = Истина;
|
||
СтрокаВложенныеПодсистемы.ЕстьИерархия = Истина;
|
||
|
||
// Конфигурация.Общие.ПараметрыСеанса
|
||
СтрокаПараметрыСеанса = СтрокаОбщие.Строки.Добавить();
|
||
СтрокаПараметрыСеанса.Имя = "ПараметрыСеанса";
|
||
СтрокаПараметрыСеанса.Метаданные = Метаданные.ПараметрыСеанса;
|
||
СтрокаПараметрыСеанса.ПутьКОбъекту = "ПараметрСеанса.*";
|
||
СтрокаПараметрыСеанса.ОписаниеПрав = ПраваПараметраСеанса();
|
||
СтрокаПараметрыСеанса.Представление = НСтр("ru = 'Параметры сеанса'");
|
||
СтрокаПараметрыСеанса.ПредставлениеОбъекта = НСтр("ru = 'Параметр сеанса'");
|
||
|
||
// Конфигурация.Общие.ОбщиеРеквизиты
|
||
СтрокаОбщиеРеквизиты = СтрокаОбщие.Строки.Добавить();
|
||
СтрокаОбщиеРеквизиты.Имя = "ОбщиеРеквизиты";
|
||
СтрокаОбщиеРеквизиты.Метаданные = Метаданные.ОбщиеРеквизиты;
|
||
СтрокаОбщиеРеквизиты.ПутьКОбъекту = "ОбщийРеквизит.*";
|
||
СтрокаОбщиеРеквизиты.ОписаниеПрав = ПраваРеквизита();
|
||
СтрокаОбщиеРеквизиты.Представление = НСтр("ru = 'Общие реквизиты'");
|
||
СтрокаОбщиеРеквизиты.ПредставлениеОбъекта = НСтр("ru = 'Общий реквизит'");
|
||
|
||
// Конфигурация.Общие.ПланыОбмена
|
||
СтрокаПланыОбмена = СтрокаОбщие.Строки.Добавить();
|
||
СтрокаПланыОбмена.Имя = "ПланыОбмена";
|
||
СтрокаПланыОбмена.Метаданные = Метаданные.ПланыОбмена;
|
||
СтрокаПланыОбмена.ПутьКОбъекту = "ПланОбмена.*";
|
||
СтрокаПланыОбмена.ОписаниеПрав = ПраваПланаОбмена();
|
||
СтрокаПланыОбмена.Представление = НСтр("ru = 'Планы обмена'");
|
||
СтрокаПланыОбмена.ПредставлениеОбъекта = НСтр("ru = 'План обмена'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаПланыОбмена);
|
||
|
||
// Конфигурация.Общие.КритерииОтбора
|
||
СтрокаКритерииОтбора = СтрокаОбщие.Строки.Добавить();
|
||
СтрокаКритерииОтбора.Имя = "КритерииОтбора";
|
||
СтрокаКритерииОтбора.Метаданные = Метаданные.КритерииОтбора;
|
||
СтрокаКритерииОтбора.ПутьКОбъекту = "КритерийОтбора.*";
|
||
СтрокаКритерииОтбора.ОписаниеПрав = ПравоПросмотр();
|
||
СтрокаКритерииОтбора.Представление = НСтр("ru = 'Критерии отбора'");
|
||
СтрокаКритерииОтбора.ПредставлениеОбъекта = НСтр("ru = 'Критерий отбора'");
|
||
ДобавитьКомандыИПоля(Ложь, СтрокаКритерииОтбора);
|
||
|
||
// Конфигурация.Общие.ОбщиеФормы
|
||
СтрокаОбщиеФормы = СтрокаОбщие.Строки.Добавить();
|
||
СтрокаОбщиеФормы.Имя = "ОбщиеФормы";
|
||
СтрокаОбщиеФормы.Метаданные = Метаданные.ОбщиеФормы;
|
||
СтрокаОбщиеФормы.ПутьКОбъекту = "ОбщаяФорма.*";
|
||
СтрокаОбщиеФормы.ОписаниеПрав = ПравоПросмотр();
|
||
СтрокаОбщиеФормы.Представление = НСтр("ru = 'Общие формы'");
|
||
СтрокаОбщиеФормы.ПредставлениеОбъекта = НСтр("ru = 'Общая форма'");
|
||
|
||
// Конфигурация.Общие.ОбщиеКоманды
|
||
СтрокаОбщиеКоманды = СтрокаОбщие.Строки.Добавить();
|
||
СтрокаОбщиеКоманды.Имя = "ОбщиеКоманды";
|
||
СтрокаОбщиеКоманды.Метаданные = Метаданные.ОбщиеКоманды;
|
||
СтрокаОбщиеКоманды.ПутьКОбъекту = "ОбщаяКоманда.*";
|
||
СтрокаОбщиеКоманды.ОписаниеПрав = ПравоПросмотр();
|
||
СтрокаОбщиеКоманды.Представление = НСтр("ru = 'Общие команды'");
|
||
СтрокаОбщиеКоманды.ПредставлениеОбъекта = НСтр("ru = 'Общая команда'");
|
||
|
||
// Конфигурация.Общие.WebСервисы
|
||
СтрокаWebСервисы = СтрокаОбщие.Строки.Добавить();
|
||
СтрокаWebСервисы.Имя = "WebСервисы";
|
||
СтрокаWebСервисы.Метаданные = Метаданные.WebСервисы;
|
||
СтрокаWebСервисы.ПутьКОбъекту = "WebСервис.*";
|
||
СтрокаWebСервисы.Представление = НСтр("ru = 'Web-сервисы'");
|
||
СтрокаWebСервисы.ПредставлениеОбъекта = НСтр("ru = 'Web-сервис'");
|
||
|
||
// Конфигурация.Общие.WebСервисы.Операции
|
||
СтрокаОперации = СтрокаWebСервисы.Строки.Добавить();
|
||
СтрокаОперации.Имя = "Операции";
|
||
СтрокаОперации.ИмяВложений = "Операции";
|
||
СтрокаОперации.ПутьКОбъекту = "WebСервис.*.Операция.*";
|
||
СтрокаОперации.ОписаниеПрав = ПравоИспользование();
|
||
СтрокаОперации.БезГруппы = Истина;
|
||
СтрокаОперации.ПредставлениеОбъекта = НСтр("ru = 'Операция'");
|
||
|
||
// Конфигурация.Общие.HTTPСервисы
|
||
СтрокаHTTPСервисы = СтрокаОбщие.Строки.Добавить();
|
||
СтрокаHTTPСервисы.Имя = "HTTPСервисы";
|
||
СтрокаHTTPСервисы.Метаданные = Метаданные.HTTPСервисы;
|
||
СтрокаHTTPСервисы.ПутьКОбъекту = "HTTPСервис.*";
|
||
СтрокаHTTPСервисы.Представление = НСтр("ru = 'HTTP-сервисы'");
|
||
СтрокаHTTPСервисы.ПредставлениеОбъекта = НСтр("ru = 'HTTP-сервис'");
|
||
|
||
// Конфигурация.Общие.HTTPСервисы.ШаблоныURL
|
||
СтрокаШаблоныURL = СтрокаHTTPСервисы.Строки.Добавить();
|
||
СтрокаШаблоныURL.Имя = "ШаблоныURL";
|
||
СтрокаШаблоныURL.ИмяВложений = "ШаблоныURL";
|
||
СтрокаШаблоныURL.ПутьКОбъекту = "HTTPСервис.*.ШаблонURL.*";
|
||
СтрокаШаблоныURL.БезГруппы = Истина;
|
||
СтрокаШаблоныURL.ПредставлениеОбъекта = НСтр("ru = 'URL-шаблон'");
|
||
|
||
// Конфигурация.Общие.HTTPСервисы.ШаблоныURL.Методы
|
||
СтрокаМетоды = СтрокаШаблоныURL.Строки.Добавить();
|
||
СтрокаМетоды.Имя = "Методы";
|
||
СтрокаМетоды.ИмяВложений = "Методы";
|
||
СтрокаМетоды.ПутьКОбъекту = "HTTPСервис.*.ШаблонURL.*.Метод.*";
|
||
СтрокаМетоды.ОписаниеПрав = ПравоИспользование();
|
||
СтрокаМетоды.БезГруппы = Истина;
|
||
СтрокаМетоды.ПредставлениеОбъекта = НСтр("ru = 'Метод'");
|
||
|
||
// Конфигурация.Константы
|
||
СтрокаКонстанты = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаКонстанты.Имя = "Константы";
|
||
СтрокаКонстанты.Метаданные = Метаданные.Константы;
|
||
СтрокаКонстанты.ПутьКОбъекту = "Константа.*";
|
||
СтрокаКонстанты.ОписаниеПрав = ПраваКонстанты();
|
||
СтрокаКонстанты.Представление = НСтр("ru = 'Константы'");
|
||
СтрокаКонстанты.ПредставлениеОбъекта = НСтр("ru = 'Константа'");
|
||
|
||
// Конфигурация.Справочники
|
||
СтрокаСправочники = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаСправочники.Имя = "Справочники";
|
||
СтрокаСправочники.Метаданные = Метаданные.Справочники;
|
||
СтрокаСправочники.ПутьКОбъекту = "Справочник.*";
|
||
СтрокаСправочники.ОписаниеПрав = ПраваСправочникаИПланов();
|
||
СтрокаСправочники.Представление = НСтр("ru = 'Справочники'");
|
||
СтрокаСправочники.ПредставлениеОбъекта = НСтр("ru = 'Справочник'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаСправочники);
|
||
|
||
// Конфигурация.Документы (группа)
|
||
СтрокаГруппаДокументы = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаГруппаДокументы.Имя = "Документы";
|
||
СтрокаГруппаДокументы.Представление = НСтр("ru = 'Документы'");
|
||
|
||
// Конфигурация.Документы.Последовательности
|
||
СтрокаПоследовательности = СтрокаГруппаДокументы.Строки.Добавить();
|
||
СтрокаПоследовательности.Имя = "Последовательности";
|
||
СтрокаПоследовательности.Метаданные = Метаданные.Последовательности;
|
||
СтрокаПоследовательности.ПутьКОбъекту = "Последовательность.*";
|
||
СтрокаПоследовательности.ОписаниеПрав = ПраваПоследовательностиИПерерасчета();
|
||
СтрокаПоследовательности.Представление = НСтр("ru = 'Последовательности'");
|
||
СтрокаПоследовательности.ПредставлениеОбъекта = НСтр("ru = 'Последовательность'");
|
||
|
||
// Конфигурация.Документы (элементы)
|
||
СтрокаДокументы = СтрокаГруппаДокументы.Строки.Добавить();
|
||
СтрокаДокументы.Имя = "Документы";
|
||
СтрокаДокументы.Метаданные = Метаданные.Документы;
|
||
СтрокаДокументы.ПутьКОбъекту = "Документ.*";
|
||
СтрокаДокументы.ОписаниеПрав = ПраваДокумента();
|
||
СтрокаДокументы.БезГруппы = Истина;
|
||
СтрокаДокументы.ПредставлениеОбъекта = НСтр("ru = 'Документ'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаДокументы);
|
||
|
||
// Конфигурация.ЖурналыДокументов
|
||
СтрокаЖурналыДокументов = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаЖурналыДокументов.Имя = "ЖурналыДокументов";
|
||
СтрокаЖурналыДокументов.Метаданные = Метаданные.ЖурналыДокументов;
|
||
СтрокаЖурналыДокументов.ПутьКОбъекту = "ЖурналДокументов.*";
|
||
СтрокаЖурналыДокументов.ОписаниеПрав = ПраваЖурналаДокументов();
|
||
СтрокаЖурналыДокументов.Представление = НСтр("ru = 'Журналы документов'");
|
||
СтрокаЖурналыДокументов.ПредставлениеОбъекта = НСтр("ru = 'Журнал документов'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаЖурналыДокументов, "СтандартныеРеквизиты", Истина);
|
||
|
||
// Конфигурация.Перечисления
|
||
СтрокаПеречисления = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаПеречисления.Имя = "Перечисления";
|
||
СтрокаПеречисления.Метаданные = Метаданные.Перечисления;
|
||
СтрокаПеречисления.ПутьКОбъекту = "Перечисление.*";
|
||
СтрокаПеречисления.Представление = НСтр("ru = 'Перечисления'");
|
||
СтрокаПеречисления.ПредставлениеОбъекта = НСтр("ru = 'Перечисление'");
|
||
СтрокаПеречисления.БезРасшифровки = Истина;
|
||
ДобавитьКомандыИПоля(Ложь, СтрокаПеречисления);
|
||
|
||
// Конфигурация.Отчеты
|
||
СтрокаОтчеты = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаОтчеты.Имя = "Отчеты";
|
||
СтрокаОтчеты.Метаданные = Метаданные.Отчеты;
|
||
СтрокаОтчеты.ПутьКОбъекту = "Отчет.*";
|
||
СтрокаОтчеты.ОписаниеПрав = ПраваОтчетаОбработкиФункции();
|
||
СтрокаОтчеты.Представление = НСтр("ru = 'Отчеты'");
|
||
СтрокаОтчеты.ПредставлениеОбъекта = НСтр("ru = 'Отчет'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаОтчеты, "Реквизиты, ТабличныеЧасти");
|
||
|
||
// Конфигурация.Обработки
|
||
СтрокаОбработки = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаОбработки.Имя = "Обработки";
|
||
СтрокаОбработки.Метаданные = Метаданные.Обработки;
|
||
СтрокаОбработки.ПутьКОбъекту = "Обработка.*";
|
||
СтрокаОбработки.ОписаниеПрав = ПраваОтчетаОбработкиФункции();
|
||
СтрокаОбработки.Представление = НСтр("ru = 'Обработки'");
|
||
СтрокаОбработки.ПредставлениеОбъекта = НСтр("ru = 'Обработка'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаОбработки, "Реквизиты, ТабличныеЧасти");
|
||
|
||
// Конфигурация.ПланыВидовХарактеристик
|
||
СтрокаПланыВидовХарактеристик = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаПланыВидовХарактеристик.Имя = "ПланыВидовХарактеристик";
|
||
СтрокаПланыВидовХарактеристик.Метаданные = Метаданные.ПланыВидовХарактеристик;
|
||
СтрокаПланыВидовХарактеристик.ПутьКОбъекту = "ПланВидовХарактеристик.*";
|
||
СтрокаПланыВидовХарактеристик.ОписаниеПрав = ПраваСправочникаИПланов();
|
||
СтрокаПланыВидовХарактеристик.Представление = НСтр("ru = 'Планы видов характеристик'");
|
||
СтрокаПланыВидовХарактеристик.ПредставлениеОбъекта = НСтр("ru = 'План видов характеристик'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаПланыВидовХарактеристик);
|
||
|
||
// Конфигурация.ПланыСчетов
|
||
СтрокаПланыСчетов = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаПланыСчетов.Имя = "ПланыСчетов";
|
||
СтрокаПланыСчетов.Метаданные = Метаданные.ПланыСчетов;
|
||
СтрокаПланыСчетов.ПутьКОбъекту = "ПланСчетов.*";
|
||
СтрокаПланыСчетов.ОписаниеПрав = ПраваСправочникаИПланов();
|
||
СтрокаПланыСчетов.Представление = НСтр("ru = 'Планы счетов'");
|
||
СтрокаПланыСчетов.ПредставлениеОбъекта = НСтр("ru = 'План счетов'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаПланыСчетов, "Реквизиты, ПризнакиУчета,
|
||
|ПризнакиУчетаСубконто, ТабличныеЧасти, СтандартныеРеквизиты, СтандартныеТабличныеЧасти");
|
||
|
||
// Конфигурация.ПланыВидовРасчета
|
||
СтрокаПланыВидовРасчета = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаПланыВидовРасчета.Имя = "ПланыВидовРасчета";
|
||
СтрокаПланыВидовРасчета.Метаданные = Метаданные.ПланыВидовРасчета;
|
||
СтрокаПланыВидовРасчета.ПутьКОбъекту = "ПланВидовРасчета.*";
|
||
СтрокаПланыВидовРасчета.ОписаниеПрав = ПраваСправочникаИПланов();
|
||
СтрокаПланыВидовРасчета.Представление = НСтр("ru = 'Планы видов расчета'");
|
||
СтрокаПланыВидовРасчета.ПредставлениеОбъекта = НСтр("ru = 'План видов расчета'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаПланыВидовРасчета, "Реквизиты, ТабличныеЧасти,
|
||
|СтандартныеРеквизиты, СтандартныеТабличныеЧасти");
|
||
|
||
// Конфигурация.РегистрыСведений
|
||
СтрокаРегистрыСведений = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаРегистрыСведений.Имя = "РегистрыСведений";
|
||
СтрокаРегистрыСведений.Метаданные = Метаданные.РегистрыСведений;
|
||
СтрокаРегистрыСведений.ПутьКОбъекту = "РегистрСведений.*";
|
||
СтрокаРегистрыСведений.ОписаниеПрав = ПраваРегистраСведений();
|
||
СтрокаРегистрыСведений.Представление = НСтр("ru = 'Регистры сведений'");
|
||
СтрокаРегистрыСведений.ПредставлениеОбъекта = НСтр("ru = 'Регистр сведений'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаРегистрыСведений, "Измерения, Ресурсы,
|
||
|Реквизиты, СтандартныеРеквизиты");
|
||
|
||
// Конфигурация.РегистрыНакопления
|
||
СтрокаРегистрыНакопления = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаРегистрыНакопления.Имя = "РегистрыНакопления";
|
||
СтрокаРегистрыНакопления.Метаданные = Метаданные.РегистрыНакопления;
|
||
СтрокаРегистрыНакопления.ПутьКОбъекту = "РегистрНакопления.*";
|
||
СтрокаРегистрыНакопления.ОписаниеПрав = ПраваРегистраНакопленияИБухгалтерии();
|
||
СтрокаРегистрыНакопления.Представление = НСтр("ru = 'Регистры накопления'");
|
||
СтрокаРегистрыНакопления.ПредставлениеОбъекта = НСтр("ru = 'Регистр накопления'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаРегистрыНакопления, "Измерения, Ресурсы,
|
||
|Реквизиты, СтандартныеРеквизиты");
|
||
|
||
// Конфигурация.РегистрыБухгалтерии
|
||
СтрокаРегистрыБухгалтерии = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаРегистрыБухгалтерии.Имя = "РегистрыБухгалтерии";
|
||
СтрокаРегистрыБухгалтерии.Метаданные = Метаданные.РегистрыБухгалтерии;
|
||
СтрокаРегистрыБухгалтерии.ПутьКОбъекту = "РегистрБухгалтерии.*";
|
||
СтрокаРегистрыБухгалтерии.ОписаниеПрав = ПраваРегистраНакопленияИБухгалтерии();
|
||
СтрокаРегистрыБухгалтерии.Представление = НСтр("ru = 'Регистры бухгалтерии'");
|
||
СтрокаРегистрыБухгалтерии.ПредставлениеОбъекта = НСтр("ru = 'Регистр бухгалтерии'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаРегистрыБухгалтерии, "Измерения, Ресурсы,
|
||
|Реквизиты, СтандартныеРеквизиты");
|
||
|
||
// Конфигурация.РегистрыРасчета
|
||
СтрокаРегистрыРасчета = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаРегистрыРасчета.Имя = "РегистрыРасчета";
|
||
СтрокаРегистрыРасчета.Метаданные = Метаданные.РегистрыРасчета;
|
||
СтрокаРегистрыРасчета.ПутьКОбъекту = "РегистрРасчета.*";
|
||
СтрокаРегистрыРасчета.ОписаниеПрав = ПраваРегистраРасчета();
|
||
СтрокаРегистрыРасчета.Представление = НСтр("ru = 'Регистры расчета'");
|
||
СтрокаРегистрыРасчета.ПредставлениеОбъекта = НСтр("ru = 'Регистр расчета'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаРегистрыРасчета, "Измерения, Ресурсы,
|
||
|Реквизиты, СтандартныеРеквизиты, Перерасчеты");
|
||
|
||
// Конфигурация.БизнесПроцессы
|
||
СтрокаБизнесПроцессы = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаБизнесПроцессы.Имя = "БизнесПроцессы";
|
||
СтрокаБизнесПроцессы.Метаданные = Метаданные.БизнесПроцессы;
|
||
СтрокаБизнесПроцессы.ПутьКОбъекту = "БизнесПроцесс.*";
|
||
СтрокаБизнесПроцессы.ОписаниеПрав = ПраваБизнесПроцесса();
|
||
СтрокаБизнесПроцессы.Представление = НСтр("ru = 'Бизнес процессы'");
|
||
СтрокаБизнесПроцессы.ПредставлениеОбъекта = НСтр("ru = 'Бизнес процесс'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаБизнесПроцессы);
|
||
|
||
// Конфигурация.Задачи
|
||
СтрокаЗадачи = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаЗадачи.Имя = "Задачи";
|
||
СтрокаЗадачи.Метаданные = Метаданные.Задачи;
|
||
СтрокаЗадачи.ПутьКОбъекту = "Задача.*";
|
||
СтрокаЗадачи.ОписаниеПрав = ПраваЗадачи();
|
||
СтрокаЗадачи.Представление = НСтр("ru = 'Задачи'");
|
||
СтрокаЗадачи.ПредставлениеОбъекта = НСтр("ru = 'Задача'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаЗадачи, "РеквизитыАдресации,
|
||
|Реквизиты, ТабличныеЧасти, СтандартныеРеквизиты");
|
||
|
||
// Конфигурация.ВнешниеИсточникиДанных
|
||
СтрокаВнешниеИсточникиДанных = СтрокаКонфигурация.Строки.Добавить();
|
||
СтрокаВнешниеИсточникиДанных.Имя = "ВнешниеИсточникиДанных";
|
||
СтрокаВнешниеИсточникиДанных.Метаданные = Метаданные.ВнешниеИсточникиДанных;
|
||
СтрокаВнешниеИсточникиДанных.ПутьКОбъекту = "ВнешнийИсточникДанных.*";
|
||
СтрокаВнешниеИсточникиДанных.ОписаниеПрав = ПраваВнешнегоИсточникаДанных();
|
||
СтрокаВнешниеИсточникиДанных.Представление = НСтр("ru = 'Внешние источники данных'");
|
||
СтрокаВнешниеИсточникиДанных.ПредставлениеОбъекта = НСтр("ru = 'Внешний источник данных'");
|
||
|
||
// Конфигурация.ВнешниеИсточникиДанных.Таблицы
|
||
СтрокаТаблицы = СтрокаВнешниеИсточникиДанных.Строки.Добавить();
|
||
СтрокаТаблицы.Имя = "Таблицы";
|
||
СтрокаТаблицы.ИмяВложений = "Таблицы";
|
||
СтрокаТаблицы.ПутьКОбъекту = "ВнешнийИсточникДанных.*.Таблица.*";
|
||
СтрокаТаблицы.ОписаниеПрав = ПраваТаблицыВнешнегоИсточникаДанных();
|
||
СтрокаТаблицы.Представление = НСтр("ru = 'Таблицы'");
|
||
СтрокаТаблицы.ПредставлениеОбъекта = НСтр("ru = 'Таблица'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаТаблицы, "Поля");
|
||
|
||
// Конфигурация.ВнешниеИсточникиДанных.Кубы
|
||
СтрокаКуба = СтрокаВнешниеИсточникиДанных.Строки.Добавить();
|
||
СтрокаКуба.Имя = "Кубы";
|
||
СтрокаКуба.ИмяВложений = "Кубы";
|
||
СтрокаКуба.ПутьКОбъекту = "ВнешнийИсточникДанных.*.Куб.*";
|
||
СтрокаКуба.ОписаниеПрав = ПраваКубаИТаблицыИзмерений();
|
||
СтрокаКуба.Представление = НСтр("ru = 'Кубы'");
|
||
СтрокаКуба.ПредставлениеОбъекта = НСтр("ru = 'Куб'");
|
||
|
||
// Конфигурация.ВнешниеИсточникиДанных.Кубы.ТаблицыИзмерений
|
||
СтрокаТаблицыИзмерений = СтрокаКуба.Строки.Добавить();
|
||
СтрокаТаблицыИзмерений.Имя = "ТаблицыИзмерений";
|
||
СтрокаТаблицыИзмерений.ИмяВложений = "ТаблицыИзмерений";
|
||
СтрокаТаблицыИзмерений.ПутьКОбъекту = "ВнешнийИсточникДанных.*.Куб.*.ТаблицаИзмерения.*";
|
||
СтрокаТаблицыИзмерений.ОписаниеПрав = ПраваКубаИТаблицыИзмерений();
|
||
СтрокаТаблицыИзмерений.Представление = НСтр("ru = 'Таблицы измерений'");
|
||
СтрокаТаблицыИзмерений.ПредставлениеОбъекта = НСтр("ru = 'Таблица измерений'");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаТаблицыИзмерений, "Поля");
|
||
ДобавитьКомандыИПоля(СПолями, СтрокаКуба, "Измерения, Ресурсы", Истина);
|
||
|
||
// Конфигурация.ВнешниеИсточникиДанных.Функции
|
||
СтрокаФункции = СтрокаВнешниеИсточникиДанных.Строки.Добавить();
|
||
СтрокаФункции.Имя = "Функции";
|
||
СтрокаФункции.ИмяВложений = "Функции";
|
||
СтрокаФункции.ПутьКОбъекту = "ВнешнийИсточникДанных.*.Функция.*";
|
||
СтрокаФункции.ОписаниеПрав = ПраваОтчетаОбработкиФункции();
|
||
СтрокаФункции.Представление = НСтр("ru = 'Функции'");
|
||
СтрокаФункции.ПредставлениеОбъекта = НСтр("ru = 'Функция'");
|
||
|
||
Возврат Дерево;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ДобавитьКомандыИПоля(СПолями, СтрокаДерева, Поля = "Реквизиты, ТабличныеЧасти, СтандартныеРеквизиты", БезРедактирования = Ложь)
|
||
|
||
СтруктураПолей = Новый Структура(Поля);
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("Измерения") Тогда
|
||
// Измерения
|
||
СтрокаИзмерения = СтрокаДерева.Строки.Добавить();
|
||
СтрокаИзмерения.Имя = "Измерения";
|
||
СтрокаИзмерения.ИмяВложений = "Измерения";
|
||
СтрокаИзмерения.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".Измерение.*";
|
||
СтрокаИзмерения.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаИзмерения.Представление = НСтр("ru = 'Измерения'");
|
||
СтрокаИзмерения.ПредставлениеОбъекта = НСтр("ru = 'Измерение'");
|
||
КонецЕсли;
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("Ресурсы") Тогда
|
||
// Ресурсы
|
||
СтрокаРесурсы = СтрокаДерева.Строки.Добавить();
|
||
СтрокаРесурсы.Имя = "Ресурсы";
|
||
СтрокаРесурсы.ИмяВложений = "Ресурсы";
|
||
СтрокаРесурсы.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".Ресурс.*";
|
||
СтрокаРесурсы.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаРесурсы.Представление = НСтр("ru = 'Ресурсы'");
|
||
СтрокаРесурсы.ПредставлениеОбъекта = НСтр("ru = 'Ресурс'");
|
||
КонецЕсли;
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("РеквизитыАдресации") Тогда
|
||
// РеквизитыАдресации
|
||
СтрокаРеквизитыАдресации = СтрокаДерева.Строки.Добавить();
|
||
СтрокаРеквизитыАдресации.Имя = "РеквизитыАдресации";
|
||
СтрокаРеквизитыАдресации.ИмяВложений = "РеквизитыАдресации";
|
||
СтрокаРеквизитыАдресации.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".РеквизитАдресации.*";
|
||
СтрокаРеквизитыАдресации.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаРеквизитыАдресации.Представление = НСтр("ru = 'Реквизиты адресации'");
|
||
СтрокаРеквизитыАдресации.ПредставлениеОбъекта = НСтр("ru = 'Реквизит адресации'");
|
||
КонецЕсли;
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("Реквизиты") Тогда
|
||
// Реквизиты
|
||
СтрокаРеквизиты = СтрокаДерева.Строки.Добавить();
|
||
СтрокаРеквизиты.Имя = "Реквизиты";
|
||
СтрокаРеквизиты.ИмяВложений = "Реквизиты";
|
||
СтрокаРеквизиты.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".Реквизит.*";
|
||
СтрокаРеквизиты.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаРеквизиты.Представление = НСтр("ru = 'Реквизиты'");
|
||
СтрокаРеквизиты.ПредставлениеОбъекта = НСтр("ru = 'Реквизит'");
|
||
КонецЕсли;
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("Поля") Тогда
|
||
// Поля
|
||
СтрокаПоля = СтрокаДерева.Строки.Добавить();
|
||
СтрокаПоля.Имя = "Поля";
|
||
СтрокаПоля.ИмяВложений = "Поля";
|
||
СтрокаПоля.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".Поле.*";
|
||
СтрокаПоля.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаПоля.Представление = НСтр("ru = 'Поля'");
|
||
СтрокаПоля.ПредставлениеОбъекта = НСтр("ru = 'Поле'");
|
||
КонецЕсли;
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("ПризнакиУчета") Тогда
|
||
// ПризнакиУчета
|
||
СтрокаПризнакиУчета = СтрокаДерева.Строки.Добавить();
|
||
СтрокаПризнакиУчета.Имя = "ПризнакиУчета";
|
||
СтрокаПризнакиУчета.ИмяВложений = "ПризнакиУчета";
|
||
СтрокаПризнакиУчета.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".ПризнакУчета.*";
|
||
СтрокаПризнакиУчета.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаПризнакиУчета.Представление = НСтр("ru = 'Признаки учета'");
|
||
СтрокаПризнакиУчета.ПредставлениеОбъекта = НСтр("ru = 'Признак учета'");
|
||
КонецЕсли;
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("ПризнакиУчетаСубконто") Тогда
|
||
// ПризнакиУчетаСубконто
|
||
СтрокаПризнакиУчетаСубконто = СтрокаДерева.Строки.Добавить();
|
||
СтрокаПризнакиУчетаСубконто.Имя = "ПризнакиУчетаСубконто";
|
||
СтрокаПризнакиУчетаСубконто.ИмяВложений = "ПризнакиУчетаСубконто";
|
||
СтрокаПризнакиУчетаСубконто.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".ПризнакУчетаСубконто.*";
|
||
СтрокаПризнакиУчетаСубконто.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаПризнакиУчетаСубконто.Представление = НСтр("ru = 'Признаки учета субконто'");
|
||
СтрокаПризнакиУчетаСубконто.ПредставлениеОбъекта = НСтр("ru = 'Признак учета субконто'");
|
||
КонецЕсли;
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("ТабличныеЧасти") Тогда
|
||
// ТабличныеЧасти
|
||
СтрокаТабличныеЧасти = СтрокаДерева.Строки.Добавить();
|
||
СтрокаТабличныеЧасти.Имя = "ТабличныеЧасти";
|
||
СтрокаТабличныеЧасти.ИмяВложений = "ТабличныеЧасти";
|
||
СтрокаТабличныеЧасти.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".ТабличнаяЧасть.*";
|
||
СтрокаТабличныеЧасти.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаТабличныеЧасти.Представление = НСтр("ru = 'Табличные части'");
|
||
СтрокаТабличныеЧасти.ПредставлениеОбъекта = НСтр("ru = 'Табличная часть'");
|
||
|
||
// ТабличныеЧасти.Реквизиты
|
||
СтрокаТабличныеЧастиРеквизиты = СтрокаТабличныеЧасти.Строки.Добавить();
|
||
СтрокаТабличныеЧастиРеквизиты.Имя = "Реквизиты";
|
||
СтрокаТабличныеЧастиРеквизиты.ИмяВложений = "Реквизиты";
|
||
СтрокаТабличныеЧастиРеквизиты.ПутьКОбъекту = СтрокаТабличныеЧасти.ПутьКОбъекту + ".Реквизит.*";
|
||
СтрокаТабличныеЧастиРеквизиты.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаТабличныеЧастиРеквизиты.Представление = НСтр("ru = 'Реквизиты'");
|
||
СтрокаТабличныеЧастиРеквизиты.ПредставлениеОбъекта = НСтр("ru = 'Реквизит'");
|
||
СтрокаТабличныеЧастиРеквизиты.БезГруппы = Истина;
|
||
КонецЕсли;
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("СтандартныеРеквизиты") Тогда
|
||
// СтандартныеРеквизиты
|
||
СтрокаСтандартныеРеквизиты = СтрокаДерева.Строки.Добавить();
|
||
СтрокаСтандартныеРеквизиты.Имя = "СтандартныеРеквизиты";
|
||
СтрокаСтандартныеРеквизиты.ИмяВложений = "СтандартныеРеквизиты";
|
||
СтрокаСтандартныеРеквизиты.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".СтандартныйРеквизит.*";
|
||
СтрокаСтандартныеРеквизиты.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаСтандартныеРеквизиты.Представление = НСтр("ru = 'Стандартные реквизиты'");
|
||
СтрокаСтандартныеРеквизиты.ПредставлениеОбъекта = НСтр("ru = 'Стандартный реквизит'");
|
||
КонецЕсли;
|
||
|
||
Если СПолями И СтруктураПолей.Свойство("СтандартныеТабличныеЧасти") Тогда
|
||
// СтандартныеТабличныеЧасти
|
||
СтрокаСтандартныеТабличныеЧасти = СтрокаДерева.Строки.Добавить();
|
||
СтрокаСтандартныеТабличныеЧасти.Имя = "СтандартныеТабличныеЧасти";
|
||
СтрокаСтандартныеТабличныеЧасти.ИмяВложений = "СтандартныеТабличныеЧасти";
|
||
СтрокаСтандартныеТабличныеЧасти.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".СтандартнаяТабличнаяЧасть.*";
|
||
СтрокаСтандартныеТабличныеЧасти.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаСтандартныеТабличныеЧасти.Представление = НСтр("ru = 'Стандартные табличные части'");
|
||
СтрокаСтандартныеТабличныеЧасти.ПредставлениеОбъекта = НСтр("ru = 'Стандартная табличная часть'");
|
||
|
||
// СтандартныеТабличныеЧасти.СтандартныеРеквизиты
|
||
СтрокаСтандартныеТабличныеЧастиСтандартныеРеквизиты = СтрокаСтандартныеТабличныеЧасти.Строки.Добавить();
|
||
СтрокаСтандартныеТабличныеЧастиСтандартныеРеквизиты.Имя = "СтандартныеРеквизиты";
|
||
СтрокаСтандартныеТабличныеЧастиСтандартныеРеквизиты.ИмяВложений = "СтандартныеРеквизиты";
|
||
СтрокаСтандартныеТабличныеЧастиСтандартныеРеквизиты.ПутьКОбъекту = СтрокаСтандартныеТабличныеЧасти.ПутьКОбъекту + ".СтандартныйРеквизит.*";
|
||
СтрокаСтандартныеТабличныеЧастиСтандартныеРеквизиты.ОписаниеПрав = ПраваРеквизита(БезРедактирования);
|
||
СтрокаСтандартныеТабличныеЧастиСтандартныеРеквизиты.Представление = НСтр("ru = 'Стандартные реквизиты'");
|
||
СтрокаСтандартныеТабличныеЧастиСтандартныеРеквизиты.ПредставлениеОбъекта = НСтр("ru = 'Стандартный реквизит'");
|
||
СтрокаСтандартныеТабличныеЧастиСтандартныеРеквизиты.БезГруппы = Истина;
|
||
КонецЕсли;
|
||
|
||
Если СтруктураПолей.Свойство("Перерасчеты") Тогда
|
||
// Перерасчеты
|
||
СтрокаПерерасчеты = СтрокаДерева.Строки.Добавить();
|
||
СтрокаПерерасчеты.Имя = "Перерасчеты";
|
||
СтрокаПерерасчеты.ИмяВложений = "Перерасчеты";
|
||
СтрокаПерерасчеты.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".Перерасчет.*";
|
||
СтрокаПерерасчеты.ОписаниеПрав = ПраваПоследовательностиИПерерасчета();
|
||
СтрокаПерерасчеты.Представление = НСтр("ru = 'Перерасчеты'");
|
||
СтрокаПерерасчеты.ПредставлениеОбъекта = НСтр("ru = 'Перерасчет'");
|
||
КонецЕсли;
|
||
|
||
// Команды
|
||
СтрокаКоманды = СтрокаДерева.Строки.Добавить();
|
||
СтрокаКоманды.Имя = "Команды";
|
||
СтрокаКоманды.ИмяВложений = "Команды";
|
||
СтрокаКоманды.ПутьКОбъекту = СтрокаДерева.ПутьКОбъекту + ".Команда.*";
|
||
СтрокаКоманды.ОписаниеПрав = ПравоПросмотр();
|
||
СтрокаКоманды.Представление = НСтр("ru = 'Команды'");
|
||
СтрокаКоманды.ПредставлениеОбъекта = НСтр("ru = 'Команда'");
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * СписокПрав - СписокЗначений
|
||
// * УровниДоступа - ТаблицаЗначений:
|
||
// ** Право - Строка
|
||
// ** ЭтоНаборПрав - Булево
|
||
// ** Уровень - Число
|
||
// ** ПравоСОграничением - Строка
|
||
//
|
||
Функция ОписаниеПрав()
|
||
|
||
УровниДоступа = Новый ТаблицаЗначений;
|
||
УровниДоступа.Колонки.Добавить("Право", ТипСтрока(1000));
|
||
УровниДоступа.Колонки.Добавить("ЭтоНаборПрав", Новый ОписаниеТипов("Булево"));
|
||
УровниДоступа.Колонки.Добавить("Уровень", ТипЧисло(2));
|
||
УровниДоступа.Колонки.Добавить("ПравоСОграничением", ТипСтрока(1000));
|
||
|
||
ОписаниеПрав = Новый Структура;
|
||
ОписаниеПрав.Вставить("СписокПрав", Новый СписокЗначений);
|
||
ОписаниеПрав.Вставить("УровниДоступа", УровниДоступа);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваКонфигурации()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
СписокПрав.Добавить("Администрирование",
|
||
НСтр("ru = 'Администрирование'"));
|
||
|
||
СписокПрав.Добавить("АдминистрированиеДанных",
|
||
НСтр("ru = 'Администрирование данных'"));
|
||
|
||
СписокПрав.Добавить("ОбновлениеКонфигурацииБазыДанных",
|
||
НСтр("ru = 'Обновление конфигурации базы данных'"));
|
||
|
||
СписокПрав.Добавить("МонопольныйРежим",
|
||
НСтр("ru = 'Монопольный режим'"));
|
||
|
||
СписокПрав.Добавить("АктивныеПользователи",
|
||
НСтр("ru = 'Активные пользователи'"));
|
||
|
||
СписокПрав.Добавить("ЖурналРегистрации",
|
||
НСтр("ru = 'Журнал регистрации'"));
|
||
|
||
СписокПрав.Добавить("ТонкийКлиент",
|
||
НСтр("ru = 'Тонкий клиент'"));
|
||
|
||
СписокПрав.Добавить("ВебКлиент",
|
||
НСтр("ru = 'Веб-клиент'"));
|
||
|
||
СписокПрав.Добавить("МобильныйКлиент",
|
||
НСтр("ru = 'Мобильный клиент'"));
|
||
|
||
СписокПрав.Добавить("ТолстыйКлиент",
|
||
НСтр("ru = 'Толстый клиент'"));
|
||
|
||
СписокПрав.Добавить("ВнешнееСоединение",
|
||
НСтр("ru = 'Внешнее соединение'"));
|
||
|
||
СписокПрав.Добавить("Automation",
|
||
НСтр("ru = 'Automation'"));
|
||
|
||
СписокПрав.Добавить("РежимВсеФункции",
|
||
НСтр("ru = 'Режим ""Все функции""'"));
|
||
|
||
СписокПрав.Добавить("РегистрацияИнформационнойБазыСистемыВзаимодействия",
|
||
НСтр("ru = 'Регистрация системы взаимодействия'"));
|
||
|
||
СписокПрав.Добавить("РежимОсновногоОкнаОбычный",
|
||
НСтр("ru = 'Режим основного окна ""Обычный""'"));
|
||
|
||
СписокПрав.Добавить("РежимОсновногоОкнаРабочееМесто",
|
||
НСтр("ru = 'Режим основного окна ""Рабочее место""'"));
|
||
|
||
СписокПрав.Добавить("РежимОсновногоОкнаВстроенноеРабочееМесто",
|
||
НСтр("ru = 'Режим основного окна ""Встроенное рабочее место""'"));
|
||
|
||
СписокПрав.Добавить("РежимОсновногоОкнаПолноэкранноеРабочееМесто",
|
||
НСтр("ru = 'Режим основного окна ""Полноэкранное рабочее место""'"));
|
||
|
||
СписокПрав.Добавить("РежимОсновногоОкнаКиоск",
|
||
НСтр("ru = 'Режим основного окна ""Киоск""'"));
|
||
|
||
СписокПрав.Добавить("СохранениеДанныхПользователя",
|
||
НСтр("ru = 'Сохранение данных пользователя'"));
|
||
|
||
СписокПрав.Добавить("АдминистрированиеРасширенийКонфигурации",
|
||
НСтр("ru = 'Администрирование расширений конфигурации'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеОткрытиеВнешнихОбработок",
|
||
НСтр("ru = 'Интерактивное открытие внешних обработок'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеОткрытиеВнешнихОтчетов",
|
||
НСтр("ru = 'Интерактивное открытие внешних отчетов'"));
|
||
|
||
СписокПрав.Добавить("Вывод",
|
||
НСтр("ru = 'Вывод'"));
|
||
|
||
УровниДоступа = ОписаниеПрав.УровниДоступа;
|
||
Для Каждого ЭлементСписка Из СписокПрав Цикл
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = ЭлементСписка.Значение;
|
||
НоваяСтрока.Уровень = 1;
|
||
КонецЦикла;
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПравоПросмотр()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
СписокПрав.Добавить("Просмотр",
|
||
НСтр("ru = 'Просмотр'"));
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Просмотр";
|
||
НоваяСтрока.Уровень = 6;
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПравоИспользование()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
СписокПрав.Добавить("Использование",
|
||
НСтр("ru = 'Использование'"));
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Использование";
|
||
НоваяСтрока.Уровень = 2;
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваПараметраСеанса()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Получение",
|
||
НСтр("ru = 'Получение'"));
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Установка",
|
||
НСтр("ru = 'Установка'"));
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Получение" + "," + "Установка"; // @Access-right-1, @Access-right-3
|
||
НоваяСтрока.Уровень = 14;
|
||
НоваяСтрока.ЭтоНаборПрав = Истина;
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Установка"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 13;
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Получение"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 12;
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваРеквизита(БезРедактирования = Ложь)
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
СписокПрав.Добавить("Просмотр",
|
||
НСтр("ru = 'Просмотр'"));
|
||
|
||
Если Не БезРедактирования Тогда
|
||
СписокПрав.Добавить("Редактирование",
|
||
НСтр("ru = 'Редактирование'"));
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Редактирование";
|
||
НоваяСтрока.Уровень = 9;
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Просмотр";
|
||
НоваяСтрока.Уровень = 6;
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваПланаОбмена()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав);
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав);
|
||
|
||
СписокПрав.Добавить("ВводПоСтроке",
|
||
НСтр("ru = 'Ввод по строке'"));
|
||
|
||
ДобавитьПраваРаботыСИсторией(СписокПрав);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваКонстанты()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав, , Ложь, Ложь);
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав, , Ложь);
|
||
ДобавитьПраваРаботыСИсторией(СписокПрав, Ложь);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав, , Ложь, Ложь);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваСправочникаИПланов()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав);
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав);
|
||
ДобавитьПраваРаботыСПредопределеннымиДанными(СписокПрав);
|
||
|
||
СписокПрав.Добавить("ВводПоСтроке",
|
||
НСтр("ru = 'Ввод по строке'"));
|
||
|
||
ДобавитьПраваРаботыСИсторией(СписокПрав);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваПоследовательностиИПерерасчета()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав,, Ложь);
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Изменение";
|
||
НоваяСтрока.Уровень = 4;
|
||
НоваяСтрока.ПравоСОграничением = "Изменение";
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Чтение";
|
||
НоваяСтрока.Уровень = 3;
|
||
НоваяСтрока.ПравоСОграничением = "Чтение";
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваДокумента()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав);
|
||
|
||
СписокПрав.Добавить("Проведение",
|
||
НСтр("ru = 'Проведение'"));
|
||
|
||
СписокПрав.Добавить("ОтменаПроведения",
|
||
НСтр("ru = 'Отмена проведения'"));
|
||
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав);
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеПроведение",
|
||
НСтр("ru = 'Интерактивное проведение'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеПроведениеНеоперативное",
|
||
НСтр("ru = 'Интерактивное проведение неоперативное'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивнаяОтменаПроведения",
|
||
НСтр("ru = 'Интерактивная отмена проведения'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеИзменениеПроведенных",
|
||
НСтр("ru = 'Интерактивное изменение проведенных'"));
|
||
|
||
СписокПрав.Добавить("ВводПоСтроке",
|
||
НСтр("ru = 'Ввод по строке'"));
|
||
|
||
ДобавитьПраваРаботыСИсторией(СписокПрав);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваЖурналаДокументов()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав, Истина);
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав, Истина);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав, Истина);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваОтчетаОбработкиФункции()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
СписокПрав.Добавить("Использование",
|
||
НСтр("ru = 'Использование'"));
|
||
|
||
СписокПрав.Добавить("Просмотр",
|
||
НСтр("ru = 'Просмотр'"));
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Просмотр";
|
||
НоваяСтрока.Уровень = 6;
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Использование";
|
||
НоваяСтрока.Уровень = 2;
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваРегистраСведений()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав,, Ложь);
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав,, Ложь);
|
||
|
||
СписокПрав.Добавить("УправлениеИтогами",
|
||
НСтр("ru = 'Управление итогами'"));
|
||
|
||
ДобавитьПраваРаботыСИсторией(СписокПрав);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав,, Ложь);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваРегистраНакопленияИБухгалтерии()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав,, Ложь);
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав,, Ложь);
|
||
|
||
СписокПрав.Добавить("УправлениеИтогами",
|
||
НСтр("ru = 'Управление итогами'"));
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав,, Ложь);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваРегистраРасчета()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав,, Ложь);
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав,, Ложь);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав,, Ложь);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваБизнесПроцесса()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав);
|
||
|
||
СписокПрав.Добавить("Старт",
|
||
НСтр("ru = 'Старт'"));
|
||
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав);
|
||
|
||
СписокПрав.Добавить("ИнтерактивныйСтарт",
|
||
НСтр("ru = 'Интерактивный старт'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивнаяАктивация",
|
||
НСтр("ru = 'Интерактивная активация'"));
|
||
|
||
СписокПрав.Добавить("ВводПоСтроке",
|
||
НСтр("ru = 'Ввод по строке'"));
|
||
|
||
ДобавитьПраваРаботыСИсторией(СписокПрав);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваЗадачи()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав);
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Выполнение",
|
||
НСтр("ru = 'Выполнение'"));
|
||
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав);
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеВыполнение",
|
||
НСтр("ru = 'Интерактивный выполнение'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивнаяАктивация",
|
||
НСтр("ru = 'Интерактивная активация'"));
|
||
|
||
СписокПрав.Добавить("ВводПоСтроке",
|
||
НСтр("ru = 'Ввод по строке'"));
|
||
|
||
ДобавитьПраваРаботыСИсторией(СписокПрав);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваВнешнегоИсточникаДанных()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Использование",
|
||
НСтр("ru = 'Использование'"));
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Администрирование",
|
||
НСтр("ru = 'Администрирование'"));
|
||
|
||
СписокПрав.Добавить("ИзменениеСтандартнойАутентификации",
|
||
НСтр("ru = 'Изменение стандартной аутентификации текущего пользователя'"));
|
||
|
||
СписокПрав.Добавить("ИзменениеСтандартнойАутентификацииСеанса",
|
||
НСтр("ru = 'Изменение стандартной аутентификации сеанса'"));
|
||
|
||
СписокПрав.Добавить("ИзменениеАутентификацииОССеанса",
|
||
НСтр("ru = 'Изменение аутентификации операционной системы сеанса'"));
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Использование" + "," + "Администрирование"; // @Access-right-1, @Access-right-3
|
||
НоваяСтрока.Уровень = 17;
|
||
НоваяСтрока.ЭтоНаборПрав = Истина;
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Администрирование"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 16;
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Использование"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 15;
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "ИзменениеСтандартнойАутентификации";
|
||
НоваяСтрока.Уровень = 1;
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "ИзменениеСтандартнойАутентификацииСеанса";
|
||
НоваяСтрока.Уровень = 1;
|
||
|
||
НоваяСтрока = ОписаниеПрав.УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "ИзменениеАутентификацииОССеанса";
|
||
НоваяСтрока.Уровень = 1;
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваТаблицыВнешнегоИсточникаДанных()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав);
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав,,, Ложь);
|
||
|
||
СписокПрав.Добавить("ВводПоСтроке",
|
||
НСтр("ru = 'Ввод по строке'"));
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПраваКубаИТаблицыИзмерений()
|
||
|
||
ОписаниеПрав = ОписаниеПрав();
|
||
СписокПрав = ОписаниеПрав.СписокПрав;
|
||
|
||
ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав, Истина,, Ложь);
|
||
ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав, Истина);
|
||
|
||
ЗаполнитьУровниДоступа(ОписаниеПрав, Истина,, Ложь);
|
||
|
||
Возврат ОписаниеПрав;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ДобавитьПраваПрограммнойРаботыСОбъектами(СписокПрав, БезИзменения = Ложь, Ссылочные = Истина, СОграничением = Истина)
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Чтение",
|
||
НСтр("ru = 'Чтение'"), СОграничением);
|
||
|
||
Если БезИзменения Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Изменение",
|
||
НСтр("ru = 'Изменение'"), СОграничением);
|
||
|
||
Если Не Ссылочные Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Добавление",
|
||
НСтр("ru = 'Добавление'"), СОграничением);
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Удаление",
|
||
НСтр("ru = 'Удаление'"), СОграничением);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ДобавитьПраваИнтерактивнойРаботыСОбъектами(СписокПрав, БезИзменения = Ложь, Ссылочные = Истина, СПометкойУдаления = Истина)
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Просмотр",
|
||
НСтр("ru = 'Просмотр'"));
|
||
|
||
Если БезИзменения Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
// @Access-right-1
|
||
СписокПрав.Добавить("Редактирование",
|
||
НСтр("ru = 'Редактирование'"));
|
||
|
||
Если Не Ссылочные Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеДобавление",
|
||
НСтр("ru = 'Интерактивное добавление'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеУдаление",
|
||
НСтр("ru = 'Интерактивное удаление'"));
|
||
|
||
Если Не СПометкойУдаления Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
СписокПрав.Добавить("ИнтерактивнаяПометкаУдаления",
|
||
НСтр("ru = 'Интерактивная пометка на удаление'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеСнятиеПометкиУдаления",
|
||
НСтр("ru = 'Интерактивное снятие пометки удаления'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеУдалениеПомеченных",
|
||
НСтр("ru = 'Интерактивное удаление помеченных'"));
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ДобавитьПраваРаботыСПредопределеннымиДанными(СписокПрав)
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеУдалениеПредопределенныхДанных",
|
||
НСтр("ru = 'Интерактивное удаление предопределенных'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивнаяПометкаУдаленияПредопределенныхДанных",
|
||
НСтр("ru = 'Интерактивная пометка на удаление предопределенных'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеСнятиеПометкиУдаленияПредопределенныхДанных",
|
||
НСтр("ru = 'Интерактивное снятие пометки удаления предопределенных'"));
|
||
|
||
СписокПрав.Добавить("ИнтерактивноеУдалениеПомеченныхПредопределенныхДанных",
|
||
НСтр("ru = 'Интерактивное удаление помеченных предопределенных'"));
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ДобавитьПраваРаботыСИсторией(СписокПрав, ПраваНаОтсутствующиеДанные = Истина)
|
||
|
||
СписокПрав.Добавить("ЧтениеИсторииДанных",
|
||
НСтр("ru = 'Чтение истории данных'"));
|
||
|
||
Если ПраваНаОтсутствующиеДанные Тогда
|
||
СписокПрав.Добавить("ЧтениеИсторииДанныхОтсутствующихДанных",
|
||
НСтр("ru = 'Чтение истории данных отсутствующих данных'"));
|
||
КонецЕсли;
|
||
|
||
СписокПрав.Добавить("ИзменениеИсторииДанных",
|
||
НСтр("ru = 'Изменение истории данных'"));
|
||
|
||
Если ПраваНаОтсутствующиеДанные Тогда
|
||
СписокПрав.Добавить("ИзменениеИсторииДанныхОтсутствующихДанных",
|
||
НСтр("ru = 'Изменение истории данных отсутствующих данных'"));
|
||
КонецЕсли;
|
||
|
||
СписокПрав.Добавить("ИзменениеНастроекИсторииДанных",
|
||
НСтр("ru = 'Изменение настроек истории данных'"));
|
||
|
||
СписокПрав.Добавить("ИзменениеКомментарияВерсииИсторииДанных",
|
||
НСтр("ru = 'Изменение комментария версии истории данных'"));
|
||
|
||
СписокПрав.Добавить("ПросмотрИсторииДанных",
|
||
НСтр("ru = 'Просмотр истории данных'"));
|
||
|
||
СписокПрав.Добавить("РедактированиеКомментарияВерсииИсторииДанных",
|
||
НСтр("ru = 'Редактирование комментария версии истории данных'"));
|
||
|
||
СписокПрав.Добавить("ПереходНаВерсиюИсторииДанных",
|
||
НСтр("ru = 'Переход на версию истории данных'"));
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ЗаполнитьУровниДоступа(ОписаниеПрав, БезИзменения = Ложь, Ссылочный = Истина, СОграничением = Истина)
|
||
|
||
УровниДоступа = ОписаниеПрав.УровниДоступа;
|
||
|
||
Если Ссылочный И Не БезИзменения Тогда
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "ИнтерактивноеДобавление"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 11;
|
||
Если СОграничением Тогда
|
||
НоваяСтрока.ПравоСОграничением = "Добавление"; // @Access-right-1
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Редактирование" + "," + "Добавление"; // @Access-right-1, @Access-right-3
|
||
НоваяСтрока.Уровень = 10;
|
||
НоваяСтрока.ЭтоНаборПрав = Истина;
|
||
Если СОграничением Тогда
|
||
НоваяСтрока.ПравоСОграничением = "Добавление"; // @Access-right-1
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если Не БезИзменения Тогда
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Редактирование"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 9;
|
||
Если СОграничением Тогда
|
||
НоваяСтрока.ПравоСОграничением = "Изменение"; // @Access-right-1
|
||
КонецЕсли;
|
||
|
||
Если Ссылочный Тогда
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Просмотр" + "," + "Добавление"; // @Access-right-1, @Access-right-3
|
||
НоваяСтрока.Уровень = 8;
|
||
НоваяСтрока.ЭтоНаборПрав = Истина;
|
||
Если СОграничением Тогда
|
||
НоваяСтрока.ПравоСОграничением = "Добавление"; // @Access-right-1
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Просмотр" + "," + "Изменение"; // @Access-right-1, @Access-right-3
|
||
НоваяСтрока.Уровень = 7;
|
||
НоваяСтрока.ЭтоНаборПрав = Истина;
|
||
Если СОграничением Тогда
|
||
НоваяСтрока.ПравоСОграничением = "Изменение"; // @Access-right-1
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Просмотр"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 6;
|
||
Если СОграничением Тогда
|
||
НоваяСтрока.ПравоСОграничением = "Чтение"; // @Access-right-1
|
||
КонецЕсли;
|
||
|
||
Если Ссылочный И Не БезИзменения Тогда
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Добавление"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 5;
|
||
Если СОграничением Тогда
|
||
НоваяСтрока.ПравоСОграничением = "Добавление"; // @Access-right-1
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если Не БезИзменения Тогда
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Изменение"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 4;
|
||
Если СОграничением Тогда
|
||
НоваяСтрока.ПравоСОграничением = "Изменение"; // @Access-right-1
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
НоваяСтрока = УровниДоступа.Добавить();
|
||
НоваяСтрока.Право = "Чтение"; // @Access-right-1
|
||
НоваяСтрока.Уровень = 3;
|
||
Если СОграничением Тогда
|
||
НоваяСтрока.ПравоСОграничением = "Чтение"; // @Access-right-1
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция Картинки()
|
||
|
||
Картинки = Новый СписокЗначений;
|
||
Картинки.Добавить(""); // Без картинки.
|
||
Картинки.Добавить("Конфигурация",,, БиблиотекаКартинок.МетаданныеКонфигурация);
|
||
Картинки.Добавить("Общие",,, БиблиотекаКартинок.МетаданныеОбщие);
|
||
Картинки.Добавить("Подсистемы",,, БиблиотекаКартинок.МетаданныеПодсистемы);
|
||
Картинки.Добавить("ПараметрыСеанса",,, БиблиотекаКартинок.МетаданныеПараметрыСеанса);
|
||
Картинки.Добавить("ОбщиеРеквизиты",,, БиблиотекаКартинок.МетаданныеОбщиеРеквизиты);
|
||
Картинки.Добавить("ПланыОбмена",,, БиблиотекаКартинок.МетаданныеПланыОбмена);
|
||
Картинки.Добавить("Реквизиты",,, БиблиотекаКартинок.МетаданныеРеквизиты);
|
||
Картинки.Добавить("ТабличныеЧасти",,, БиблиотекаКартинок.МетаданныеТабличныеЧасти);
|
||
Картинки.Добавить("СтандартныеРеквизиты",,, БиблиотекаКартинок.МетаданныеСтандартныеРеквизиты);
|
||
Картинки.Добавить("Команды",,, БиблиотекаКартинок.МетаданныеКоманды);
|
||
Картинки.Добавить("КритерииОтбора",,, БиблиотекаКартинок.МетаданныеКритерииОтбора);
|
||
Картинки.Добавить("ОбщиеФормы",,, БиблиотекаКартинок.МетаданныеОбщиеФормы);
|
||
Картинки.Добавить("ОбщиеКоманды",,, БиблиотекаКартинок.МетаданныеОбщиеКоманды);
|
||
Картинки.Добавить("WebСервисы",,, БиблиотекаКартинок.МетаданныеWebСервисы);
|
||
Картинки.Добавить("Операции",,, БиблиотекаКартинок.МетаданныеWebСервисыОперации);
|
||
Картинки.Добавить("HTTPСервисы",,, БиблиотекаКартинок.МетаданныеHTTPСервисы);
|
||
Картинки.Добавить("ШаблоныURL",,, БиблиотекаКартинок.МетаданныеHTTPСервисыШаблоныURL);
|
||
Картинки.Добавить("Методы",,, БиблиотекаКартинок.МетаданныеHTTPСервисыШаблоныURLМетоды);
|
||
Картинки.Добавить("Константы",,, БиблиотекаКартинок.МетаданныеКонстанты);
|
||
Картинки.Добавить("Справочники",,, БиблиотекаКартинок.МетаданныеСправочники);
|
||
Картинки.Добавить("Документы",,, БиблиотекаКартинок.МетаданныеДокументы);
|
||
Картинки.Добавить("Последовательности",,, БиблиотекаКартинок.МетаданныеПоследовательности);
|
||
Картинки.Добавить("ЖурналыДокументов",,, БиблиотекаКартинок.МетаданныеЖурналыДокументов);
|
||
Картинки.Добавить("Перечисления",,, БиблиотекаКартинок.МетаданныеПеречисления);
|
||
Картинки.Добавить("Отчеты",,, БиблиотекаКартинок.МетаданныеОтчеты);
|
||
Картинки.Добавить("Обработки",,, БиблиотекаКартинок.МетаданныеОбработки);
|
||
Картинки.Добавить("ПланыВидовХарактеристик",,, БиблиотекаКартинок.МетаданныеПланыВидовХарактеристик);
|
||
Картинки.Добавить("ПланыСчетов",,, БиблиотекаКартинок.МетаданныеПланыСчетов);
|
||
Картинки.Добавить("ПризнакиУчета",,, БиблиотекаКартинок.МетаданныеПризнакиУчета);
|
||
Картинки.Добавить("ПризнакиУчетаСубконто",,, БиблиотекаКартинок.МетаданныеПризнакиУчетаСубконто);
|
||
Картинки.Добавить("СтандартныеТабличныеЧасти",,, БиблиотекаКартинок.МетаданныеСтандартныеТабличныеЧасти);
|
||
Картинки.Добавить("ПланыВидовРасчета",,, БиблиотекаКартинок.МетаданныеПланыВидовРасчета);
|
||
Картинки.Добавить("РегистрыСведений",,, БиблиотекаКартинок.МетаданныеРегистрыСведений);
|
||
Картинки.Добавить("Измерения",,, БиблиотекаКартинок.МетаданныеИзмерения);
|
||
Картинки.Добавить("Ресурсы",,, БиблиотекаКартинок.МетаданныеРесурсы);
|
||
Картинки.Добавить("РегистрыНакопления",,, БиблиотекаКартинок.МетаданныеРегистрыНакопления);
|
||
Картинки.Добавить("РегистрыБухгалтерии",,, БиблиотекаКартинок.МетаданныеРегистрыБухгалтерии);
|
||
Картинки.Добавить("РегистрыРасчета",,, БиблиотекаКартинок.МетаданныеРегистрыРасчета);
|
||
Картинки.Добавить("Перерасчеты",,, БиблиотекаКартинок.МетаданныеПерерасчеты);
|
||
Картинки.Добавить("БизнесПроцессы",,, БиблиотекаКартинок.МетаданныеБизнесПроцессы);
|
||
Картинки.Добавить("Задачи",,, БиблиотекаКартинок.МетаданныеЗадачи);
|
||
Картинки.Добавить("РеквизитыАдресации",,, БиблиотекаКартинок.МетаданныеРеквизитыАдресации);
|
||
Картинки.Добавить("ВнешниеИсточникиДанных",,, БиблиотекаКартинок.МетаданныеВнешниеИсточникиДанных);
|
||
Картинки.Добавить("Таблицы",,, БиблиотекаКартинок.МетаданныеВнешниеИсточникиТаблицы);
|
||
Картинки.Добавить("Поля",,, БиблиотекаКартинок.МетаданныеРеквизиты);
|
||
Картинки.Добавить("Кубы",,, БиблиотекаКартинок.МетаданныеВнешниеИсточникиКубы);
|
||
Картинки.Добавить("ТаблицыИзмерений",,, БиблиотекаКартинок.МетаданныеВнешниеИсточникиТаблицыИзмерений);
|
||
Картинки.Добавить("Функции",,, БиблиотекаКартинок.МетаданныеВнешниеИсточникиФункции);
|
||
|
||
Возврат Картинки;
|
||
|
||
КонецФункции
|
||
|
||
Функция ИндексКартинки(Контекст, Имя)
|
||
|
||
ЭлементСписка = Контекст.Картинки.НайтиПоЗначению(Имя);
|
||
Если ЭлементСписка = Неопределено Тогда
|
||
Возврат 0;
|
||
КонецЕсли;
|
||
|
||
Возврат Контекст.Картинки.Индекс(ЭлементСписка);
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Иначе
|
||
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
|
||
#КонецЕсли |