Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавлена возможность указания ИспользоватьОсновныеРолиДляВсехПользователей при загрузке расширений в режиме Предприятия #463

Merged
merged 5 commits into from
Mar 26, 2022
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@
ЗавершитьРаботуСистемы = ЗначениеПараметраБулево("ЗавершитьРаботуСистемы", ПараметрыКоманднойСтроки, Истина);
ОтключитьЛогикуНачалаРаботыСистемы = ЗначениеПараметраБулево("ОтключитьЛогикуНачалаРаботыСистемы",
ПараметрыКоманднойСтроки);
ИспользоватьОсновныеРолиДляВсехПользователей = ЗначениеПараметраБулево("ИспользоватьОсновныеРолиДляВсехПользователей",
ПараметрыКоманднойСтроки, Истина);

ПараметрыРасширения = Новый Структура;
ПараметрыРасширения.Вставить("БезопасныйРежим", БезопасныйРежимРасширения);
ПараметрыРасширения.Вставить("ЗащитаОтОпасныхДействий", ЗащитаОтОпасныхДействийРасширения);
ПараметрыРасширения.Вставить("ИспользоватьОсновныеРолиДляВсехПользователей",
ИспользоватьОсновныеРолиДляВсехПользователей);

Исключение
ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Expand All @@ -62,7 +70,7 @@
Попытка

ЗагрузитьРасширения(ПутьРасширения, ИмяРасширения, Перезаписывать,
БезопасныйРежимРасширения, ЗащитаОтОпасныхДействийРасширения,
ПараметрыРасширения,
ЗавершитьРаботуСистемы, ОтключитьЛогикуНачалаРаботыСистемы);

Исключение
Expand Down Expand Up @@ -91,7 +99,7 @@
Лог("
|Помощь:
|Формат параметров Путь=КаталогФайлов;Имя=ИмяРасширения;Перезаписывать;БезопасныйРежим;ЗащитаОтОпасныхДействий;ЗавершитьРаботуСистемы;
| или Путь=ПутьФайла;БезопасныйРежим=Истина;ЗащитаОтОпасныхДействий=Ложь;ЗавершитьРаботуСистемы;
| или Путь=ПутьФайла;БезопасныйРежим=Истина;ЗащитаОтОпасныхДействий=Ложь;ИспользоватьОсновныеРолиДляВсехПользователей=Ложь;ЗавершитьРаботуСистемы;
|
|Можно указать как путь каталога с несколькими расширениями, так и путь каталога с одним расширением.
|
Expand All @@ -102,6 +110,7 @@
|Если указано ЗавершитьРаботуСистемы=Ложь, работа 1С:Предприятия не будет завершена.
|
|По умолчанию простой режим запуска Путь=Путь загружает расширение из файла, отключая безопасный режим и защиту от опасных действий.
|Для платформы 8.3.15 и выше по умолчанию расширение загружается с использованим основных ролей расширения для всех пользователей.
|
|Пример запуска через vanessa-runner - vrunner run --command ""Путь=./МоеРасширение.cfe;ЗавершитьРаботуСистемы"" --execute $runnerRoot/epf/ЗагрузитьРасширениеВРежимеПредприятия.epf",

Expand All @@ -111,17 +120,16 @@

&НаКлиенте
Процедура ЗагрузитьРасширения(ПутьРасширения, Знач ИмяРасширения, Перезаписывать,
БезопасныйРежим, ЗащитаОтОпасныхДействий,
ПараметрыРасширения,
ЗавершитьРаботуСистемы, ОтключитьЛогикуНачалаРаботыСистемы)

ДопПараметры = Новый Структура;
ДопПараметры.Вставить("ПутьРасширения", ПутьРасширения);
ДопПараметры.Вставить("ИмяРасширения", ИмяРасширения);
ДопПараметры.Вставить("Перезаписывать", Перезаписывать);
ДопПараметры.Вставить("БезопасныйРежим", БезопасныйРежим);
ДопПараметры.Вставить("ЗащитаОтОпасныхДействий", ЗащитаОтОпасныхДействий);
ДопПараметры.Вставить("ЗавершитьРаботуСистемы", ЗавершитьРаботуСистемы);
ДопПараметры.Вставить("ОтключитьЛогикуНачалаРаботыСистемы", ОтключитьЛогикуНачалаРаботыСистемы);
ДопПараметры.Вставить("ПараметрыРасширения", ПараметрыРасширения);

Обработчик = Новый ОписаниеОповещения("ОбработкаПоискаРасширенийВКаталоге", ЭтаФорма, ДопПараметры);
НачатьПоискФайлов(Обработчик, ПутьРасширения, "*.cfe", Истина);
Expand All @@ -136,11 +144,10 @@
ПутьРасширения = ДопПараметры.ПутьРасширения;
ИмяРасширения = ДопПараметры.ИмяРасширения;
Перезаписывать = ДопПараметры.Перезаписывать;
БезопасныйРежим = ДопПараметры.БезопасныйРежим;
ЗащитаОтОпасныхДействий = ДопПараметры.ЗащитаОтОпасныхДействий;
ЗавершитьРаботуСистемы = ДопПараметры.ЗавершитьРаботуСистемы;
ОтключитьЛогикуНачалаРаботыСистемы = ДопПараметры.ОтключитьЛогикуНачалаРаботыСистемы;

ПараметрыРасширения = ДопПараметры.ПараметрыРасширения;

Если Не ЗначениеЗаполнено(НайденныеФайлы) Тогда
НайденныеФайлы = Новый Массив;
Файл = Новый Файл(ПутьРасширения);
Expand All @@ -160,8 +167,7 @@
КонецЕсли;

Попытка
УстановитьРасширение(ИмяРасширения, ДвоичныеДанные, Перезаписывать,
БезопасныйРежим, ЗащитаОтОпасныхДействий);
УстановитьРасширение(ИмяРасширения, ДвоичныеДанные, Перезаписывать, ПараметрыРасширения);
Исключение
ВызватьИсключение ПутьФайла + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Expand All @@ -186,16 +192,22 @@

&НаСервере
Процедура УстановитьРасширение(Имя, ДвоичныеДанныеРасширения, Перезаписывать,
БезопасныйРежим, ЗащитаОтОпасныхДействий, ПовторнаяУстановка = Ложь)
ПараметрыРасширения,
ПовторнаяУстановка = Ложь)

