Skip to content

Commit

Permalink
Дописал возможность проверить применимость расширения перед установкой.
Browse files Browse the repository at this point in the history
  • Loading branch information
Segate-ekb committed Jun 21, 2024
1 parent 6d51aa1 commit b8b2a78
Showing 1 changed file with 43 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,18 @@
ПараметрыКоманднойСтроки);
ИспользоватьОсновныеРолиДляВсехПользователей = ЗначениеПараметраБулево("ИспользоватьОсновныеРолиДляВсехПользователей",
ПараметрыКоманднойСтроки, Истина);
ПроверитьПрименимость = ЗначениеПараметраБулево("ПроверитьПрименимость", ПараметрыКоманднойСтроки, Ложь);
ЗагружатьРасширениеПриНаличииПроблемПрименимости = ЗначениеПараметраБулево("ЗагружатьРасширениеПриНаличииПроблемПрименимости", ПараметрыКоманднойСтроки, Ложь);

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

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

Попытка

ЗагрузитьРасширения(ПутьРасширения, ИмяРасширения, Перезаписывать,
ПараметрыРасширения,
ЗавершитьРаботуСистемы, ОтключитьЛогикуНачалаРаботыСистемы);
Expand Down Expand Up @@ -108,6 +113,8 @@
|Если параметр Перезаписывать указан, если соответствующие расширение будет переустановлено.
| Если параметр Перезаписывать не указан, будет выдана ошибка, если расширение с таким именем уже установлено!.
|Если указано ЗавершитьРаботуСистемы=Ложь, работа 1С:Предприятия не будет завершена.
|Если параметр ПроверитьПрименимость указан, перед загрузкой расширения будет выполнена проверка на наличие проблем применимости расширения.
| Если, несмотря на наличие проблем применимости, нужно загрузить расширение - необходимо указать параметр ЗагружатьРасширениеПриНаличииПроблемПрименимости
|
|По умолчанию простой режим запуска Путь=Путь загружает расширение из файла, отключая безопасный режим и защиту от опасных действий.
|Для платформы 8.3.15 и выше по умолчанию расширение загружается с использованим основных ролей расширения для всех пользователей.
Expand Down Expand Up @@ -199,6 +206,9 @@

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

ПроверитьПрименимость = ПараметрыРасширения.ПроверитьПрименимость;
ЗагружатьРасширениеПриНаличииПроблемПрименимости = ПараметрыРасширения.ЗагружатьРасширениеПриНаличииПроблемПрименимости;

Расширение = РасширенияКонфигурации.Создать();
Расширение.БезопасныйРежим = ПараметрыРасширения.БезопасныйРежим;
Expand All @@ -208,7 +218,17 @@
Расширение.ИспользоватьОсновныеРолиДляВсехПользователей =
ПараметрыРасширения.ИспользоватьОсновныеРолиДляВсехПользователей;
КонецЕсли;


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

Попытка
Расширение.Записать(ДвоичныеДанныеРасширения);
Исключение
Expand Down Expand Up @@ -331,6 +351,26 @@

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

&НаСервере
Процедура ВывестиДанныеОПроблемахПрименимости(МассивПроблемПрименимости, ИмяНовогоРасширения)
СтрокаОшибокПрименимости = "";
Шаблон = "В расширении <%1> обнаружена проблема с важностью <%2>:
|%3";

Для Каждого Проблема Из МассивПроблемПрименимости Цикл
СтрокаОшибокПрименимости = СтрокаОшибокПрименимости+Символы.ПС+СтрШаблон(Шаблон,
?(ЗначениеЗаполнено(Проблема.Расширение.Имя), Проблема.Расширение.Имя, ИмяНовогоРасширения),
Строка(Проблема.Важность),
Проблема.Описание);
КонецЦикла;

Если НЕ СтрокаОшибокПрименимости = "" Тогда
ЛогСервер("При проверке применимости расширения обнаружены следующие проблемы:
|
|" + СтрокаОшибокПрименимости, "Информация");
КонецЕсли;
КонецПроцедуры

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

#Область БиблиотекаЗапускаВанессаРаннер
Expand Down

0 comments on commit b8b2a78

Please sign in to comment.