Skip to content

Commit

Permalink
Merge branch 'release/0.12.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Nov 30, 2017
2 parents b55a7c4 + 77a8c88 commit 581474a
Show file tree
Hide file tree
Showing 3 changed files with 145 additions and 31 deletions.
6 changes: 3 additions & 3 deletions packagedef
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@

Описание.Имя("v8runner")
.Версия("0.11.2")
.Версия("0.12.0")
.ВерсияСреды("1.0.17")
.ЗависитОт("asserts")
.ЗависитОт("fs")
.ЗависитОт("logos")
.ЗависитОт("logos", "0.6.2")
.ЗависитОт("tempfiles")
.ЗависитОт("1testrunner")
.ЗависитОт("strings", "0.4.1")
.ЗависитОт("1commands")
.ЗависитОт("1commands", "1.3.0")
.ВключитьФайл("src")
.ВключитьФайл("tests")
.ВключитьФайл("lib.config")
168 changes: 141 additions & 27 deletions src/v8runner.os
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@

///////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
// УПРАВЛЕНИЕ ЗАПУСКОМ КОМАНД 1С:Предприятия 8
//

Expand All @@ -15,6 +14,7 @@
Перем мПутьКПлатформе1С;
Перем ЭтоWindows Экспорт;
Перем мВерсияПлатформы;
Перем мИсключениеПриОшибкеВыполненияКоманды;

Перем Лог;
Перем мИмяФайлаИнформации;
Expand Down Expand Up @@ -883,7 +883,41 @@

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

Процедура ВыполнитьКоманду(Знач Параметры) Экспорт
// Выгрузка внешней обработки или отчета в файл
//
// Параметры:
// ПутьККаталогуВыгрузки - Строка - Путь к каталогу, в который нужно выполнить выгрузку внешнего отчета или обработки
// ПутьКВнешнейОбработкеИлиОтчету - Строка - Путь к файлу внешнего отчета или обработки
// Формат - РежимВыгрузкиКонфигурации - Формат выгрузки. По умолчанию используется "Hierarchical"
//
Процедура ВыгрузитьВнешниеОтчетыИлиОбработкиВФайлы(Знач ПутьККаталогуВыгрузки,
Знач ПутьКВнешнейОбработкеИлиОтчету,
Знач Формат = "") Экспорт

Если НЕ ЗначениеЗаполнено(Формат) Тогда
Формат = РежимВыгрузкиКонфигурации.Иерархический;
КонецЕсли;

Файл = Новый Файл(ПутьККаталогуВыгрузки);
КаталогВыгрузки = Файл.ПолноеИмя;

ОбеспечитьКаталог(КаталогВыгрузки);

Файл = Новый Файл(ПутьКВнешнейОбработкеИлиОтчету);
ПутьКВнешнейОбработкеИлиОтчету = Файл.ПолноеИмя;

ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора();
ПараметрыЗапуска.Добавить("/DumpExternalDataProcessorOrReportToFiles");
ПараметрыЗапуска.Добавить(ОбернутьВКавычки(КаталогВыгрузки));
ПараметрыЗапуска.Добавить(ОбернутьВКавычки(ПутьКВнешнейОбработкеИлиОтчету));
ПараметрыЗапуска.Добавить("-Format");
ПараметрыЗапуска.Добавить(Формат);

ВыполнитьКоманду(ПараметрыЗапуска);

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

Функция ВыполнитьКоманду(Знач Параметры) Экспорт

ПроверитьВозможностьВыполненияКоманды();

Expand All @@ -893,14 +927,16 @@

УстановитьВывод(ПрочитатьФайлИнформации());

Если КодВозврата <> 0 Тогда
Если КодВозврата <> 0 и мИсключениеПриОшибкеВыполненияКоманды Тогда
Лог.Ошибка("Получен ненулевой код возврата "+КодВозврата+". Выполнение скрипта остановлено!");
ВызватьИсключение ВыводКоманды();
Иначе
Лог.Отладка("Код возврата равен 0");
КонецЕсли;

КонецПроцедуры
Возврат КодВозврата;

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

