Skip to content

Commit

Permalink
Merge branch 'release/v1.9.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Dec 13, 2019
2 parents 44927b1 + adc5f0b commit 5c4092e
Show file tree
Hide file tree
Showing 12 changed files with 226 additions and 20 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ ConfigDumpInfo.xml
tools/oscript.cfg
src/oscript.cfg
.scannerwork/
allure-report/
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,12 @@

НеобходимоОжидание = Найти(ПараметрЗапуска, "ЗавершитьРаботуСистемы") > 0;
МожноЗавершатьРаботу = Ложь;
СтрокаНеудачиОбновления = Нрег("Не удалось выполнить обновление");
СтрокаНеудачиОбновления = Нрег(НСтр("ru='Не удалось выполнить обновлени';uk='Не вдалося виконати оновленн'"));

СтрокаНачальноеЗаполнение = НСтр("ru='начальное заполнение';uk='початкове заповнення'");
СтрокаОбновлениеВерсии = НСтр("ru='обновление версии';uk='оновлення версії'" );
СтрокаЧтоНового = НРег(НСтр("ru='Что нового в конфигурации';uk='Що нового в конфігурації'"));

ФормаОбновленияНайдена = Ложь;
ФормаНачальногоЗаполненияНайдена = Ложь;

Expand All @@ -54,14 +58,16 @@
Если ТипЗнч(Окн) = Тип("ОкноКлиентскогоПриложения") Тогда

Содержимое = Окн.ПолучитьСодержимое();
ЗаголовокНРег = НРег(Строка(Окн.Заголовок));

ОбновитьПрогресс = Ложь;
Если Найти(НРег(Строка(Окн.Заголовок)), "обновление версии") > 0 Тогда
Если Найти(ЗаголовокНРег, СтрокаОбновлениеВерсии) > 0 Тогда
ФормаОбновленияНайденаОдинРаз = Истина;
ФормаОбновленияНайдена = Истина;
ОбновитьПрогресс = Истина;

ИначеЕсли Найти(НРег(Строка(Окн.Заголовок)), "начальное заполнение") > 0 Тогда
ИначеЕсли Найти(ЗаголовокНРег, СтрокаНачальноеЗаполнение) > 0 Тогда

ФормаНачальногоЗаполненияНайденаОдинРаз = Истина;
ФормаНачальногоЗаполненияНайдена = Истина;
ОбновитьПрогресс = Истина;
Expand All @@ -74,14 +80,14 @@

КонецЕсли;

Если СчетчикОжиданияРезультатов > 0 И Найти(НРег(Строка(Окн.Заголовок)), "что нового в конфигурации")>0 Тогда
Если СчетчикОжиданияРезультатов > 0 И Найти(ЗаголовокНРег, СтрокаЧтоНового)>0 Тогда
СчетчикОжиданияРезультатов = МаксИтерацийОжиданияРезультатов + 1;
Сообщить(""+ТекущаяДата() + " - Удачное завершение обновления");
МожноЗавершатьРаботу = Истина;
Прервать;
КонецЕсли;

Если Найти(НРег(Строка(Окн.Заголовок)), СтрокаНеудачиОбновления)>0 Тогда
Если Найти(ЗаголовокНРег, СтрокаНеудачиОбновления)>0 Тогда
СчетчикОжиданияРезультатов = МаксИтерацийОжиданияРезультатов + 1;
МожноЗавершатьРаботу = Истина;

Expand Down Expand Up @@ -156,12 +162,13 @@

&НаКлиенте
Процедура ПроверитьЛегальностьОбновления() Экспорт

СтрокаЛегальност = НРег(НСтр("ru='легальност';uk='легальніст'"));

