Skip to content
14 changes: 13 additions & 1 deletion tests/smoke/smoke.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -789,8 +789,20 @@
"Тесты_ПроверкаПраваИнтерактивногоУдаленияПомеченных": {

"Используется": false,
"ПроверятьОсновныеРоли": true
"ПроверятьОсновныеРоли": true,
"ПрефиксОбъекта": "",
"ОтборПоПрефиксуОбъекта": false,
"ПрефиксРоли": "",
"ОтборПоПрефиксуРоли": false,
"ИсключенияИзПроверок":{

"Справочники":[
"Справочник1"
],
"Документы":[
"Документ1"
]
}
},

"Тесты_ПроверкаПравНаПредопределенныеДанныеОбъектов": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@
Перем СтроковыеУтилиты;
&НаКлиенте
Перем ПроверятьОсновныеРоли;
&НаКлиенте
Перем ОтборПоПрефиксуОбъекта;
&НаКлиенте
Перем ПрефиксОбъекта;
&НаКлиенте
Перем ОтборПоПрефиксуРоли;
&НаКлиенте
Перем ПрефиксРоли;
&НаКлиенте
Перем ИсключенияИзПроверок;

#КонецОбласти

Expand All @@ -33,7 +43,7 @@
Возврат;
КонецЕсли;

ОбъектыМетаданных = ОбъектыМетаданных();
ОбъектыМетаданных = ОбъектыМетаданных(ОтборПоПрефиксуОбъекта, ПрефиксОбъекта, ИсключенияИзПроверок);

Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
Если ОбъектМетаданных.Значение.Количество() = 0 Тогда
Expand Down Expand Up @@ -61,7 +71,13 @@
Возврат;
КонецЕсли;

ПроверятьОсновныеРоли = Истина;
ПрефиксОбъекта = "";
ОтборПоПрефиксуОбъекта = Ложь;
ПрефиксРоли = "";
ОтборПоПрефиксуРоли = Ложь;
ИсключенияИзПроверок = Новый Структура;
ПроверятьОсновныеРоли = Истина;

ПлагинНастроек = КонтекстЯдра.Плагин("Настройки");
Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки);
Настройки = Объект.Настройки;
Expand All @@ -75,6 +91,26 @@
ПроверятьОсновныеРоли = Настройки.ПроверятьОсновныеРоли;
КонецЕсли;

Если Настройки.Свойство("ПрефиксОбъекта") Тогда
ПрефиксОбъекта = ВРег(Настройки.ПрефиксОбъекта);
КонецЕсли;

Если Настройки.Свойство("ОтборПоПрефиксуОбъекта") Тогда
ОтборПоПрефиксуОбъекта = Настройки.ОтборПоПрефиксуОбъекта;
КонецЕсли;

Если Настройки.Свойство("ПрефиксРоли") Тогда
ПрефиксРоли = ВРег(Настройки.ПрефиксРоли);
КонецЕсли;

Если Настройки.Свойство("ОтборПоПрефиксуРоли") Тогда
ОтборПоПрефиксуРоли = Настройки.ОтборПоПрефиксуРоли;
КонецЕсли;

Если Настройки.Свойство("ИсключенияИзПроверок") Тогда
ИсключенияИзПроверок = Настройки.ИсключенияИзПроверок;
КонецЕсли;

КонецПроцедуры

#КонецОбласти
Expand All @@ -84,14 +120,14 @@
&НаКлиенте
Процедура ТестДолжен_ПроверитьЧтоНетПраваНаИнтерактивноеУдалениеПомеченных(ПолноеИмяМетаданных) Экспорт

Результат = ПроверитьЧтоНетПраваНаИнтерактивноеУдалениеПомеченных(ПолноеИмяМетаданных, ПроверятьОсновныеРоли);
Результат = ПроверитьЧтоНетПраваНаИнтерактивноеУдалениеПомеченных(ПолноеИмяМетаданных, ОтборПоПрефиксуРоли, ПрефиксРоли, ПроверятьОсновныеРоли);
ШаблонСообщения = НСтр("ru = 'Есть право на интерактивное удаление помеченных объектов:%1'");
Утверждения.Проверить(Результат = "", СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Результат));

КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьЧтоНетПраваНаИнтерактивноеУдалениеПомеченных(ПолноеИмяМетаданных, ПроверятьОсновныеРоли)
Функция ПроверитьЧтоНетПраваНаИнтерактивноеУдалениеПомеченных(ПолноеИмяМетаданных, ОтборПоПрефиксуРоли, ПрефиксРоли, ПроверятьОсновныеРоли)

ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных);
ЕстьПраво = Ложь;
Expand All @@ -100,7 +136,10 @@
Для Каждого Роль Из Метаданные.Роли Цикл
Если Не ПроверятьОсновныеРоли И Метаданные.ОсновныеРоли.Содержит(Роль) Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Если ОтборПоПрефиксуРоли И Не СтрНачинаетсяС(ВРег(Роль.Имя), ВРег(ПрефиксРоли)) Тогда
Продолжить;
КонецЕсли;
ЕстьПраво = ПравоДоступа("ИнтерактивноеУдалениеПомеченных", ОбъектМетаданных, Роль);
Если ЕстьПраво Тогда
Результат = Результат + Символы.ПС + Роль.Имя;
Expand All @@ -116,8 +155,10 @@
#Область СлужебныеПроцедурыИФункции

&НаСервереБезКонтекста
Функция ОбъектыМетаданных()
Функция ОбъектыМетаданных(ОтборПоПрефиксуОбъекта, ПрефиксОбъекта, ИсключенияИзПроверок)

ЛокальныйКонтекстЯдра = ВнешниеОбработки.Создать("xddTestRunner");

СтроковыеУтилиты = СтроковыеУтилиты();
Пояснение = НСтр("ru = 'Проверка права интерактивного удаления помеченных'");

Expand All @@ -133,14 +174,26 @@

Для Каждого Элемент Из ОбъектыМетаданных Цикл
Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл
ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектМетаданных.ПолноеИмя(), Пояснение);
ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя();
Если ОтборПоПрефиксуОбъекта И Не СтрНачинаетсяС(ВРег(ОбъектМетаданных.Имя), ВРег(ПрефиксОбъекта)) Тогда
Продолжить;
КонецЕсли;
Если ИсключенияИзПроверок.Свойство(Элемент.Ключ)
И ТипЗнч(ИсключенияИзПроверок[Элемент.Ключ]) = Тип("Массив")
И ЛокальныйКонтекстЯдра.ЕстьВИсключаемойКоллекции(ОбъектМетаданных.Имя, ИсключенияИзПроверок[Элемент.Ключ]) Тогда
Продолжить;
КонецЕсли;
//
ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ПолноеИмяОбъекта, Пояснение);
СтруктураЭлемента = Новый Структура;
СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста);
СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя());
СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмяОбъекта);
ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураЭлемента);
КонецЦикла;
КонецЦикла;

ЛокальныйКонтекстЯдра = Неопределено;

Возврат ОбъектыМетаданных;

КонецФункции
Expand Down Expand Up @@ -185,4 +238,4 @@

КонецФункции

#КонецОбласти
#КонецОбласти