Функция ПолучитьПараметрыЗапуска() Экспорт
Возврат СтандартныеПараметрыЗапускаКонфигуратора();
Expand Down Expand Up @@ -1204,7 +1240,7 @@
// УстановитьПризнакОжиданияВыполненияПрограммы
//
// Параметры:
// НовыйПризнак - <Булево> - <описание параметра>
// НовыйПризнак - <Булево> - Новое значение признака
//
// Возвращаемое значение:
// <Булево> - прежнее значение признака
Expand All @@ -1214,10 +1250,35 @@
Ожидаем.Что(НовыйПризнак = Ложь или НовыйПризнак = Истина,
"Параметр признак ожидания выполнения программы 1С должен быть или Истина или Ложь, а это не так").ЭтоИстина();

СтарыйПризнак = мПризнакОжиданияВыполненияПрограммы;
мПризнакОжиданияВыполненияПрограммы = НовыйПризнак;

Возврат СтарыйПризнак;

КонецФункции // УстановитьРежимОжиданияВыполненияПрограммы() Экспорт

// ИсключениеПриОшибкеВыполненияКоманды
//
// Параметры:
// НовоеЗначение - <Булево> - Новое значение флага "ИсключениеПриОшибкеВыполненияКоманды"
// если не указано, то возвращается текущее значение
//
// Возвращаемое значение:
// <Булево> - значение признака
//
Функция ИсключениеПриОшибкеВыполненияКоманды(НовоеЗначение = Неопределено) Экспорт

Ожидаем.Что(НовоеЗначение = Ложь или НовоеЗначение = Истина или НовоеЗначение = Неопределено,
"Параметр ""Исключение при ошибке выполнения команды"" должен быть или Истина, Ложь или Неопределено, а это не так").ЭтоИстина();

Если НЕ НовоеЗначение = Неопределено Тогда
мИсключениеПриОшибкеВыполненияКоманды = НовоеЗначение;
КонецЕсли;

Возврат мИсключениеПриОшибкеВыполненияКоманды;

КонецФункции // ИсключениеПриОшибкеВыполненияКоманды() Экспорт

Функция СобратьВозможныеКаталогиУстановкиПлатформыWindows()

СИ = Новый СистемнаяИнформация;
Expand Down Expand Up @@ -1372,17 +1433,29 @@
Приложение = ОбернутьВКавычки(ПутьКПлатформе1С());
Лог.Отладка(Приложение + СтрокаДляЛога);

Если ЭтоWindows = Ложь Тогда
СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'";
Иначе
СтрокаЗапуска = Приложение + СтрокаЗапуска;
КонецЕсли;
Если мОбработчикОжиданияПроцессаGUI = Неопределено Тогда
ЗапуститьПриложение(СтрокаЗапуска, , мПризнакОжиданияВыполненияПрограммы, КодВозврата);
Команда = Новый Команда;

Команда.УстановитьКоманду(Приложение);
Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8);
Команда.ДобавитьЛогВыводаКоманды("oscript.lib.v8runner");
Команда.ДобавитьПараметры(Параметры);
Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь);
Команда.ПоказыватьВыводНемедленно(Ложь);
КодВозврата = Команда.Исполнить();

Иначе

Если ЭтоWindows = Ложь Тогда
СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'";
Иначе
СтрокаЗапуска = Приложение + СтрокаЗапуска;
КонецЕсли;

ЗапуститьПроцессGUI(СтрокаЗапуска, КодВозврата);
КонецЕсли;
Лог.Отладка("Получен код возврата %1", КодВозврата);

Возврат КодВозврата;

КонецФункции
Expand Down Expand Up @@ -1582,6 +1655,7 @@
мОчищатьФайлИнформации = Истина;
мФайлИнформацииВнешний = Ложь;
мПризнакОжиданияВыполненияПрограммы = Истина;
мИсключениеПриОшибкеВыполненияКоманды = Истина;

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

Expand All @@ -1597,26 +1671,61 @@
КонецФункции


Процедура ПолучитьИзмененияКонфигурацииБазыДанныхИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="") Экспорт

ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора();

ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+"""");
ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+"""");
// Метод устарел (используйте ЗагрузитьКонфигурациюИзХранилища())
// Выполняет загрузку конфигурации из хранилища конфигурации определенной версии, если задана, иначе получает последнюю версию.
//
// Параметры:
// СтрокаСоединения - Строка - Строка соединения с хранилищем конфигурации
// ПользовательХранилища - строка - Пользователь для подключения к хранилищю конфигурации
// ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации
// НомерВерсии - Число - Номер версии в истории в хранилище конфигурации, если 0 или меньше, то берется последняя версия.
//
Процедура ПолучитьИзмененияКонфигурацииБазыДанныхИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="", Знач НомерВерсииХранилища = 0) Экспорт

