mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 13:14:11 +00:00
161 lines
13 KiB
Plaintext
161 lines
13 KiB
Plaintext
//ирПортативный Перем ирПортативный Экспорт;
|
||
//ирПортативный Перем ирОбщий Экспорт;
|
||
//ирПортативный Перем ирСервер Экспорт;
|
||
//ирПортативный Перем ирКэш Экспорт;
|
||
//ирПортативный Перем ирПривилегированный Экспорт;
|
||
|
||
Перем РежимОтладки Экспорт;
|
||
Перем ТаблицаПрав Экспорт;
|
||
Перем Роли Экспорт;
|
||
|
||
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
|
||
|
||
#Если _ Тогда
|
||
СхемаКомпоновки = Новый СхемаКомпоновкиДанных;
|
||
КонечнаяНастройка = Новый НастройкиКомпоновкиДанных;
|
||
ВнешниеНаборыДанных = Новый Структура;
|
||
ДокументРезультат = Новый ТабличныйДокумент;
|
||
#КонецЕсли
|
||
СтандартнаяОбработка = Ложь;
|
||
ПрофилиГруппДоступа = Новый ТаблицаЗначений;
|
||
ПрофилиГруппДоступа.Колонки.Добавить("РольИмя", Новый ОписаниеТипов("Строка"));
|
||
ПрофилиГруппДоступа.Колонки.Добавить("ПрофильГруппДоступа", Новый ОписаниеТипов("Строка"));
|
||
ПрофилиГруппДоступа.Колонки.Добавить("КоличествоРолей", Новый ОписаниеТипов("Число"));
|
||
Если ирКэш.НомерВерсииБСПЛкс() >= 200 Тогда
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"
|
||
|ВЫБРАТЬ
|
||
| ПрофилиГруппДоступаРоли.Ссылка КАК ПрофильГруппДоступа,
|
||
| Профили.КоличествоРолей КАК КоличествоРолей,
|
||
| ПрофилиГруппДоступаРоли.Роль.Имя КАК РольИмя
|
||
|ИЗ
|
||
| Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиГруппДоступаРоли
|
||
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|
||
| ПрофилиГруппДоступа_РолиТ.Ссылка КАК Ссылка,
|
||
| КОЛИЧЕСТВО(ПрофилиГруппДоступа_РолиТ.Роль) КАК КоличествоРолей
|
||
| ИЗ
|
||
| Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиГруппДоступа_РолиТ
|
||
|
|
||
| СГРУППИРОВАТЬ ПО
|
||
| ПрофилиГруппДоступа_РолиТ.Ссылка) КАК Профили
|
||
| ПО Профили.Ссылка = ПрофилиГруппДоступаРоли.Ссылка
|
||
|";
|
||
ПрофилиГруппДоступа = Запрос.Выполнить().Выгрузить();
|
||
КонецЕсли;
|
||
РолиПользователей = Новый ТаблицаЗначений;
|
||
РолиПользователей.Колонки.Добавить("Роль", Новый ОписаниеТипов("Строка"));
|
||
РолиПользователей.Колонки.Добавить("Пользователь", Новый ОписаниеТипов("Строка"));
|
||
Если ПравоДоступа("Администрирование", Метаданные) Тогда
|
||
ДоступныеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
|
||
Иначе
|
||
ДоступныеПользователи = Новый Массив;
|
||
ДоступныеПользователи.Добавить(ПользователиИнформационнойБазы.ТекущийПользователь());
|
||
КонецЕсли;
|
||
Для Каждого ПользовательИБ Из ДоступныеПользователи Цикл
|
||
#Если Сервер И Не Сервер Тогда
|
||
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
|
||
#КонецЕсли
|
||
Для Каждого РольЦикл Из ПользовательИБ.Роли Цикл
|
||
СтрокаРоли = РолиПользователей.Добавить();
|
||
СтрокаРоли.Роль = РольЦикл.Имя;
|
||
СтрокаРоли.Пользователь = ПользовательИБ.Имя;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
ТаблицаРоли = Новый ТаблицаЗначений;
|
||
ТаблицаРоли.Колонки.Добавить("Роль", Новый ОписаниеТипов("Строка"));
|
||
ТаблицаРоли.Колонки.Добавить("УстанавливатьПраваДляНовыхОбъектов");
|
||
ТаблицаРоли.Колонки.Добавить("НезависимыеПраваПодчиненныхОбъектов");
|
||
ТаблицаРоли.Колонки.Добавить("УстанавливатьПраваДляРеквизитовИТабличныхЧастейПоУмолчанию");
|
||
Если ИзвлечьСвойстваРолей Тогда
|
||
мПлатформа = ирКэш.Получить();
|
||
#Если Сервер И Не Сервер Тогда
|
||
мПлатформа = Обработки.ирПлатформа.Создать();
|
||
#КонецЕсли
|
||
Для Каждого МетаРоль Из Роли Цикл
|
||
ФайлРоли = Новый Файл("" + мПлатформа.СтруктураПодкаталоговФайловогоКэша.КэшРолей.ПолноеИмя + "\Роль." + МетаРоль.Имя + ".Права.xml");
|
||
Если Не ФайлРоли.Существует() Тогда
|
||
Сообщить("В кэше ролей не обнаружен файл роли """ + МетаРоль.Имя + """. Для извлечения свойств этой роли необходимо обновить кэш прав.");
|
||
Продолжить;
|
||
КонецЕсли;
|
||
СтрокаРоли = ТаблицаРоли.Добавить();
|
||
СтрокаРоли.Роль = МетаРоль.Имя;
|
||
ЧтениеXML = Новый ЧтениеXML;
|
||
ЧтениеXML.ОткрытьФайл(ФайлРоли.ПолноеИмя);
|
||
ЧтениеXML.Прочитать();
|
||
Для Счетчик = 1 По 3 Цикл
|
||
ЧтениеXML.Прочитать();
|
||
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
|
||
Если ЧтениеXML.ЛокальноеИмя = "setForNewObjects" Тогда
|
||
ЧтениеXML.Прочитать();
|
||
СтрокаРоли.УстанавливатьПраваДляНовыхОбъектов = Булево(ЧтениеXML.Значение);
|
||
ИначеЕсли ЧтениеXML.ЛокальноеИмя = "setForAttributesByDefault" Тогда
|
||
ЧтениеXML.Прочитать();
|
||
СтрокаРоли.НезависимыеПраваПодчиненныхОбъектов = Булево(ЧтениеXML.Значение);
|
||
ИначеЕсли ЧтениеXML.ЛокальноеИмя = "independentRightsOfChildObjects" Тогда
|
||
ЧтениеXML.Прочитать();
|
||
СтрокаРоли.УстанавливатьПраваДляРеквизитовИТабличныхЧастейПоУмолчанию = Булево(ЧтениеXML.Значение);
|
||
КонецЕсли;
|
||
ЧтениеXML.Прочитать();
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Если ВычислятьФункциональныеОпции Тогда
|
||
ФункциональныеОпции.Очистить();
|
||
Для Каждого ФункциональнаяОпция Из Метаданные.ФункциональныеОпции Цикл
|
||
Попытка
|
||
ЗначениеОпции = ПолучитьФункциональнуюОпцию(ФункциональнаяОпция.Имя);
|
||
Исключение
|
||
// Опция с параметрами
|
||
Продолжить;
|
||
КонецПопытки;
|
||
СтрокаТаблицы = ФункциональныеОпции.Добавить();
|
||
СтрокаТаблицы.ФункциональнаяОпция = ФункциональнаяОпция.Имя;
|
||
СтрокаТаблицы.ФункциональнаяОпцияВключена = ЗначениеОпции;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
КонечнаяНастройка = КомпоновщикНастроек.ПолучитьНастройки();
|
||
Если ЗначениеЗаполнено(Пользователь) Тогда
|
||
ирОбщий.НайтиДобавитьЭлементОтбораКомпоновкиЛкс(КонечнаяНастройка, "Пользователь", Пользователь,,, Ложь);
|
||
КонецЕсли;
|
||
Если ЗначениеЗаполнено(ОбъектМетаданных) Тогда
|
||
ирОбщий.НайтиДобавитьЭлементОтбораКомпоновкиЛкс(КонечнаяНастройка, "ОбъектМетаданных", ОбъектМетаданных,,, Ложь);
|
||
КонецЕсли;
|
||
Если ЗначениеЗаполнено(Роль) Тогда
|
||
ирОбщий.НайтиДобавитьЭлементОтбораКомпоновкиЛкс(КонечнаяНастройка, "Роль", Роль,,, Ложь);
|
||
КонецЕсли;
|
||
ВнешниеНаборыДанных = Новый Структура;
|
||
ВнешниеНаборыДанных.Вставить("ПрофилиГруппДоступа", ПрофилиГруппДоступа);
|
||
ВнешниеНаборыДанных.Вставить("РолиПользователей", РолиПользователей);
|
||
ВнешниеНаборыДанных.Вставить("Роли", ТаблицаРоли);
|
||
ВнешниеНаборыДанных.Вставить("Таблица", ТаблицаПрав);
|
||
ВнешниеНаборыДанных.Вставить("ФункциональныеОпции", ФункциональныеОпции);
|
||
ВнешниеНаборыДанных.Вставить("ФункциональныеОпцииПолей", ФункциональныеОпцииПолей);
|
||
Если РежимОтладки = 2 Тогда
|
||
ирОбщий.ОтладитьЛкс(СхемаКомпоновкиДанных, , КонечнаяНастройка, ВнешниеНаборыДанных);
|
||
Возврат;
|
||
КонецЕсли;
|
||
ДокументРезультат.Очистить();
|
||
ирОбщий.СкомпоноватьВТабличныйДокументЛкс(СхемаКомпоновкиДанных, КонечнаяНастройка, ДокументРезультат, ВнешниеНаборыДанных, ДанныеРасшифровки);
|
||
|
||
КонецПроцедуры
|
||
|
||
//ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла);
|
||
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf";
|
||
//ирПортативный #Если Клиент Тогда
|
||
//ирПортативный Контейнер = Новый Структура();
|
||
//ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер);
|
||
//ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
|
||
//ирПортативный ирПортативный.Открыть();
|
||
//ирПортативный КонецЕсли;
|
||
//ирПортативный #Иначе
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
|
||
//ирПортативный #КонецЕсли
|
||
//ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий");
|
||
//ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш");
|
||
//ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер");
|
||
//ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");
|
||
|
||
РежимОтладки = 0; |