Окна = ПолучитьОкна();
Для каждого Окн Из Окна Цикл
Если ТипЗнч(Окн) = Тип("ОкноКлиентскогоПриложения") Тогда
Содержимое = Окн.ПолучитьСодержимое();
Если Найти(НРег(Строка(Окн.Заголовок)), "легальност") > 0 Тогда
Если Найти(НРег(Строка(Окн.Заголовок)), СтрокаЛегальност) > 0 Тогда
Попытка
Если ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда
Содержимое.Результат = Истина;
Expand Down
6 changes: 3 additions & 3 deletions examples/example.env.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,11 @@
},
"compileext":{
"inputPath":"./cfe/Доработки",
"outputPath":"Доработки"
"extensionName":"Доработки"
},
"decompileext": {
"inputPath": "Доработки",
"outputPath": "./cfe/Доработки"
"extensionName":"Доработки",
"outputPath":"./cfe/Доработки"
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# language: ru

Функционал: Выгрузка расширений конфигурации
Как разработчик
Я хочу иметь возможность выгрузить расширения конфигурации в файл
Чтобы выполнять коллективную разработку проекта 1С

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

Сценарий: Загрузка одного расширения из файла с обновлением БД
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os loadext --file Extension1.cfe --extension РасширениеНовое1 --updatedb --ibconnection /F./build/ib"
И Я показываю вывод команды
И Я очищаю параметры команды "oscript" в контексте
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os unloadext ./РасширениеНовое1.cfe РасширениеНовое1 --ibconnection /F./build/ib"
И Я показываю вывод команды
И Файл "./РасширениеНовое1.cfe" существует
Тогда Код возврата равен 0

Сценарий: Загрузка одного расширения из файла без обновления БД
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os loadext --file Extension1.cfe --extension РасширениеНовое1 --ibconnection /F./build/ib"
И Я показываю вывод команды
И Я очищаю параметры команды "oscript" в контексте
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os unloadext ./РасширениеНовое1.cfe РасширениеНовое1 --ibconnection /F./build/ib"
И Я показываю вывод команды
И Файл "./РасширениеНовое1.cfe" существует
Тогда Код возврата равен 0

# TODO Сценарий: Разборка нескольких расширений с явно заданной базой
10 changes: 10 additions & 0 deletions features/ОбновлениеКонфигурацииБД.feature
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,13 @@
И Я сообщаю вывод команды "oscript"
Тогда Вывод команды "oscript" содержит "Обновление конфигурации базы данных успешно завершено"
И Код возврата команды "oscript" равен 0

Сценарий: Обновление dev-базы ./build/ibservice на сервере в режиме реструктуризации -v2
Когда Я сохраняю каталог проекта в контекст
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os init-dev --src ./cf --nocacheuse --dev"
И Я очищаю параметры команды "oscript" в контексте

Тогда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os updatedb --ibconnection /F./build/ibservice --uccode test --v2"
И Я сообщаю вывод команды "oscript"
Тогда Вывод команды "oscript" содержит "Обновление конфигурации базы данных успешно завершено"
И Код возврата команды "oscript" равен 0
4 changes: 2 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@
Описание.Имя("vanessa-runner")
.Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта())
.ВерсияСреды("1.0.21")
.ЗависитОт("logos", "1.1.2")
.ЗависитОт("logos", "1.3.0")
.ЗависитОт("cmdline", "1.0.0")
.ЗависитОт("tempfiles", "0.2.2")
.ЗависитОт("asserts", "1.2.0")
.ЗависитОт("v8runner", "1.4.0")
.ЗависитОт("v8runner", "1.5.0")
.ЗависитОт("strings", "0.4.1")
.ЗависитОт("json", "1.1.0")
.ЗависитОт("1commands", "1.3.5")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Выполнение загрузки расширения из cfe-файла в базу данных
//
// Служебный модуль с набором методов работы с командами приложения
//
// Структура модуля реализована в соответствии с рекомендациями
// oscript-app-template (C) EvilBeaver
//
///////////////////////////////////////////////////////////////////////////////////////////////////

#Использовать logos
#Использовать v8runner

Перем Лог;
Перем МенеджерКонфигуратора;

///////////////////////////////////////////////////////////////////////////////////////////////////
// Прикладной интерфейс

Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ТекстОписания =
" Загрузка расширения из cfe-файла в конфигурацию.";

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды,
ТекстОписания);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--file", "Путь к cfe-файлу расширения, например: --file=./1Cv8.cfe");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-f",
"Краткая команда 'путь к cfe --file', пример: -f ./1Cv8.cfe");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--extension", "Имя расширения");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--updatedb", "Признак обновления расширения");