Если Не ПустаяСтрока(ПарольХранилища) Тогда
ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+"""");
КонецЕсли;
Сообщить("ВНИМАНИЕ: метод ""ПолучитьИзмененияКонфигурацииБазыДанныхИзХранилища()"" УСТАРЕЛ и скоро будет удален. Вместо него используйте метод ""ЗагрузитьКонфигурациюИзХранилища()""!"
, СтатусСообщения.Внимание);

ЗагрузитьКонфигурациюИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища, НомерВерсииХранилища);

ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg");
ПараметрыСвязиСБазой.Добавить("-force");
КонецПроцедуры

// Выполняет загрузку конфигурации из хранилища конфигурации определенной версии, если задана, иначе получает последнюю версию.
//
// Параметры:
// СтрокаСоединения - Строка - Строка соединения с хранилищем конфигурации
// ПользовательХранилища - строка - Пользователь для подключения к хранилищю конфигурации
// ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации
// НомерВерсии - Число - Номер версии в истории в хранилище конфигурации, если 0 или меньше, то берется последняя версия.
//
Процедура ЗагрузитьКонфигурациюИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="", Знач НомерВерсииХранилища = 0) Экспорт

ПараметрыСвязиСБазой = СформироватьПараметрыСвязиСБазойДляПолучениеВерсииКонфигурацииИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища, НомерВерсииХранилища);

ВыполнитьКоманду(ПараметрыСвязиСБазой);

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

Процедура ОбновитьКонфигурациюБазыДанныхИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища="") Экспорт
// Выполняет загрузку конфигурации из хранилища конфигурации определенной версии, при этом обновляет базу данных
// Это необходимо, например, при последующем создании файла поставки, без обновления файл не будет создан.
//
// Параметры:
// СтрокаСоединения - Строка - Строка соединения с хранилищем конфигурации
// ПользовательХранилища - строка - Пользователь для подключения к хранилищю конфигурации
// ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации
// НомерВерсии - Число - Номер версии в истории в хранилище конфигурации, если 0 или меньше, то берется последняя версия.
//
Процедура ОбновитьКонфигурациюБазыДанныхИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="", Знач НомерВерсииХранилища = 0) Экспорт

ПараметрыСвязиСБазой = СформироватьПараметрыСвязиСБазойДляПолучениеВерсииКонфигурацииИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища, НомерВерсииХранилища);

ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg");

ВыполнитьКоманду(ПараметрыСвязиСБазой);

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

Функция СформироватьПараметрыСвязиСБазойДляПолучениеВерсииКонфигурацииИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища, НомерВерсииХранилища)

ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора();

ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+"""");
Expand All @@ -1627,12 +1736,16 @@
КонецЕсли;

ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg");
// ВАЖНО!!!! Флаг <-v> должен быть обязательно после команды ConfigurationRepositoryUpdateCfg
// Если это нарушить то всегда получается последняя версия конфигурации
Если НомерВерсииХранилища > 0 Тогда
ПараметрыСвязиСБазой.Добавить("-v " + НомерВерсииХранилища);
КонецЕсли;
ПараметрыСвязиСБазой.Добавить("-force");

ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg");
Возврат ПараметрыСвязиСБазой;

ВыполнитьКоманду(ПараметрыСвязиСБазой);
КонецПроцедуры
КонецФункции

Функция ВариантОбработкиНесуществующихСсылок() Экспорт

Expand Down Expand Up @@ -1830,4 +1943,5 @@
// Инициализация

Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner");

Инициализация();
2 changes: 1 addition & 1 deletion tests/v8runner8310-tests.os
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@

Процедура ВыгрузитьКонфигурациюВФайлы(Знач Версия, Знач КаталогВыгрузки)

ПутьФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "0.9","1Cv8.cf");
ПутьФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", Версия, "1Cv8.cf");

УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ПутьФайлКонфигурации);

Expand Down

0 comments on commit 581474a

Please sign in to comment.