РасширенияДо = РасширенияКонфигурации.Получить();

ОписаниеЗащиты = Новый("ОписаниеЗащитыОтОпасныхДействий");
ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = ЗащитаОтОпасныхДействий;
ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = ПараметрыРасширения.ЗащитаОтОпасныхДействий;

Расширение = РасширенияКонфигурации.Создать();
Расширение.БезопасныйРежим = БезопасныйРежим;
Расширение.БезопасныйРежим = ПараметрыРасширения.БезопасныйРежим;
Расширение.ЗащитаОтОпасныхДействий = ОписаниеЗащиты;

Если Версия8315ИлиВыше() Тогда
Расширение.ИспользоватьОсновныеРолиДляВсехПользователей =
ПараметрыРасширения.ИспользоватьОсновныеРолиДляВсехПользователей;
КонецЕсли;

Попытка
Расширение.Записать(ДвоичныеДанныеРасширения);
Expand All @@ -212,8 +224,7 @@
|" + ОписаниеОшибки, "");

УдалитьРасширение(Имя);
УстановитьРасширение(Имя, ДвоичныеДанныеРасширения, Перезаписывать,
БезопасныйРежим, ЗащитаОтОпасныхДействий, Истина);
УстановитьРасширение(Имя, ДвоичныеДанныеРасширения, Перезаписывать, ПараметрыРасширения, Истина);

Возврат;

Expand All @@ -229,7 +240,7 @@

ВнутреннееИмя = НовыеЭлементы[0].Имя;

СообщитьОбУспешнойУстановке(БезопасныйРежим, ЗащитаОтОпасныхДействий, ВнутреннееИмя);
СообщитьОбУспешнойУстановке(ПараметрыРасширения, ВнутреннееИмя);

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

Expand Down Expand Up @@ -258,7 +269,7 @@
КонецФункции

&НаСервере
Процедура СообщитьОбУспешнойУстановке(Знач БезопасныйРежим, Знач ЗащитаОтОпасныхДействий, Знач Имя)
Процедура СообщитьОбУспешнойУстановке(Знач ПараметрыРасширения, Знач Имя)

Перем Расширение, Сообщение, Уровень;

Expand All @@ -267,20 +278,31 @@
Расширение = РасширениеПоИмени(Имя);
ЛогСервер(СтрШаблон("Установлено расширение %1, версия %2", Расширение.Имя , Расширение.Версия), Уровень);

Если БезопасныйРежим Тогда
Если ПараметрыРасширения.БезопасныйРежим Тогда
Сообщение = "Безопасный режим установлен!";
Иначе
Сообщение = "Безопасный режим снят!";
КонецЕсли;
ЛогСервер(Сообщение, Уровень);

Если ЗащитаОтОпасныхДействий Тогда
Если ПараметрыРасширения.ЗащитаОтОпасныхДействий Тогда
Сообщение = "Защита от опасных действий установлена!";
Иначе
Сообщение = "Защита от опасных действий снята!";
КонецЕсли;
ЛогСервер(Сообщение, Уровень);

Если Версия8315ИлиВыше() Тогда

Если ПараметрыРасширения.ИспользоватьОсновныеРолиДляВсехПользователей Тогда
Сообщение = "Установлен режим использования основных ролей расширения!";
Иначе
Сообщение = "Режим использования основных ролей расширения снят!";
КонецЕсли;
ЛогСервер(Сообщение, Уровень);

КонецЕсли;

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

&НаСервере
Expand Down Expand Up @@ -427,7 +449,7 @@

// портировано из Vanessa-ADD

&НаКлиенте
&НаКлиентеНаСервереБезКонтекста
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",",
Знач ПропускатьПустыеСтроки = Неопределено)

Expand Down Expand Up @@ -572,6 +594,32 @@

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

&НаКлиентеНаСервереБезКонтекста
Функция ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(Версия1, Версия2) Экспорт
Массив1 = РазложитьСтрокуВМассивПодстрок(Версия1, ".");
Массив2 = РазложитьСтрокуВМассивПодстрок(Версия2, ".");

Версия1БольшеИлиРавно = Истина;
Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл
Элем1 = Массив1.Получить(Ккк);
Элем2 = Массив2.Получить(Ккк);

Если Число(Элем2) > Число(Элем1) Тогда
Версия1БольшеИлиРавно = Ложь;
ИначеЕсли Число(Элем2) < Число(Элем1) Тогда
Прервать;
КонецЕсли;
КонецЦикла;

Возврат Версия1БольшеИлиРавно;
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция Версия8315ИлиВыше()
СистемнаяИнформация = Новый СистемнаяИнформация;
Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, "8.3.15.1");
КонецФункции

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

&НаСервере
Expand Down