Парсер.ДобавитьКоманду(ОписаниеКоманды);

КонецПроцедуры // ЗарегистрироватьКоманду

// Выполняет логику команды
//
// Параметры:
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно)
//
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт

Попытка
Лог = ДополнительныеПараметры.Лог;
Исключение
Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
КонецПопытки;

ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"];

ПутьВходящий = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды, "-f", "--file"));

ВерсияПлатформы = ПараметрыКоманды["--v8version"];
СтрокаПодключения = ДанныеПодключения.СтрокаПодключения;

МенеджерКонфигуратора = Новый МенеджерКонфигуратора;

Попытка
МенеджерКонфигуратора.Инициализация(ДанныеПодключения.СтрокаПодключения,
ДанныеПодключения.Пользователь, ДанныеПодключения.Пароль,
ВерсияПлатформы, ПараметрыКоманды["--uccode"], ДанныеПодключения.КодЯзыка);

МенеджерКонфигуратора.ЗагрузитьФайлРасширения(ПутьВходящий, ПараметрыКоманды["--extension"],
ПараметрыКоманды["--updatedb"]);
Исключение
МенеджерКонфигуратора.Деструктор();
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;

МенеджерКонфигуратора.Деструктор();

Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
КонецФункции // ВыполнитьКоманду
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды,
ТекстОписания);
Парсер.ДобавитьКоманду(ОписаниеКоманды);

Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--v1",
"Поддержка режима реструктуризации -v1 на сервере");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--v2",
"Поддержка режима реструктуризации -v2 на сервере");

КонецПроцедуры // ЗарегистрироватьКоманду

Expand All @@ -45,8 +50,25 @@
ДанныеПодключения.КодЯзыка
);

РежимРеструктуризации_В1 = ПараметрыКоманды["--v1"];
РежимРеструктуризации_В2 = ПараметрыКоманды["--v2"];
РеструктуризацияНаСервере = РежимРеструктуризации_В1 Или РежимРеструктуризации_В2;

Попытка
МенеджерКонфигуратора.ОбновитьКонфигурациюБазыДанных();
Если РеструктуризацияНаСервере Тогда
РежимРеструктуризации = Неопределено;
УправлениеКонфигуратором = Новый УправлениеКонфигуратором();
РежимыРеструктуризации = УправлениеКонфигуратором.РежимыРеструктуризации();

Если РежимРеструктуризации_В2 Тогда
РежимРеструктуризации = РежимыРеструктуризации.Второй;
ИначеЕсли РежимРеструктуризации_В1 Тогда
РежимРеструктуризации = РежимыРеструктуризации.Первый;
КонецЕсли;
МенеджерКонфигуратора.ОбновитьКонфигурациюБазыДанныхНаСервере(РежимРеструктуризации);
Иначе
МенеджерКонфигуратора.ОбновитьКонфигурациюБазыДанных();
КонецЕсли;
Исключение
МенеджерКонфигуратора.Деструктор();
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,12 +156,17 @@
Лог.Информация("Проверка проекта завершена за %1с", Окр(ТекущаяДата() - ДатаНачала));
МенеджерКонфигуратора.Деструктор();

РезультатТестирования = ОбработатьЛогОшибок(ДатаНачала, ЛогПроверкиИзКонфигуратора, ГруппироватьПоМетаданным, ИмяФайлаИсключенийОшибок);
Если РезультатТестирования.КоличествоУпало = 0 Тогда
ОшибокНет = Истина;
КонецЕсли;

Если СохранятьОтчетВФайл Тогда

Если НРег(СокрЛП(ЛогПроверкиИзКонфигуратора)) = "ошибок не обнаружено" Тогда
ЛогПроверкиИзКонфигуратора = "";
КонецЕсли;
РезультатТестирования = ОбработатьЛогОшибок(ДатаНачала, ЛогПроверкиИзКонфигуратора, ГруппироватьПоМетаданным,
ИмяФайлаИсключенийОшибок);

Если ЗначениеЗаполнено(ПутьОтчетаВФорматеAllure) Тогда

Лог.Информация("Генерация отчета Allure");
Expand Down
Loading

0 comments on commit 5c4092e

Please sign in to comment.