Skip to content

Commit

Permalink
если имя файла и имя расширения отличны, грузим верно
Browse files Browse the repository at this point in the history
- также нельзя было загрузить каталог с расширениями
- подробное представление ошибки выдавалось не всегда

vanessa-opensource#409
  • Loading branch information
artbear committed Mar 13, 2021
1 parent e6d1fb7 commit 3f66c69
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@
ПреобразоватьПараметрыКоторыеНачинаютсяСТочкиКНормальнымПутям(ПараметрыКоманднойСтроки);

ПутьРасширения = ЗначениеПараметра("Путь", ПараметрыКоманднойСтроки,
"Не задано имя расширения - формат Путь=НужныйПутьФайлаРасширения");
"Не задан путь расширения - формат Путь=НужныйПутьФайлаРасширения");

ИмяРасширения = ЗначениеПараметра("Имя", ПараметрыКоманднойСтроки,
"Не задано имя расширения - формат Имя=МоеИмя");
"Не задано имя расширения - формат Имя=МоеИмя", Ложь);

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

"Информация");

Expand Down Expand Up @@ -181,6 +184,8 @@
Процедура УстановитьРасширение(Имя, ДвоичныеДанныеРасширения, Перезаписывать,
БезопасныйРежим, ЗащитаОтОпасныхДействий, ПовторнаяУстановка = Ложь)

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

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

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

Если ПовторнаяУстановка Тогда
ВызватьИсключение;
Expand All @@ -210,7 +215,17 @@

КонецПопытки;

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

Если Не ЗначениеЗаполнено(НовыеЭлементы) Тогда
ЛогСервер("Не найдено новых установленных расширений после установки расширения");
Возврат;
КонецЕсли;

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

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

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

Expand Down Expand Up @@ -264,6 +279,20 @@

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

&НаСервере
Функция РазностьМассивов(Знач Массив, Знач МассивВычитания)

Результат = Новый Массив;
Для Каждого Элемент Из Массив Цикл
Если МассивВычитания.Найти(Элемент) = Неопределено Тогда
Результат.Добавить(Элемент);
КонецЕсли;
КонецЦикла;

Возврат Результат;

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

&НаСервере
Процедура ОбновитьПараметрыРаботыВерсийРасширений()

Expand Down Expand Up @@ -309,8 +338,9 @@
Возврат Результат;
КонецФункции

&НаСервере
// портировано из Vanessa-ADD

&НаСервере
Функция ПолучитьПутьКОбработкеСервер()

ОбъектНаСервере = ОбъектНаСервере();
Expand All @@ -327,8 +357,9 @@
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции

&НаКлиенте
// портировано из Vanessa-ADD

&НаКлиенте
Функция ПолучитьСтруктуруПараметров(Стр)
Результат = Новый Структура;

Expand Down Expand Up @@ -358,13 +389,16 @@
КонецФункции

&НаКлиенте
Функция ЗначениеПараметра(Знач ИмяПараметра, Знач ПараметрыКоманднойСтроки, Знач ТекстОшибки)
Функция ЗначениеПараметра(Знач ИмяПараметра, Знач ПараметрыКоманднойСтроки, Знач ТекстОшибки,
Знач ВыбрасыватьИсключение = Истина)

Результат = "";
Если Не ПараметрыКоманднойСтроки.Свойство(ИмяПараметра, Результат)
Или Не ЗначениеЗаполнено(Результат) Тогда

ВызватьИсключение ТекстОшибки;
Если ВыбрасыватьИсключение Тогда
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КонецЕсли;

Возврат Результат;
Expand All @@ -385,8 +419,9 @@

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

&НаКлиенте
// портировано из Vanessa-ADD

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

Expand Down Expand Up @@ -421,8 +456,9 @@

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

&НаКлиенте
// портировано из Vanessa-ADD

&НаКлиенте
Процедура ПреобразоватьПараметрыКоторыеНачинаютсяСТочкиКНормальнымПутям(СтруктураПараметров)
МассивКлючей = Новый Массив;

Expand Down Expand Up @@ -456,15 +492,8 @@

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

// Функция ДополнитьСлешВПуть
//
// Параметры: ИмяКаталога
//
// Описание:
// Функция дополняет и возвращает слеш в путь в конец строки, если он отсутствует
//
// портировано из Vanessa-ADD
//

&НаКлиенте
Функция ДополнитьСлешВПуть(Знач Каталог)
разделитель = ПолучитьРазделительПути();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@
И Я показываю вывод команды

Тогда Вывод команды "oscript" содержит
| ИНФОРМАЦИЯ - Выполняю команду 1С:Предприятие |
| ИНФОРМАЦИЯ - Выполняю команду/действие в режиме 1С:Предприятие |
| Информация: Установлено расширение Расширение1, версия |
| Информация: Безопасный режим снят! |
| Информация: Защита от опасных действий снята! |
| ИНФОРМАЦИЯ - Работа 1С:Предприятие завершена |
| ИНФОРМАЦИЯ - Выполнение команды/действия в режиме 1С:Предприятие завершено |
Тогда Вывод команды "oscript" не содержит
| Ошибка: Неудача при обработке параметров запуска |
| Ошибка: Неудача при выполнении основного кода |
Expand Down Expand Up @@ -67,12 +67,12 @@
И Я показываю вывод команды

Тогда Вывод команды "oscript" содержит
| ИНФОРМАЦИЯ - Выполняю команду 1С:Предприятие |
| ИНФОРМАЦИЯ - Выполняю команду/действие в режиме 1С:Предприятие |
| Информация: Расширение не удалось установить. Пытаюсь удалить существующее расширение по имени и повторно установить |
| Информация: Установлено расширение Расширение1, версия |
| Информация: Безопасный режим снят! |
| Информация: Защита от опасных действий снята! |
| ИНФОРМАЦИЯ - Работа 1С:Предприятие завершена |
| ИНФОРМАЦИЯ - Выполнение команды/действия в режиме 1С:Предприятие завершено |
Тогда Вывод команды "oscript" не содержит
| Ошибка: Неудача при обработке параметров запуска |
| Ошибка: Неудача при выполнении основного кода |
Expand Down Expand Up @@ -101,12 +101,46 @@
И Я показываю вывод команды

Тогда Вывод команды "oscript" содержит
| ИНФОРМАЦИЯ - Выполняю команду 1С:Предприятие |
| ИНФОРМАЦИЯ - Выполняю команду/действие в режиме 1С:Предприятие |
| Ошибка: Неудача при выполнении основного кода |
| Файл не обнаружен 'Несуществующее.cfe' |
| ИНФОРМАЦИЯ - Работа 1С:Предприятие завершена |
| ИНФОРМАЦИЯ - Выполнение команды/действия в режиме 1С:Предприятие завершено |
Тогда Вывод команды "oscript" не содержит
| Информация: Установлено расширение |
| Информация: Безопасный режим снят! |
| Информация: Защита от опасных действий снята! |
И Код возврата команды "oscript" равен 0

Сценарий: Загрузка расширений из каталога

Дано я подготовил репозиторий и рабочий каталог проекта
И я подготовил рабочую базу проекта "./build/ib" по умолчанию
Дано Я копирую файл "Extension1.cfe" из каталога "tests/fixtures" проекта в рабочий каталог
И Я очищаю параметры команды "oscript" в контексте

Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os compileepf $runnerRoot\epfагрузитьРасширениеВРежимеПредприятия ЗагрузитьРасширениеВРежимеПредприятия.epf --nocacheuse --language ru"
И Я показываю вывод команды
И Код возврата команды "oscript" равен 0
И Я очищаю параметры команды "oscript" в контексте

Когда Я добавляю параметр "<КаталогПроекта>/src/main.os run" для команды "oscript"
И Я добавляю параметр "--command" для команды "oscript"
И Я добавляю параметр "Путь=.;Перезаписывать" для команды "oscript"
# И Я добавляю параметр "--execute $runnerRoot\epf\ЗагрузитьРасширениеВРежимеПредприятия.epf" для команды "oscript"
И Я добавляю параметр "--execute ЗагрузитьРасширениеВРежимеПредприятия.epf" для команды "oscript"
И Я добавляю параметр " --ibconnection /Fbuild/ib" для команды "oscript"
И Я добавляю параметр "--language ru" для команды "oscript"
Когда Я выполняю команду "oscript"

И Я показываю вывод команды

Тогда Вывод команды "oscript" содержит
| ИНФОРМАЦИЯ - Выполняю команду/действие в режиме 1С:Предприятие |
| Информация: Установлено расширение Расширение1, версия |
| Информация: Безопасный режим снят! |
| Информация: Защита от опасных действий снята! |
| ИНФОРМАЦИЯ - Выполнение команды/действия в режиме 1С:Предприятие завершено |
Тогда Вывод команды "oscript" не содержит
| Ошибка: Неудача при обработке параметров запуска |
| Ошибка: Неудача при выполнении основного кода |
И Код возврата команды "oscript" равен 0

0 comments on commit 3f66c69

Please sign in to comment.