From b906e135110858f25f2596955f579e168be77005 Mon Sep 17 00:00:00 2001 From: skirdinsa <56070000+skirdinsa@users.noreply.github.com> Date: Tue, 20 Jun 2023 22:14:52 +0300 Subject: [PATCH 01/59] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit поправил пример с синтаксис проверкой расширений --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 36c1cb40..fe6bb056 100644 --- a/README.md +++ b/README.md @@ -498,9 +498,9 @@ call vrunner <параметры запуска> "-Server", "-ExternalConnection", "-ThickClientOrdinaryApplication" + // "-Extension" : "ИмяРасширения", + // "-AllExtensions" : true ] - // "-Extension" : "ИмяРасширения", - // "-AllExtensions" : true } } ``` From 893df557919fa7b905958fd11d838abf301ccf9e Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 1 Oct 2023 17:31:49 +0200 Subject: [PATCH 02/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=84=D0=BB=D0=B0=D0=B3=20--ibcmd=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20ini?= =?UTF-8?q?t-dev?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\266\320\265\320\275\320\270\321\217.os" | 295 ++++++++++-------- ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 158 ++++++++++ ...20\260\321\202\320\276\321\200\320\260.os" | 57 +++- 3 files changed, 376 insertions(+), 134 deletions(-) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index ff39f101..f61032bb 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -16,6 +16,7 @@ // Параметры команды Перем ПутьКФайлуКонфигурации; +Перем ИспользоватьIbcmd; // Флаг использования утилиты ibcmd /////////////////////////////////////////////////////////////////////////////////////////////////// // Прикладной интерфейс @@ -50,6 +51,8 @@ "Поддержка режима реструктуризации -v1 на сервере"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--v2", "Поддержка режима реструктуризации -v2 на сервере"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -81,6 +84,8 @@ ПутьКФайлуКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--cf"]); + ИспользоватьIbcmd = ПараметрыКоманды["--ibcmd"]; + ИнициализироватьБазуДанных(РежимыРеструктуризации, ПараметрыКоманды["--src"], ПараметрыКоманды["--dt"], ДанныеПодключения, ПараметрыКоманды["--uccode"], ПараметрыКоманды["--v8version"], ПараметрыКоманды["--dev"], @@ -105,198 +110,222 @@ КодЯзыка = ДанныеПодключения.КодЯзыка; КодЯзыкаСеанса = ДанныеПодключения.КодЯзыкаСеанса; - СтрокаПодключенияХранилище = ПараметрыХранилища.СтрокаПодключения; - ПользовательХранилища = ПараметрыХранилища.Пользователь; - ПарольХранилища = ПараметрыХранилища.Пароль; - ВерсияХранилища = ПараметрыХранилища.Версия; - РежимОбновленияХранилища = ПараметрыХранилища.РежимОбновления; - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); - Если ПустаяСтрока(СтрокаПодключения) Тогда - КаталогБазы = ОбъединитьПути(КорневойПутьПроекта, ?(РежимРазработчика = Истина, "./build/ibservice", "./build/ib")); СтрокаПодключения = "/F""" + КаталогБазы + """"; КонецЕсли; - Лог.Отладка("ИнициализироватьБазуДанных СтрокаПодключения:" + СтрокаПодключения); + ОперацияПоддерживаетсяIbcmd = ЗначениеЗаполнено(ПутьКSRC) + И (НЕ ПараметрыХранилища.РежимОбновления); + МенеджерСборки = НовыйМенеджерСборки(ИспользоватьIbcmd, + СтрокаПодключения, ОперацияПоддерживаетсяIbcmd); + + МенеджерСборки.Инициализация( + ПараметрыКоманды, СтрокаПодключения, Пользователь, Пароль, + ВерсияПлатформы, КлючРазрешенияЗапуска, + КодЯзыка, КодЯзыкаСеанса); + + Лог.Отладка("ИнициализироватьБазуДанных СтрокаПодключения:" + СтрокаПодключения); + Если Лев(СтрокаПодключения, 2) = "/F" Тогда + + МенеджерСборки.УстановитьКонтекст(СтрокаПодключения, "", ""); КаталогБазы = ОбщиеМетоды.УбратьКавычкиВокругПути(Сред(СтрокаПодключения, 3, СтрДлина(СтрокаПодключения) - 2)); - Лог.Отладка("Нашли каталог базы для удаления <%1> ", КаталогБазы); - - ФайлБазы = Новый Файл(КаталогБазы); - Если ФайлБазы.Существует() Тогда - Лог.Отладка("Удаляем файл " + ФайлБазы.ПолноеИмя); - УдалитьФайлы(ФайлБазы.ПолноеИмя, ПолучитьМаскуВсеФайлы()); - КонецЕсли; - СоздатьКаталог(ФайлБазы.ПолноеИмя); - МенеджерКонфигуратора.Инициализация( - ПараметрыКоманды, СтрокаПодключения, "", "", - ВерсияПлатформы, КлючРазрешенияЗапуска, - КодЯзыка, КодЯзыкаСеанса); - - Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); - СоздатьФайловуюБазу(Конфигуратор, ФайлБазы.ПолноеИмя); + ОбеспечитьФайловуюБазу(МенеджерСборки, КаталогБазы); БазуСоздавали = Истина; Лог.Информация("Создали базу данных для " + СтрокаПодключения); - КонецЕсли; - // При первичной инициализации опускаем указание пользователя и пароля, т.к. их еще нет. - МенеджерКонфигуратора.Инициализация( - ПараметрыКоманды, СтрокаПодключения, "", "", - ВерсияПлатформы, КлючРазрешенияЗапуска, - КодЯзыка, КодЯзыкаСеанса); - - Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); - Конфигуратор.УстановитьИмяФайлаСообщенийПлатформы(ВременныеФайлы.НовоеИмяФайла("log")); + КонецЕсли; Если Не ПустаяСтрока(ПутьКDT) Тогда - ПутьКDT = Новый Файл(ОбъединитьПути(КорневойПутьПроекта, ПутьКDT)).ПолноеИмя; - Лог.Информация("Загружаем dt " + ПутьКDT); - Попытка - Если БазуСоздавали = Истина Тогда - Конфигуратор.ЗагрузитьИнформационнуюБазу(ПутьКDT); - Иначе - Конфигуратор.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); - Конфигуратор.ЗагрузитьИнформационнуюБазу(ПутьКDT); - КонецЕсли; - Исключение - ИнфоОшибки = ИнформацияОбОшибке(); - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение "Не удалось загрузить: - |" + ПодробноеПредставлениеОшибки(ИнфоОшибки); - КонецПопытки; + ЗагрузкаИзDt(МенеджерКонфигуратора, ПутьКDT, БазуСоздавали, СтрокаПодключения, Пользователь, Пароль); КонецЕсли; // Базу создали, пользователей еще нет. Если БазуСоздавали И ПустаяСтрока(ПутьКDT) Тогда - Конфигуратор.УстановитьКонтекст(СтрокаПодключения, "", ""); + МенеджерСборки.УстановитьКонтекст(СтрокаПодключения, "", ""); Пользователь = ""; Пароль = ""; Иначе - Конфигуратор.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); + МенеджерСборки.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); КонецЕсли; - Если Не ПустаяСтрока(ПутьКSRC) Тогда - Лог.Информация("Запускаю загрузку конфигурации из исходников"); + ЗагрузкаИзSrc(МенеджерСборки, ПутьКSRC); - ПутьКSRC = Новый Файл(ОбъединитьПути(КорневойПутьПроекта, ПутьКSRC)).ПолноеИмя; - СписокФайлов = ""; - МенеджерКонфигуратора.СобратьИзИсходниковТекущуюКонфигурацию(ПутьКSRC, СписокФайлов, Ложь); + ЗагрузкаИзХранилища(МенеджерСборки, ПараметрыХранилища); - КонецЕсли; + ОбновитьКонфигурациюБД(МенеджерСборки, РежимРазработчика, РежимыРеструктуризации); - Попытка + ЗагрузкаИзФайлаКонфигурации(МенеджерСборки); - Если РежимОбновленияХранилища = Истина Тогда - Лог.Информация("Обновляем из хранилища"); - МенеджерКонфигуратора.ЗапуститьОбновлениеИзХранилища( - СтрокаПодключенияХранилище, ПользовательХранилища, ПарольХранилища, - ВерсияХранилища); - КонецЕсли; + МенеджерСборки.Деструктор(); - Если РежимРазработчика = Ложь Или РежимыРеструктуризации.Первый Или РежимыРеструктуризации.Второй Тогда - ОбщиеМетоды.ОбновитьКонфигурациюБД(МенеджерКонфигуратора, - РежимыРеструктуризации.Первый, РежимыРеструктуризации.Второй); - КонецЕсли; - Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - КонецПопытки; + ДобавитьБазуВСписокБаз(НеДобавлятьВСписокБаз, ВерсияПлатформы, СтрокаПодключения); - Если ЗначениеЗаполнено(ПутьКФайлуКонфигурации) Тогда - ЗагрузкаИзФайлаКонфигурации(МенеджерКонфигуратора); - КонецЕсли; + Лог.Информация("Инициализация завершена"); - МенеджерКонфигуратора.Деструктор(); +КонецПроцедуры - Если НЕ НеДобавлятьВСписокБаз Тогда +Процедура ОбеспечитьФайловуюБазу(МенеджерСборки, КаталогБазы) + + Лог.Отладка("Нашли каталог базы для удаления <%1> ", КаталогБазы); + ФайлБазы = Новый Файл(КаталогБазы); + Если ФайлБазы.Существует() Тогда + Лог.Отладка("Удаляем файл " + ФайлБазы.ПолноеИмя); + УдалитьФайлы(ФайлБазы.ПолноеИмя, ПолучитьМаскуВсеФайлы()); + КонецЕсли; + + СоздатьКаталог(ФайлБазы.ПолноеИмя); + Попытка + МенеджерСборки.СоздатьФайловуюБазу(КаталогБазы); + Исключение + ИнфоОшибки = ИнформацияОбОшибке(); + МенеджерСборки.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнфоОшибки); + КонецПопытки; + +КонецПроцедуры - ДопДанныеСпискаБаз = Новый Структура; - ДопДанныеСпискаБаз.Вставить("RootPath", КорневойПутьПроекта); - Попытка - Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда - ДопДанныеСпискаБаз.Вставить("Version", ВерсияПлатформы); - КонецЕсли; - МенеджерСпискаБаз.ДобавитьБазуВСписокБаз(СтрокаПодключения, - Новый Файл(КорневойПутьПроекта).ИмяБезРасширения, - ДопДанныеСпискаБаз); - Исключение - Лог.Предупреждение("Добавление базы в список " + ОписаниеОшибки()); - КонецПопытки; +Процедура ЗагрузкаИзФайлаКонфигурации(МенеджерКонфигуратора) + Если ПустаяСтрока(ПутьКФайлуКонфигурации) Тогда + Возврат; КонецЕсли; - Лог.Информация("Инициализация завершена"); - -КонецПроцедуры + Лог.Информация("Запускаем загрузку конфигурации из cf-файла"); + МенеджерВерсий = Новый МенеджерВерсийФайлов1С(); + ПутьКФайлуСВерсией = МенеджерВерсий.НайтиФайлСВерсией(ПутьКФайлуКонфигурации); -Процедура СоздатьФайловуюБазу(Конфигуратор, Знач КаталогБазы, Знач ПутьКШаблону = "", - Знач ИмяБазыВСписке = "", Знач КодЯзыка = "") - Лог.Отладка("Создаю файловую базу " + КаталогБазы); + Попытка + МенеджерКонфигуратора.ЗагрузитьФайлКонфигурации(ПутьКФайлуСВерсией, Ложь); + МенеджерКонфигуратора.ОбновитьКонфигурациюБазыДанных(Ложь); + Исключение + МенеджерКонфигуратора.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; - ФС.ОбеспечитьКаталог(КаталогБазы); - УдалитьФайлы(КаталогБазы, ПолучитьМаскуВсеФайлы()); +КонецПроцедуры - ПараметрыЗапуска = Новый Массив; - ПараметрыЗапуска.Добавить("CREATEINFOBASE"); - ПараметрыЗапуска.Добавить("File=""" +КаталогБазы + """"); - ПараметрыЗапуска.Добавить("/Out""" +Конфигуратор.ФайлИнформации() + """"); - Если ЗначениеЗаполнено(КодЯзыка) Тогда - ПараметрыЗапуска.Добавить("/L" +СокрЛП(КодЯзыка)); - КонецЕсли; +Процедура ЗагрузкаИзSrc(МенеджерСборки, ПутьКSRC) - Если ИмяБазыВСписке <> "" Тогда - ПараметрыЗапуска.Добавить("/AddInList""" + ИмяБазыВСписке + """"); - КонецЕсли; - Если ПутьКШаблону <> "" Тогда - ПараметрыЗапуска.Добавить("/UseTemplate""" + ПутьКШаблону + """"); + Если ПустаяСтрока(ПутьКSRC) Тогда + Возврат; КонецЕсли; + + Лог.Информация("Запускаю загрузку конфигурации из исходников"); + ПолныйПутьКSRC = Новый Файл(ОбъединитьПути(КорневойПутьПроекта, ПутьКSRC)).ПолноеИмя; + СписокФайлов = ""; + МенеджерСборки.СобратьИзИсходниковТекущуюКонфигурацию(ПолныйПутьКSRC, СписокФайлов, Ложь); + +КонецПроцедуры - СтрокаЗапуска = ""; - Для Каждого Параметр Из ПараметрыЗапуска Цикл - СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; - КонецЦикла; - - Приложение = Конфигуратор.ПутьКПлатформе1С(); - Если Найти(Приложение, " ") > 0 Тогда - Приложение = ОбщиеМетоды.ОбернутьПутьВКавычки(Приложение); - КонецЕсли; - Приложение = Приложение + " " + СтрокаЗапуска; +Процедура ЗагрузкаИзDt(МенеджерКонфигуратора, ПутьКDT, БазуСоздавали, СтрокаПодключения, Пользователь, Пароль) + Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); + ПутьКDT = Новый Файл(ОбъединитьПути(КорневойПутьПроекта, ПутьКDT)).ПолноеИмя; + Лог.Информация("Загружаем dt " + ПутьКDT); Попытка - ОбщиеМетоды.ЗапуститьПроцесс(Приложение); + Если БазуСоздавали = Истина Тогда + Конфигуратор.ЗагрузитьИнформационнуюБазу(ПутьКDT); + Иначе + Конфигуратор.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); + Конфигуратор.ЗагрузитьИнформационнуюБазу(ПутьКDT); + КонецЕсли; Исключение ИнфоОшибки = ИнформацияОбОшибке(); - ВызватьИсключение "Не удалось создать файловую ИБ: + МенеджерКонфигуратора.Деструктор(); + ВызватьИсключение "Не удалось загрузить: |" + ПодробноеПредставлениеОшибки(ИнфоОшибки); КонецПопытки; - РезультатСообщение = ОбщиеМетоды.ПрочитатьФайлИнформации(Конфигуратор.ФайлИнформации()); - Если НЕ (СтрНайти(РезультатСообщение, "успешно завершено") = 0 - ИЛИ СтрНайти(РезультатСообщение, "completed successfully") = 0) Тогда +КонецПроцедуры - ВызватьИсключение "Результат работы не успешен: " + Символы.ПС + РезультатСообщение; +Процедура ЗагрузкаИзХранилища(МенеджерКонфигуратора, ПараметрыХранилища) + Если Не ПараметрыХранилища.РежимОбновления Тогда + Возврат; КонецЕсли; + Лог.Информация("Обновляем из хранилища"); + Попытка + МенеджерКонфигуратора.ЗапуститьОбновлениеИзХранилища( + ПараметрыХранилища.СтрокаПодключения, ПараметрыХранилища.Пользователь, ПараметрыХранилища.Пароль, + ПараметрыХранилища.Версия); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + МенеджерКонфигуратора.Деструктор(); + ВызватьИсключение "Не удалось загрузить базу из хранилища: + |" + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + КонецПопытки; + КонецПроцедуры -Процедура ЗагрузкаИзФайлаКонфигурации(МенеджерКонфигуратора) +Процедура ОбновитьКонфигурациюБД(МенеджерСборки, РежимРазработчика, РежимыРеструктуризации) + + Попытка + Если РежимРазработчика = Ложь Или РежимыРеструктуризации.Первый Или РежимыРеструктуризации.Второй Тогда + ОбщиеМетоды.ОбновитьКонфигурациюБД(МенеджерСборки, + РежимыРеструктуризации.Первый, РежимыРеструктуризации.Второй); + КонецЕсли; + Исключение + МенеджерСборки.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; - Лог.Информация("Запускаем загрузку конфигурации из cf-файла"); - МенеджерВерсий = Новый МенеджерВерсийФайлов1С(); - ПутьКФайлуСВерсией = МенеджерВерсий.НайтиФайлСВерсией(ПутьКФайлуКонфигурации); +КонецПроцедуры + +Процедура ДобавитьБазуВСписокБаз(НеДобавлятьВСписокБаз, ВерсияПлатформы, СтрокаПодключения) + + Если НЕ НеДобавлятьВСписокБаз Тогда + Возврат; + КонецЕсли; + ДопДанныеСпискаБаз = Новый Структура; + ДопДанныеСпискаБаз.Вставить("RootPath", КорневойПутьПроекта); Попытка - МенеджерКонфигуратора.ЗагрузитьФайлКонфигурации(ПутьКФайлуСВерсией, Ложь); - МенеджерКонфигуратора.ОбновитьКонфигурациюБазыДанных(Ложь); + Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда + ДопДанныеСпискаБаз.Вставить("Version", ВерсияПлатформы); + КонецЕсли; + МенеджерСпискаБаз.ДобавитьБазуВСписокБаз(СтрокаПодключения, + Новый Файл(КорневойПутьПроекта).ИмяБезРасширения, + ДопДанныеСпискаБаз); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Лог.Предупреждение("Добавление базы в список " + ОписаниеОшибки()); КонецПопытки; КонецПроцедуры + +Функция НовыйМенеджерСборки(ИспользоватьУтилитуКоманднойСтроки, СтрокаПодключенияИБ, ПоддерживаемаяОперация = Истина) + + Если Не ИспользоватьУтилитуКоманднойСтроки Тогда + Возврат НовыйМенеджерКонфигуратора(); + + ИначеЕсли Не ПоддерживаемаяОперация Тогда + Лог.Отладка("Операция не поддерживается ibcmd. Используем конфигуратор."); + Возврат НовыйМенеджерКонфигуратора(); + + ИначеЕсли Не СтрНачинаетсяС(СтрокаПодключенияИБ, "/F") Тогда + Лог.Информация("Серверные ИБ не поддерживаются ibcmd. Используем конфигуратор."); + Возврат НовыйМенеджерКонфигуратора(); + + Иначе + Возврат Новый МенеджерIbcmd(); + + КонецЕсли; + +КонецФункции + +Функция НовыйМенеджерКонфигуратора() + + МенеджерКонфигуратора = НовыйМенеджерКонфигуратора(); + Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); + + Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); + Конфигуратор.УстановитьИмяФайлаСообщенийПлатформы(ВременныеФайлы.НовоеИмяФайла("log")); + + Возврат МенеджерКонфигуратора; + +КонецФункции diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" new file mode 100644 index 00000000..80b26da6 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -0,0 +1,158 @@ + +#Использовать ibcmdrunner +#Использовать v8find + +#Область ОписаниеПеременных + +Перем Лог; // Содердит объект ллога +Перем ВременныйКаталогДанныхСервера; // Временный каталог данных автономного сервера +Перем УправлениеИБ; // :УправлениеИБ +Перем Локаль; // Локаль приложения + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +Процедура УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт + + КаталогБазы = ОбщиеМетоды.УбратьКавычкиВокругПути(Сред(СтрокаСоединения, 3, СтрДлина(СтрокаСоединения) - 2)); + УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогБазы); + УправлениеИБ.УстановитьПараметрыАвторизацииИБ(Пользователь, Пароль); + +КонецПроцедуры + +Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", Знач ИмяБазыВСписке = "") Экспорт + + УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогБазы); + УправлениеИБ.СоздатьИБИзФайлаКонфигурации(ПутьКШаблону, Локаль); + +КонецПроцедуры + +Процедура СобратьИзИсходниковТекущуюКонфигурацию(Знач ВходнойКаталог, + Знач СписокФайловДляЗагрузки = "", СниматьСПоддержки = Ложь) Экспорт + + ИмяРасширения = ""; + УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(ВходнойКаталог, ИмяРасширения); + + Если СниматьСПоддержки Тогда + УправлениеИБ.СнятьСПоддержки(); + КонецЕсли; + +КонецПроцедуры + +Процедура ОбновитьКонфигурациюБазыДанных(ДинамическоеОбновление = Ложь) Экспорт + + Если ДинамическоеОбновление Тогда + РежимДинамическогоОбновления = "disable"; + Иначе + РежимДинамическогоОбновления = "auto"; + КонецЕсли; + ЗавершатьСеансы = "force"; + + ИмяРасширения = ""; + УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения, РежимДинамическогоОбновления, ЗавершатьСеансы); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура Конструктор() Экспорт + +КонецПроцедуры + +Процедура Деструктор() Экспорт + + Попытка + ВременныеФайлы.УдалитьФайл(ВременныйКаталогДанныхСервера); + Исключение + Лог.Отладка(ОписаниеОшибки()); + КонецПопытки; + + ВременныйКаталогДанныхСервера = ""; + +КонецПроцедуры + +Процедура Инициализация(Знач ПараметрыКоманды, Знач СтрокаПодключения, Знач Пользователь = "", Знач Пароль = "", + Знач ВерсияПлатформы = "", Знач КлючРазрешенияЗапуска = "", + Знач КодЯзыка = "", Знач КодЯзыкаСеанса = "") Экспорт + + ТекущаяПроцедура = "Инициализация"; + ИспользоватьВременнуюБазу = Ложь; + Лог.Отладка("Заданы ПараметрыКоманды %1", ЗначениеЗаполнено(ПараметрыКоманды)); + + Если ЗначениеЗаполнено(ПараметрыКоманды) Тогда + ИспользоватьВременнуюБазу = ПараметрыКоманды["ДанныеПодключения"].ИспользоватьВременнуюБазу; + Лог.Отладка("ИспользоватьВременнуюБазу %1", ИспользоватьВременнуюБазу); + КонецЕсли; + + Если Не ИспользоватьВременнуюБазу Тогда + Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура + ": не задана строка подключения").Заполнено(); + + КаталогБазы = ОбщиеМетоды.УбратьКавычкиВокругПути(Сред(СтрокаПодключения, 3, СтрДлина(СтрокаПодключения) - 2)); + + УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогБазы); + УправлениеИБ.УстановитьПараметрыАвторизацииИБ(Пользователь, Пароль); + + КонецЕсли; + + // КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); + // УправлениеКонфигуратором.КаталогСборки(КаталогВременнойИБ); + + Если НЕ ПустаяСтрока(ВерсияПлатформы) Тогда + Если ЗначениеЗаполнено(ПараметрыКоманды) Тогда + Разрядность = ПараметрыКоманды["--bitness"]; + Разрядность = ОбщиеМетоды.РазрядностьПлатформы(Разрядность); + Лог.Отладка("Разрядность платформы 1С указана %1", Разрядность); + Иначе + Разрядность = Неопределено; + Лог.Отладка("Разрядность платформы 1С не указана"); + КонецЕсли; + + ПутьКIbcmd = ПутьКIbcmd(ВерсияПлатформы, Разрядность); + УправлениеИБ.ПутьКПриложению(ПутьКIbcmd); + КонецЕсли; + + Если ЗначениеЗаполнено(КодЯзыка) Тогда + Локаль = КодЯзыка; + КонецЕсли; + + // Если ЗначениеЗаполнено(КодЯзыкаСеанса) Тогда + // УправлениеКонфигуратором.УстановитьКодЯзыкаСеанса(КодЯзыка); + // КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ИнициализироватьОбъект() + + Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); + ВременныйКаталогДанныхСервера = ВременныеФайлы.СоздатьКаталог(); + Локаль = ""; + + УправлениеИБ = Новый УправлениеИБ; + УправлениеИБ.УстановитьПараметрыАвтономногоСервера(ВременныйКаталогДанныхСервера); + +КонецПроцедуры + +Функция ПутьКIbcmd(ВерсияПлатформы, Разрядность) + + Если Не СтрНачинаетсяС(ВерсияПлатформы, "8.3") Тогда + ВызватьИсключение "Неверная версия платформы <" + ВерсияПлатформы + ">"; + КонецЕсли; + + Возврат Платформа1С.ПутьКIBCMD(ВерсияПлатформы, Разрядность); + +КонецФункции + +#КонецОбласти + +#Область ИнициализацияОбъекта + +ИнициализироватьОбъект(); + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" index e456306c..b97c76f9 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" @@ -109,7 +109,7 @@ КонецЕсли; Если ЗначениеЗаполнено(КодЯзыкаСеанса) Тогда - УправлениеКонфигуратором.УстановитьКодЯзыкаСеанса(КодЯзыка); + УправлениеКонфигуратором.УстановитьКодЯзыкаСеанса(КодЯзыкаСеанса); КонецЕсли; КонецПроцедуры @@ -126,6 +126,10 @@ КаталогВременнойИБ = Неопределено; КонецПроцедуры +Процедура УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт + УправлениеКонфигуратором.УстановитьКонтекст(СтрокаСоединения, Пользователь, Пароль); +КонецПроцедуры + // Установить параметры подключения к хранилищу 1С // // Параметры: @@ -185,6 +189,57 @@ КонецПроцедуры +Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", + Знач ИмяБазыВСписке = "", Знач КодЯзыка = "") Экспорт + Лог.Отладка("Создаю файловую базу " + КаталогБазы); + + ФС.ОбеспечитьКаталог(КаталогБазы); + УдалитьФайлы(КаталогБазы, ПолучитьМаскуВсеФайлы()); + + ПараметрыЗапуска = Новый Массив; + ПараметрыЗапуска.Добавить("CREATEINFOBASE"); + ПараметрыЗапуска.Добавить("File=""" +КаталогБазы + """"); + ПараметрыЗапуска.Добавить("/Out""" +УправлениеКонфигуратором.ФайлИнформации() + """"); + Если ЗначениеЗаполнено(КодЯзыка) Тогда + ПараметрыЗапуска.Добавить("/L" +СокрЛП(КодЯзыка)); + КонецЕсли; + + Если ИмяБазыВСписке <> "" Тогда + ПараметрыЗапуска.Добавить("/AddInList""" + ИмяБазыВСписке + """"); + КонецЕсли; + Если ПутьКШаблону <> "" Тогда + ПараметрыЗапуска.Добавить("/UseTemplate""" + ПутьКШаблону + """"); + КонецЕсли; + + СтрокаЗапуска = ""; + Для Каждого Параметр Из ПараметрыЗапуска Цикл + СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; + КонецЦикла; + + Приложение = УправлениеКонфигуратором.ПутьКПлатформе1С(); + Если Найти(Приложение, " ") > 0 Тогда + Приложение = ОбщиеМетоды.ОбернутьПутьВКавычки(Приложение); + КонецЕсли; + Приложение = Приложение + " " + СтрокаЗапуска; + + Попытка + ОбщиеМетоды.ЗапуститьПроцесс(Приложение); + Исключение + ИнфоОшибки = ИнформацияОбОшибке(); + ВызватьИсключение "Не удалось создать файловую ИБ: + |" + ПодробноеПредставлениеОшибки(ИнфоОшибки); + КонецПопытки; + + РезультатСообщение = ОбщиеМетоды.ПрочитатьФайлИнформации(УправлениеКонфигуратором.ФайлИнформации()); + Если НЕ (СтрНайти(РезультатСообщение, "успешно завершено") = 0 + ИЛИ СтрНайти(РезультатСообщение, "completed successfully") = 0) Тогда + + ВызватьИсключение "Результат работы не успешен: " + Символы.ПС + РезультатСообщение; + + КонецЕсли; + +КонецПроцедуры + // Обновить конфигурацию БД на сервере // // Параметры: From 71e8b2ff08c0cbb156e9ab95a3fd7692c5470643 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 1 Oct 2023 17:45:44 +0200 Subject: [PATCH 03/59] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D0=B8=D1=81=D1=85=D0=BE=D0=B4=D0=BD=D0=B8=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\266\320\265\320\275\320\270\321\217.os" | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index f61032bb..0ed40fbe 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -16,6 +16,7 @@ // Параметры команды Перем ПутьКФайлуКонфигурации; +Перем ПутьКИсходникам; Перем ИспользоватьIbcmd; // Флаг использования утилиты ibcmd /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -82,11 +83,11 @@ РежимыРеструктуризации.Вставить("Первый", ПараметрыКоманды["--v1"]); РежимыРеструктуризации.Вставить("Второй", ПараметрыКоманды["--v2"]); + ПутьКИсходникам = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--src"]); ПутьКФайлуКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--cf"]); - ИспользоватьIbcmd = ПараметрыКоманды["--ibcmd"]; - ИнициализироватьБазуДанных(РежимыРеструктуризации, ПараметрыКоманды["--src"], ПараметрыКоманды["--dt"], + ИнициализироватьБазуДанных(РежимыРеструктуризации, ПараметрыКоманды["--dt"], ДанныеПодключения, ПараметрыКоманды["--uccode"], ПараметрыКоманды["--v8version"], ПараметрыКоманды["--dev"], ПараметрыХранилища, @@ -96,7 +97,7 @@ Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; КонецФункции -Процедура ИнициализироватьБазуДанных(РежимыРеструктуризации, Знач ПутьКSRC, Знач ПутьКDT, Знач ДанныеПодключения, +Процедура ИнициализироватьБазуДанных(РежимыРеструктуризации, Знач ПутьКDT, Знач ДанныеПодключения, Знач КлючРазрешенияЗапуска, Знач ВерсияПлатформы, Знач РежимРазработчика, Знач ПараметрыХранилища, Знач НеДобавлятьВСписокБаз, Знач ПараметрыКоманды) @@ -117,8 +118,7 @@ СтрокаПодключения = "/F""" + КаталогБазы + """"; КонецЕсли; - ОперацияПоддерживаетсяIbcmd = ЗначениеЗаполнено(ПутьКSRC) - И (НЕ ПараметрыХранилища.РежимОбновления); + ОперацияПоддерживаетсяIbcmd = (НЕ ПараметрыХранилища.РежимОбновления); МенеджерСборки = НовыйМенеджерСборки(ИспользоватьIbcmd, СтрокаПодключения, ОперацияПоддерживаетсяIbcmd); @@ -153,7 +153,7 @@ МенеджерСборки.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); КонецЕсли; - ЗагрузкаИзSrc(МенеджерСборки, ПутьКSRC); + ЗагрузкаИзИсходников(МенеджерСборки); ЗагрузкаИзХранилища(МенеджерСборки, ПараметрыХранилища); @@ -209,16 +209,21 @@ КонецПроцедуры -Процедура ЗагрузкаИзSrc(МенеджерСборки, ПутьКSRC) +Процедура ЗагрузкаИзИсходников(МенеджерСборки) - Если ПустаяСтрока(ПутьКSRC) Тогда + Если ПустаяСтрока(ПутьКИсходникам) Тогда Возврат; КонецЕсли; Лог.Информация("Запускаю загрузку конфигурации из исходников"); - ПолныйПутьКSRC = Новый Файл(ОбъединитьПути(КорневойПутьПроекта, ПутьКSRC)).ПолноеИмя; - СписокФайлов = ""; - МенеджерСборки.СобратьИзИсходниковТекущуюКонфигурацию(ПолныйПутьКSRC, СписокФайлов, Ложь); + Попытка + СписокФайлов = ""; + МенеджерСборки.СобратьИзИсходниковТекущуюКонфигурацию(ПутьКИсходникам, СписокФайлов, Ложь); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + МенеджерСборки.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + КонецПопытки; КонецПроцедуры From d565d73c081be86c572d0951bef563e2461c1f65 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 4 Oct 2023 17:03:28 +0200 Subject: [PATCH 04/59] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.os | 1 + ...20\266\320\265\320\275\320\270\321\217.os" | 161 +++++++++--------- ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 160 ++++++++++------- ...20\260\321\202\320\276\321\200\320\260.os" | 75 ++++---- ...20\265\321\202\320\276\320\264\321\213.os" | 14 ++ 5 files changed, 224 insertions(+), 187 deletions(-) diff --git a/src/main.os b/src/main.os index dc80c424..3949701f 100644 --- a/src/main.os +++ b/src/main.os @@ -259,6 +259,7 @@ СтруктураПодключения.Вставить("Пароль", ЗначенияПараметров["--db-pwd"]); СтруктураПодключения.Вставить("КодЯзыка", ЗначенияПараметров["--language"]); СтруктураПодключения.Вставить("КодЯзыкаСеанса", ЗначенияПараметров["--locale"]); + СтруктураПодключения.Вставить("ВерсияПлатформы", ЗначенияПараметров["--v8version"]); СтруктураПодключения.Вставить("РазрядностьПлатформы", ЗначенияПараметров["--bitness"]); Рез = Новый Структура; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index 0ed40fbe..50a7d928 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -11,16 +11,21 @@ #Использовать fs #Использовать v8runner +#Область ОписаниеПеременных + Перем Лог; Перем КорневойПутьПроекта; // Параметры команды +Перем ДанныеПодключения; Перем ПутьКФайлуКонфигурации; Перем ПутьКИсходникам; +Перем ПутьКФайлуВыгрузки; Перем ИспользоватьIbcmd; // Флаг использования утилиты ibcmd -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -65,6 +70,9 @@ // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений // ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) // +// Возвращаемое значение: +// Число - Код возврата команды. +// Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт Лог = ДополнительныеПараметры.Лог; @@ -84,68 +92,58 @@ РежимыРеструктуризации.Вставить("Второй", ПараметрыКоманды["--v2"]); ПутьКИсходникам = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--src"]); + ПутьКФайлуВыгрузки = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--dt"]); ПутьКФайлуКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--cf"]); ИспользоватьIbcmd = ПараметрыКоманды["--ibcmd"]; - ИнициализироватьБазуДанных(РежимыРеструктуризации, ПараметрыКоманды["--dt"], - ДанныеПодключения, ПараметрыКоманды["--uccode"], + ИнициализироватьБазуДанных(РежимыРеструктуризации, ПараметрыКоманды["--v8version"], ПараметрыКоманды["--dev"], ПараметрыХранилища, ПараметрыКоманды["--nocacheuse"], ПараметрыКоманды); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции -Процедура ИнициализироватьБазуДанных(РежимыРеструктуризации, Знач ПутьКDT, Знач ДанныеПодключения, - Знач КлючРазрешенияЗапуска, Знач ВерсияПлатформы, Знач РежимРазработчика, +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ИнициализироватьБазуДанных(РежимыРеструктуризации, + Знач ВерсияПлатформы, Знач РежимРазработчика, Знач ПараметрыХранилища, Знач НеДобавлятьВСписокБаз, Знач ПараметрыКоманды) Перем БазуСоздавали; БазуСоздавали = Ложь; - СтрокаПодключения = ДанныеПодключения.ПутьБазы; Пользователь = ДанныеПодключения.Пользователь; Пароль = ДанныеПодключения.Пароль; - КодЯзыка = ДанныеПодключения.КодЯзыка; - КодЯзыкаСеанса = ДанныеПодключения.КодЯзыкаСеанса; - - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - - Если ПустаяСтрока(СтрокаПодключения) Тогда - КаталогБазы = ОбъединитьПути(КорневойПутьПроекта, ?(РежимРазработчика = Истина, "./build/ibservice", "./build/ib")); - СтрокаПодключения = "/F""" + КаталогБазы + """"; + Если ПустаяСтрока(ДанныеПодключения.ПутьБазы) Тогда + ДанныеПодключения = СоздатьДанныеПодключения(ДанныеПодключения, РежимРазработчика); КонецЕсли; + СтрокаПодключения = ДанныеПодключения.ПутьБазы; ОперацияПоддерживаетсяIbcmd = (НЕ ПараметрыХранилища.РежимОбновления); МенеджерСборки = НовыйМенеджерСборки(ИспользоватьIbcmd, - СтрокаПодключения, ОперацияПоддерживаетсяIbcmd); + ДанныеПодключения.ПутьБазы, ОперацияПоддерживаетсяIbcmd); - МенеджерСборки.Инициализация( - ПараметрыКоманды, СтрокаПодключения, Пользователь, Пароль, - ВерсияПлатформы, КлючРазрешенияЗапуска, - КодЯзыка, КодЯзыкаСеанса); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); Лог.Отладка("ИнициализироватьБазуДанных СтрокаПодключения:" + СтрокаПодключения); - Если Лев(СтрокаПодключения, 2) = "/F" Тогда + Если ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключения) Тогда - МенеджерСборки.УстановитьКонтекст(СтрокаПодключения, "", ""); - КаталогБазы = ОбщиеМетоды.УбратьКавычкиВокругПути(Сред(СтрокаПодключения, 3, СтрДлина(СтрокаПодключения) - 2)); - ОбеспечитьФайловуюБазу(МенеджерСборки, КаталогБазы); + ОбеспечитьФайловуюБазу(МенеджерСборки, СтрокаПодключения); БазуСоздавали = Истина; Лог.Информация("Создали базу данных для " + СтрокаПодключения); - - КонецЕсли; - - Если Не ПустаяСтрока(ПутьКDT) Тогда - ЗагрузкаИзDt(МенеджерКонфигуратора, ПутьКDT, БазуСоздавали, СтрокаПодключения, Пользователь, Пароль); + КонецЕсли; // Базу создали, пользователей еще нет. - Если БазуСоздавали И ПустаяСтрока(ПутьКDT) Тогда + Если БазуСоздавали И ПустаяСтрока(ПутьКФайлуВыгрузки) Тогда МенеджерСборки.УстановитьКонтекст(СтрокаПодключения, "", ""); Пользователь = ""; Пароль = ""; @@ -153,14 +151,24 @@ МенеджерСборки.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); КонецЕсли; - ЗагрузкаИзИсходников(МенеджерСборки); - - ЗагрузкаИзХранилища(МенеджерСборки, ПараметрыХранилища); - - ОбновитьКонфигурациюБД(МенеджерСборки, РежимРазработчика, РежимыРеструктуризации); + Если ЗначениеЗаполнено(ПутьКИсходникам) Тогда + ЗагрузкаИзИсходников(МенеджерСборки); + + ИначеЕсли ЗначениеЗаполнено(ПутьКФайлуВыгрузки) Тогда + ЗагрузкаИзФайлаВыгрузки(МенеджерСборки); - ЗагрузкаИзФайлаКонфигурации(МенеджерСборки); + ИначеЕсли ЗначениеЗаполнено(ПутьКФайлуКонфигурации) Тогда + ЗагрузкаИзФайлаКонфигурации(МенеджерСборки); + ИначеЕсли ПараметрыХранилища.РежимОбновления Тогда + ЗагрузкаИзХранилища(МенеджерСборки, ПараметрыХранилища); + ОбновитьКонфигурациюБД(МенеджерСборки, РежимРазработчика, РежимыРеструктуризации); + + Иначе + Лог.Информация("Создана пустая база данных."); + + КонецЕсли; + МенеджерСборки.Деструктор(); ДобавитьБазуВСписокБаз(НеДобавлятьВСписокБаз, ВерсияПлатформы, СтрокаПодключения); @@ -169,16 +177,12 @@ КонецПроцедуры -Процедура ОбеспечитьФайловуюБазу(МенеджерСборки, КаталогБазы) +Процедура ОбеспечитьФайловуюБазу(МенеджерСборки, СтрокаПодключения) + МенеджерСборки.УстановитьКонтекст(СтрокаПодключения, "", ""); + КаталогБазы = ОбщиеМетоды.КаталогФайловойИБ(СтрокаПодключения); + Лог.Отладка("Нашли каталог базы для удаления <%1> ", КаталогБазы); - ФайлБазы = Новый Файл(КаталогБазы); - Если ФайлБазы.Существует() Тогда - Лог.Отладка("Удаляем файл " + ФайлБазы.ПолноеИмя); - УдалитьФайлы(ФайлБазы.ПолноеИмя, ПолучитьМаскуВсеФайлы()); - КонецЕсли; - - СоздатьКаталог(ФайлБазы.ПолноеИмя); Попытка МенеджерСборки.СоздатьФайловуюБазу(КаталогБазы); Исключение @@ -189,31 +193,24 @@ КонецПроцедуры -Процедура ЗагрузкаИзФайлаКонфигурации(МенеджерКонфигуратора) - - Если ПустаяСтрока(ПутьКФайлуКонфигурации) Тогда - Возврат; - КонецЕсли; +Процедура ЗагрузкаИзФайлаКонфигурации(МенеджерСборки) Лог.Информация("Запускаем загрузку конфигурации из cf-файла"); МенеджерВерсий = Новый МенеджерВерсийФайлов1С(); ПутьКФайлуСВерсией = МенеджерВерсий.НайтиФайлСВерсией(ПутьКФайлуКонфигурации); Попытка - МенеджерКонфигуратора.ЗагрузитьФайлКонфигурации(ПутьКФайлуСВерсией, Ложь); - МенеджерКонфигуратора.ОбновитьКонфигурациюБазыДанных(Ложь); + МенеджерСборки.ЗагрузитьФайлКонфигурации(ПутьКФайлуСВерсией, Ложь); + МенеджерСборки.ОбновитьКонфигурациюБазыДанных(Ложь); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + МенеджерСборки.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; КонецПроцедуры Процедура ЗагрузкаИзИсходников(МенеджерСборки) - - Если ПустаяСтрока(ПутьКИсходникам) Тогда - Возврат; - КонецЕсли; Лог.Информация("Запускаю загрузку конфигурации из исходников"); Попытка @@ -227,33 +224,21 @@ КонецПроцедуры -Процедура ЗагрузкаИзDt(МенеджерКонфигуратора, ПутьКDT, БазуСоздавали, СтрокаПодключения, Пользователь, Пароль) +Процедура ЗагрузкаИзФайлаВыгрузки(МенеджерСборки) - Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); - ПутьКDT = Новый Файл(ОбъединитьПути(КорневойПутьПроекта, ПутьКDT)).ПолноеИмя; - Лог.Информация("Загружаем dt " + ПутьКDT); + Лог.Информация("Загружаем dt " + ПутьКФайлуВыгрузки); Попытка - Если БазуСоздавали = Истина Тогда - Конфигуратор.ЗагрузитьИнформационнуюБазу(ПутьКDT); - Иначе - Конфигуратор.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); - Конфигуратор.ЗагрузитьИнформационнуюБазу(ПутьКDT); - КонецЕсли; + МенеджерСборки.ЗагрузитьИнфобазуИзФайла(ПутьКФайлуВыгрузки); Исключение - ИнфоОшибки = ИнформацияОбОшибке(); - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение "Не удалось загрузить: - |" + ПодробноеПредставлениеОшибки(ИнфоОшибки); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + МенеджерСборки.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; КонецПроцедуры Процедура ЗагрузкаИзХранилища(МенеджерКонфигуратора, ПараметрыХранилища) - Если Не ПараметрыХранилища.РежимОбновления Тогда - Возврат; - КонецЕсли; - Лог.Информация("Обновляем из хранилища"); Попытка МенеджерКонфигуратора.ЗапуститьОбновлениеИзХранилища( @@ -306,17 +291,19 @@ Функция НовыйМенеджерСборки(ИспользоватьУтилитуКоманднойСтроки, СтрокаПодключенияИБ, ПоддерживаемаяОперация = Истина) Если Не ИспользоватьУтилитуКоманднойСтроки Тогда + Лог.Отладка("Используем конфигуратор."); Возврат НовыйМенеджерКонфигуратора(); ИначеЕсли Не ПоддерживаемаяОперация Тогда Лог.Отладка("Операция не поддерживается ibcmd. Используем конфигуратор."); Возврат НовыйМенеджерКонфигуратора(); - ИначеЕсли Не СтрНачинаетсяС(СтрокаПодключенияИБ, "/F") Тогда + ИначеЕсли Не ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключенияИБ) Тогда Лог.Информация("Серверные ИБ не поддерживаются ibcmd. Используем конфигуратор."); Возврат НовыйМенеджерКонфигуратора(); Иначе + Лог.Отладка("Используем ibcmd."); Возврат Новый МенеджерIbcmd(); КонецЕсли; @@ -325,12 +312,28 @@ Функция НовыйМенеджерКонфигуратора() - МенеджерКонфигуратора = НовыйМенеджерКонфигуратора(); + МенеджерКонфигуратора = Новый МенеджерКонфигуратора(); Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); - Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); - Конфигуратор.УстановитьИмяФайлаСообщенийПлатформы(ВременныеФайлы.НовоеИмяФайла("log")); + // Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); + // Конфигуратор.УстановитьИмяФайлаСообщенийПлатформы(ВременныеФайлы.НовоеИмяФайла("log")); Возврат МенеджерКонфигуратора; КонецФункции + +Функция СоздатьДанныеПодключения(ДанныеПодключения, РежимРазработчика) + + _ДанныеПодключения = Новый Структура(ДанныеПодключения); + КаталогБазы = ОбъединитьПути(КорневойПутьПроекта, ?(РежимРазработчика = Истина, "./build/ibservice", "./build/ib")); + Файл = Новый Файл(КаталогБазы); + _ДанныеПодключения.ПутьБазы = "/F""" + Файл.ПолноеИмя + """"; + _ДанныеПодключения.СтрокаПодключения = "/F""" + Файл.ПолноеИмя + """"; + _ДанныеПодключения.Пользователь = ""; + _ДанныеПодключения.Пароль = ""; + + Возврат _ДанныеПодключения; + +КонецФункции + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 80b26da6..d6efb145 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -15,7 +15,8 @@ Процедура УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт - КаталогБазы = ОбщиеМетоды.УбратьКавычкиВокругПути(Сред(СтрокаСоединения, 3, СтрДлина(СтрокаСоединения) - 2)); + КаталогБазы = ОбщиеМетоды.КаталогФайловойИБ(СтрокаСоединения); + Лог.Отладка("Использовать каталог ИБ %1", КаталогБазы); УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогБазы); УправлениеИБ.УстановитьПараметрыАвторизацииИБ(Пользователь, Пароль); @@ -23,8 +24,13 @@ Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", Знач ИмяБазыВСписке = "") Экспорт + ОбщиеМетоды.ОбеспечитьПустойКаталог(Новый Файл(КаталогБазы)); + УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогБазы); - УправлениеИБ.СоздатьИБИзФайлаКонфигурации(ПутьКШаблону, Локаль); + УправлениеИБ.СоздатьИБИзФайлаВыгрузки(ПутьКШаблону, ЛокальДляЗапуска()); + + СтрокаСоединения = СтрШаблон("File=""%1""", КаталогБазы); + ДобавитьБазуВСписокБаз(ИмяБазыВСписке, СтрокаСоединения); КонецПроцедуры @@ -32,7 +38,12 @@ Знач СписокФайловДляЗагрузки = "", СниматьСПоддержки = Ложь) Экспорт ИмяРасширения = ""; - УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(ВходнойКаталог, ИмяРасширения); + + Если ЗначениеЗаполнено(СписокФайловДляЗагрузки) Тогда + УправлениеИБ.ЗагрузитьВыбранныеФайлыКонфигурации(ВходнойКаталог, СписокФайловДляЗагрузки, ИмяРасширения); + Иначе + УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(ВходнойКаталог, ИмяРасширения); + КонецЕсли; Если СниматьСПоддержки Тогда УправлениеИБ.СнятьСПоддержки(); @@ -40,6 +51,21 @@ КонецПроцедуры +Процедура ЗагрузитьИнфобазуИзФайла(Знач ПутьКЗагружаемомуФайлуСДанными, Знач КоличествоЗаданий = 0) Экспорт + УправлениеИБ.ЗагрузитьДанныеИБ(ПутьКЗагружаемомуФайлуСДанными); +КонецПроцедуры + +Процедура ЗагрузитьФайлКонфигурации(Знач ПутьКФайлу, Знач СниматьСПоддержки = Истина) Экспорт + + ИмяРасширения = ""; + УправлениеИБ.ЗагрузитьКонфигурацию(ПутьКФайлу, ИмяРасширения); + + Если СниматьСПоддержки Тогда + УправлениеИБ.СнятьСПоддержки(); + КонецЕсли; + +КонецПроцедуры + Процедура ОбновитьКонфигурациюБазыДанных(ДинамическоеОбновление = Ложь) Экспорт Если ДинамическоеОбновление Тогда @@ -58,69 +84,54 @@ #Область ОбработчикиСобытий -Процедура Конструктор() Экспорт - -КонецПроцедуры - -Процедура Деструктор() Экспорт +Процедура ПриСозданииОбъекта() - Попытка - ВременныеФайлы.УдалитьФайл(ВременныйКаталогДанныхСервера); - Исключение - Лог.Отладка(ОписаниеОшибки()); - КонецПопытки; - - ВременныйКаталогДанныхСервера = ""; + Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); + ВременныйКаталогДанныхСервера = ВременныеФайлы.СоздатьКаталог(); + Локаль = ""; + + УправлениеИБ = Новый УправлениеИБ; + УправлениеИБ.УстановитьПараметрыАвтономногоСервера(ВременныйКаталогДанныхСервера); КонецПроцедуры -Процедура Инициализация(Знач ПараметрыКоманды, Знач СтрокаПодключения, Знач Пользователь = "", Знач Пароль = "", - Знач ВерсияПлатформы = "", Знач КлючРазрешенияЗапуска = "", - Знач КодЯзыка = "", Знач КодЯзыкаСеанса = "") Экспорт - - ТекущаяПроцедура = "Инициализация"; - ИспользоватьВременнуюБазу = Ложь; - Лог.Отладка("Заданы ПараметрыКоманды %1", ЗначениеЗаполнено(ПараметрыКоманды)); - - Если ЗначениеЗаполнено(ПараметрыКоманды) Тогда - ИспользоватьВременнуюБазу = ПараметрыКоманды["ДанныеПодключения"].ИспользоватьВременнуюБазу; - Лог.Отладка("ИспользоватьВременнуюБазу %1", ИспользоватьВременнуюБазу); - КонецЕсли; - - Если Не ИспользоватьВременнуюБазу Тогда - Ожидаем.Что(СтрокаПодключения, ТекущаяПроцедура + ": не задана строка подключения").Заполнено(); - - КаталогБазы = ОбщиеМетоды.УбратьКавычкиВокругПути(Сред(СтрокаПодключения, 3, СтрДлина(СтрокаПодключения) - 2)); - - УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогБазы); - УправлениеИБ.УстановитьПараметрыАвторизацииИБ(Пользователь, Пароль); - - КонецЕсли; - - // КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); - // УправлениеКонфигуратором.КаталогСборки(КаталогВременнойИБ); +Процедура Конструктор(Знач ДанныеПодключения, Знач ПараметрыКоманды) Экспорт - Если НЕ ПустаяСтрока(ВерсияПлатформы) Тогда - Если ЗначениеЗаполнено(ПараметрыКоманды) Тогда - Разрядность = ПараметрыКоманды["--bitness"]; - Разрядность = ОбщиеМетоды.РазрядностьПлатформы(Разрядность); - Лог.Отладка("Разрядность платформы 1С указана %1", Разрядность); + ВерсияПлатформы = ДанныеПодключения.ВерсияПлатформы; + Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда + Если ЗначениеЗаполнено(ДанныеПодключения.РазрядностьПлатформы) Тогда + Разрядность = ОбщиеМетоды.РазрядностьПлатформы(ДанныеПодключения.РазрядностьПлатформы); + Лог.Отладка("Разрядность платформы 1С указана %1", ДанныеПодключения.РазрядностьПлатформы); Иначе - Разрядность = Неопределено; + Разрядность = ОбщиеМетоды.РазрядностьПлатформы("x64x86"); Лог.Отладка("Разрядность платформы 1С не указана"); КонецЕсли; ПутьКIbcmd = ПутьКIbcmd(ВерсияПлатформы, Разрядность); УправлениеИБ.ПутьКПриложению(ПутьКIbcmd); КонецЕсли; + Лог.Информация("Используется ibcmd платформы %1", ТекущаяВерсияПлатформы()); - Если ЗначениеЗаполнено(КодЯзыка) Тогда - Локаль = КодЯзыка; + ИспользоватьВременнуюБазу = ДанныеПодключения.ИспользоватьВременнуюБазу; + Если ИспользоватьВременнуюБазу Тогда + Лог.Отладка("ИспользоватьВременнуюБазу %1", ИспользоватьВременнуюБазу); + Иначе + УстановитьКонтекст(ДанныеПодключения.ПутьБазы, + ДанныеПодключения.Пользователь, ДанныеПодключения.Пароль); КонецЕсли; - // Если ЗначениеЗаполнено(КодЯзыкаСеанса) Тогда - // УправлениеКонфигуратором.УстановитьКодЯзыкаСеанса(КодЯзыка); - // КонецЕсли; +КонецПроцедуры + +Процедура Деструктор() Экспорт + + Попытка + ВременныеФайлы.УдалитьФайл(ВременныйКаталогДанныхСервера); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Лог.Отладка(КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + + ВременныйКаталогДанныхСервера = ""; КонецПроцедуры @@ -128,17 +139,6 @@ #Область СлужебныеПроцедурыИФункции -Процедура ИнициализироватьОбъект() - - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - ВременныйКаталогДанныхСервера = ВременныеФайлы.СоздатьКаталог(); - Локаль = ""; - - УправлениеИБ = Новый УправлениеИБ; - УправлениеИБ.УстановитьПараметрыАвтономногоСервера(ВременныйКаталогДанныхСервера); - -КонецПроцедуры - Функция ПутьКIbcmd(ВерсияПлатформы, Разрядность) Если Не СтрНачинаетсяС(ВерсияПлатформы, "8.3") Тогда @@ -149,10 +149,40 @@ КонецФункции -#КонецОбласти +Функция ЛокальДляЗапуска() + + Если ЗначениеЗаполнено(Локаль) Тогда + Возврат Локаль; + Иначе + Возврат Неопределено; + КонецЕсли; + +КонецФункции + +Процедура ДобавитьБазуВСписокБаз(ИмяБазыВСписке, СтрокаСоединения) + + Если ПустаяСтрока(ИмяБазыВСписке) Тогда + Возврат; + КонецЕсли; -#Область ИнициализацияОбъекта + КорневойПутьПроекта = ПараметрыСистемы.КорневойПутьПроекта; -ИнициализироватьОбъект(); + ДопДанныеСпискаБаз = Новый Структура; + ДопДанныеСпискаБаз.Вставить("RootPath", КорневойПутьПроекта); + ДопДанныеСпискаБаз.Вставить("Version", УправлениеИБ.Версия()); + + ПолныйПуть = Новый Файл(КорневойПутьПроекта).ИмяБезРасширения; + + Попытка + МенеджерСпискаБаз.ДобавитьБазуВСписокБаз(СтрокаСоединения, ПолныйПуть, ДопДанныеСпискаБаз); + Исключение + Лог.Предупреждение("Добавление базы в список " + ОписаниеОшибки()); + КонецПопытки; + +КонецПроцедуры + +Функция ТекущаяВерсияПлатформы() + Возврат СокрЛП(УправлениеИБ.Версия()); +КонецФункции #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" index b97c76f9..66899181 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" @@ -98,8 +98,12 @@ Лог.Отладка("Разрядность платформы 1С не указана"); КонецЕсли; УправлениеКонфигуратором.ИспользоватьВерсиюПлатформы(ВерсияПлатформы, Разрядность); + Иначе + ПутьКПредприятию = Платформа1С.ПутьКПредприятию("8.3"); + УправлениеКонфигуратором.ПутьКПлатформе1С(ПутьКПредприятию); КонецЕсли; - + Лог.Информация("Используется версия платформы %1", ТекущаяВерсияПлатформы()); + Если Не ПустаяСтрока(КлючРазрешенияЗапуска) Тогда УправлениеКонфигуратором.УстановитьКлючРазрешенияЗапуска(КлючРазрешенияЗапуска); КонецЕсли; @@ -189,53 +193,25 @@ КонецПроцедуры -Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", - Знач ИмяБазыВСписке = "", Знач КодЯзыка = "") Экспорт - Лог.Отладка("Создаю файловую базу " + КаталогБазы); - - ФС.ОбеспечитьКаталог(КаталогБазы); - УдалитьФайлы(КаталогБазы, ПолучитьМаскуВсеФайлы()); - - ПараметрыЗапуска = Новый Массив; - ПараметрыЗапуска.Добавить("CREATEINFOBASE"); - ПараметрыЗапуска.Добавить("File=""" +КаталогБазы + """"); - ПараметрыЗапуска.Добавить("/Out""" +УправлениеКонфигуратором.ФайлИнформации() + """"); - Если ЗначениеЗаполнено(КодЯзыка) Тогда - ПараметрыЗапуска.Добавить("/L" +СокрЛП(КодЯзыка)); - КонецЕсли; - - Если ИмяБазыВСписке <> "" Тогда - ПараметрыЗапуска.Добавить("/AddInList""" + ИмяБазыВСписке + """"); - КонецЕсли; - Если ПутьКШаблону <> "" Тогда - ПараметрыЗапуска.Добавить("/UseTemplate""" + ПутьКШаблону + """"); - КонецЕсли; - - СтрокаЗапуска = ""; - Для Каждого Параметр Из ПараметрыЗапуска Цикл - СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; - КонецЦикла; - - Приложение = УправлениеКонфигуратором.ПутьКПлатформе1С(); - Если Найти(Приложение, " ") > 0 Тогда - Приложение = ОбщиеМетоды.ОбернутьПутьВКавычки(Приложение); - КонецЕсли; - Приложение = Приложение + " " + СтрокаЗапуска; - +Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", Знач ИмяБазыВСписке = "") Экспорт + Попытка - ОбщиеМетоды.ЗапуститьПроцесс(Приложение); + УправлениеКонфигуратором.СоздатьФайловуюБазу(КаталогБазы, ПутьКШаблону, ИмяБазыВСписке); + Текст = УправлениеКонфигуратором.ВыводКоманды(); + Если ЗначениеЗаполнено(Текст) Тогда + Лог.Информация(Текст); + КонецЕсли; Исключение - ИнфоОшибки = ИнформацияОбОшибке(); - ВызватьИсключение "Не удалось создать файловую ИБ: - |" + ПодробноеПредставлениеОшибки(ИнфоОшибки); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Лог.Ошибка(УправлениеКонфигуратором.ВыводКоманды()); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; - РезультатСообщение = ОбщиеМетоды.ПрочитатьФайлИнформации(УправлениеКонфигуратором.ФайлИнформации()); - Если НЕ (СтрНайти(РезультатСообщение, "успешно завершено") = 0 - ИЛИ СтрНайти(РезультатСообщение, "completed successfully") = 0) Тогда - - ВызватьИсключение "Результат работы не успешен: " + Символы.ПС + РезультатСообщение; + Если НЕ (СтрНайти(Текст, "успешно завершено") = 0 + ИЛИ СтрНайти(Текст, "completed successfully") = 0) Тогда + ВызватьИсключение "Результат работы не успешен"; + КонецЕсли; КонецПроцедуры @@ -1705,6 +1681,19 @@ КонецПроцедуры +Функция ТекущаяВерсияПлатформы() + + ПутьПредприятия = УправлениеКонфигуратором.ПутьКПлатформе1С(); + ШаблонВерсии = Новый РегулярноеВыражение("8(\.\d+){3}"); + ВсеСовпадения = ШаблонВерсии.НайтиСовпадения(ПутьПредприятия); + Если ВсеСовпадения.Количество() = 0 Тогда + ВызватьИсключение "Неопределена версия платформы!"; + КонецЕсли; + + Возврат ВсеСовпадения[0].Значение; + +КонецФункции + #КонецОбласти ПолучитьЛог(); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" index d524a5cb..24396b97 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" @@ -632,5 +632,19 @@ КонецПроцедуры +Функция ЭтоФайловаяИБ(СтрокаСоединения) Экспорт + Возврат СтрНачинаетсяС(СтрокаСоединения, "/F"); +КонецФункции + +Функция КаталогФайловойИБ(СтрокаСоединения) Экспорт + + Если ЭтоФайловаяИБ(СтрокаСоединения) Тогда + Возврат УбратьКавычкиВокругПути(Сред(СтрокаСоединения, 3)); + Иначе + Возврат ""; + КонецЕсли; + +КонецФункции + // из-за особенностей загрузки модуль ОбщиеМетоды грузится раньше ПараметрыСистемы, // поэтому сразу в конце кода модуля использовать ПараметрыСистемы нельзя From 12790eb7770d8bac881f405a380796e5fab3ad2e Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 5 Oct 2023 20:40:25 +0200 Subject: [PATCH 05/59] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=B3=D0=BB=D0=B0=D0=B2=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.os | 210 ----------------- ...20\266\320\265\320\275\320\270\321\217.os" | 215 ++++++++++++++++++ 2 files changed, 215 insertions(+), 210 deletions(-) diff --git a/src/main.os b/src/main.os index 3949701f..ee7a19f4 100644 --- a/src/main.os +++ b/src/main.os @@ -26,62 +26,6 @@ КонецПроцедуры -Функция СоответствиеПеременныхОкруженияПараметрамКоманд() - СоответствиеПеременных = Новый Соответствие(); - - СоответствиеПеременных.Вставить("RUNNER_IBCONNECTION", "--ibconnection"); - СоответствиеПеременных.Вставить("RUNNER_IBNAME", "--ibname"); - СоответствиеПеременных.Вставить("RUNNER_DBUSER", "--db-user"); - СоответствиеПеременных.Вставить("RUNNER_DBPWD", "--db-pwd"); - СоответствиеПеременных.Вставить("RUNNER_v8version", "--v8version"); - СоответствиеПеременных.Вставить("RUNNER_uccode", "--uccode"); - СоответствиеПеременных.Вставить("RUNNER_command", "--command"); - СоответствиеПеременных.Вставить("RUNNER_execute", "--execute"); - СоответствиеПеременных.Вставить("RUNNER_storage-user", "--storage-user"); - СоответствиеПеременных.Вставить("RUNNER_storage-pwd", "--storage-pwd"); - СоответствиеПеременных.Вставить("RUNNER_storage-ver", "--storage-ver"); - СоответствиеПеременных.Вставить("RUNNER_storage-name", "--storage-name"); - СоответствиеПеременных.Вставить("RUNNER_ROOT", "--root"); - СоответствиеПеременных.Вставить("RUNNER_WORKSPACE", "--workspace"); - СоответствиеПеременных.Вставить("RUNNER_PATHVANESSA", "--pathvanessa"); - СоответствиеПеременных.Вставить("RUNNER_PATHXUNIT", "--pathxunit"); - СоответствиеПеременных.Вставить("RUNNER_VANESSASETTINGS", "--vanessasettings"); - СоответствиеПеременных.Вставить("RUNNER_NOCACHEUSE", "--nocacheuse"); - СоответствиеПеременных.Вставить("RUNNER_LOCALE", "--locale"); - СоответствиеПеременных.Вставить("RUNNER_LANGUAGE", "--language"); - - СоответствиеПеременных.Вставить("RUNNER_V8VERSION", "--v8version"); - СоответствиеПеременных.Вставить("RUNNER_ADDITIONAL", "--additional"); - СоответствиеПеременных.Вставить("RUNNER_UCCODE", "--uccode"); - СоответствиеПеременных.Вставить("RUNNER_COMMAND", "--command"); - СоответствиеПеременных.Вставить("RUNNER_EXECUTE", "--execute"); - СоответствиеПеременных.Вставить("RUNNER_STORAGE_NAME", "--storage-name"); - СоответствиеПеременных.Вставить("RUNNER_STORAGE_USER", "--storage-user"); - СоответствиеПеременных.Вставить("RUNNER_STORAGE_PWD", "--storage-pwd"); - СоответствиеПеременных.Вставить("RUNNER_STORAGE_VER", "--storage-ver"); - СоответствиеПеременных.Вставить("RUNNER_TESTSPATH", "testsPath"); - - Возврат Новый ФиксированноеСоответствие(СоответствиеПеременных); -КонецФункции - -Функция НайтиКаталогТекущегоПроекта(Знач Путь) - Рез = ""; - Если ПустаяСтрока(Путь) Тогда - Попытка - Команда = Новый Команда; - Команда.УстановитьСтрокуЗапуска("git rev-parse --show-toplevel"); - Команда.УстановитьПравильныйКодВозврата(0); - Команда.Исполнить(); - Рез = СокрЛП(Команда.ПолучитьВывод()); - Исключение // BSLLS:MissingCodeTryCatchEx-off - // некуда выдавать ошибку, логи еще не доступны - КонецПопытки; - Иначе - Рез = Путь; - КонецЕсли; - Возврат Рез; -КонецФункции // НайтиКаталогТекущегоПроекта() - Функция ПолучитьПарсерКоманднойСтроки() Парсер = Новый ПарсерАргументовКоманднойСтроки(); @@ -136,8 +80,6 @@ ВывестиВерсию(); КонецЕсли; - ДополнитьЗначенияПараметров(Команда, ЗначенияПараметров); - ВключитьВыводОтладочногоЛогаВОтдельныйФайл(ЗначенияПараметров); Возврат МенеджерКомандПриложения.ВыполнитьКоманду(Команда, ЗначенияПараметров); @@ -150,158 +92,6 @@ ОбщиеМетоды.ЗагрузитьВанессаАДД(ДопТекстОшибки); КонецПроцедуры -Процедура ДополнитьЗначенияПараметров(Знач Команда, ЗначенияПараметров) - Перем ЗначениеПараметраФайлНастроек, ПутьКФайлуНастроекПоУмолчанию, ФайлОбщихНастроек; - Перем ЗначенияПараметровНизкийПриоритет, СоответствиеПеременных, НастройкиИзФайла; - - ТекущийКаталогПроекта = НайтиКаталогТекущегоПроекта( ЗначениеПараметра_КаталогПроекта(ЗначенияПараметров) ); - - ПараметрыСистемы.КорневойПутьПроекта = ТекущийКаталогПроекта; - - ПутьКФайлуНастроекПоУмолчанию = ОбъединитьПути(ТекущийКаталогПроекта, ОбщиеМетоды.ИмяФайлаНастроек()); - - ЗначениеПараметраФайлНастроек = ЗначенияПараметров["--settings"]; - Если ЗначениеЗаполнено(ЗначениеПараметраФайлНастроек) Тогда - ФайлОбщихНастроек = Новый Файл(ОбщиеМетоды.ПолныйПуть(ЗначениеПараметраФайлНастроек)); - Ожидаем.Что(ФайлОбщихНастроек.Существует(), - СтрШаблон("Ожидаем, что указанный в --settings <%1> файл по пути <%2> существует, а его нет!", - ЗначениеПараметраФайлНастроек, - ФайлОбщихНастроек.ПолноеИмя) - ).ЭтоИстина(); - КонецЕсли; - - НастройкиИзФайла = ОбщиеМетоды.ПрочитатьНастройкиФайлJSON(ТекущийКаталогПроекта, - ЗначениеПараметраФайлНастроек, ПутьКФайлуНастроекПоУмолчанию); - - ЗначенияПараметровНизкийПриоритет = Новый Соответствие; - - Если ЗначениеЗаполнено(НастройкиИзФайла) Тогда - ОбщиеМетоды.ДополнитьАргументыИзФайлаНастроек(Команда, ЗначенияПараметровНизкийПриоритет, НастройкиИзФайла); - КонецЕсли; - - СоответствиеПеременных = СоответствиеПеременныхОкруженияПараметрамКоманд(); - - ОбщиеМетоды.ЗаполнитьЗначенияИзПеременныхОкружения(ЗначенияПараметровНизкийПриоритет, СоответствиеПеременных); - - ОбщиеМетоды.ДополнитьСоответствиеСУчетомПриоритета(ЗначенияПараметров, ЗначенияПараметровНизкийПриоритет); - - // на случай переопределения этой настройки повторная установка - ТекущийКаталогПроекта = НайтиКаталогТекущегоПроекта(ЗначениеПараметра_КаталогПроекта(ЗначенияПараметров)); - - ПараметрыСистемы.КорневойПутьПроекта = ТекущийКаталогПроекта; - - ПроверитьНаличиеСлешаКакПоследнегоСимволаВПараметрах(ЗначенияПараметров); - ДобавитьДанныеПодключения(ЗначенияПараметров); - - НастройкиДля1С.ДобавитьШаблоннуюПеременную("workspaceRoot", ТекущийКаталогПроекта); - НастройкиДля1С.ДобавитьШаблоннуюПеременную("runnerRoot", ОбщиеМетоды.КаталогПроекта()); - - НастройкиДля1С.ЗаменитьШаблонныеПеременныеВКоллекции(ЗначенияПараметров); - - ПроверитьНаличиеСлешаКакПоследнегоСимволаВПараметрах(ЗначенияПараметров); - -КонецПроцедуры // ДополнитьЗначенияПараметров - -Процедура ДобавитьДанныеПодключения(ЗначенияПараметров) - ИмяСтрокаСоединения = "--ibconnection"; - ИмяСтрокаСоединенияСтарое = "--ibname"; - СтрокаПодключения = ЗначенияПараметров[ИмяСтрокаСоединения]; - ИмяБазы = ЗначенияПараметров[ИмяСтрокаСоединенияСтарое]; - - Если ЗначениеЗаполнено(СтрокаПодключения) И ЗначениеЗаполнено(ИмяБазы) Тогда - ВызватьИсключение СтрШаблон("Запрещено одновременно задавать ключи %1 и %2", ИмяСтрокаСоединения, "--ibname"); - КонецЕсли; - - Если ЗначениеЗаполнено(СтрокаПодключения) Тогда - ЗначенияПараметров.Вставить(ИмяСтрокаСоединенияСтарое, СтрокаПодключения); - Иначе - ЗначенияПараметров.Вставить(ИмяСтрокаСоединения, ИмяБазы); - - Если ЗначениеЗаполнено(ИмяБазы) Тогда - Лог.Предупреждение("------------------------------------------------------------------"); - Лог.Предупреждение("Параметр --ibname устарел. Используйте --ibconnection вместо него!"); - Лог.Предупреждение("------------------------------------------------------------------"); - КонецЕсли; - КонецЕсли; - - Если ЗначениеЗаполнено(ЗначенияПараметров[ИмяСтрокаСоединенияСтарое]) Тогда - ЗначенияПараметров.Вставить(ИмяСтрокаСоединенияСтарое, - ОбщиеМетоды.ПереопределитьПолныйПутьВСтрокеПодключения(ЗначенияПараметров[ИмяСтрокаСоединенияСтарое])); - - ИсходнаяСтрокаПодключения = ЗначенияПараметров[ИмяСтрокаСоединенияСтарое]; - - НоваяСтрокаПодключения = МенеджерСпискаБаз.ПолучитьСтрокуПодключенияСКэшем( - ИсходнаяСтрокаПодключения, - ЗначенияПараметров["--nocacheuse"]); - - ЗначенияПараметров.Вставить(ИмяСтрокаСоединенияСтарое, НоваяСтрокаПодключения); - ЗначенияПараметров.Вставить(ИмяСтрокаСоединения, ИсходнаяСтрокаПодключения); - - КонецЕсли; - - ЗначенияПараметров.Вставить("ДанныеПодключения", ДанныеПодключения(ЗначенияПараметров)); -КонецПроцедуры - -Функция ДанныеПодключения(ЗначенияПараметров) - СтруктураПодключения = Новый Структура; - - // здесь может находиться и имя базы и строка подключения - СтруктураПодключения.Вставить("СтрокаПодключения", ЗначенияПараметров["--ibname"]); - - // если ИспользоватьВременнуюБазу, тогда используется временная база, - // что важно для некоторых команд, например, при работе с хранилищем - СтруктураПодключения.Вставить("ИспользоватьВременнуюБазу", Ложь); - - // здесь может находиться только строка подключения в виде пути к базе - СтруктураПодключения.Вставить("ПутьБазы", ЗначенияПараметров["--ibconnection"]); - - СтруктураПодключения.Вставить("Пользователь", ЗначенияПараметров["--db-user"]); - СтруктураПодключения.Вставить("Пароль", ЗначенияПараметров["--db-pwd"]); - СтруктураПодключения.Вставить("КодЯзыка", ЗначенияПараметров["--language"]); - СтруктураПодключения.Вставить("КодЯзыкаСеанса", ЗначенияПараметров["--locale"]); - СтруктураПодключения.Вставить("ВерсияПлатформы", ЗначенияПараметров["--v8version"]); - СтруктураПодключения.Вставить("РазрядностьПлатформы", ЗначенияПараметров["--bitness"]); - - Рез = Новый Структура; - Для каждого КлючЗначение Из СтруктураПодключения Цикл - Значение = КлючЗначение.Значение; - Если Значение = Неопределено Тогда - Значение = ""; - КонецЕсли; - Рез.Вставить(КлючЗначение.Ключ, Значение); - КонецЦикла; - - Возврат Новый ФиксированнаяСтруктура(Рез); -КонецФункции - -Функция ЗначениеПараметра_КаталогПроекта(Знач ЗначенияПараметров) - Рез = ЗначенияПараметров["--root"]; - Если Не ЗначениеЗаполнено(Рез) Тогда - Рез = ЗначенияПараметров["--workspace"]; - Если Не ЗначениеЗаполнено(Рез) Тогда - Рез = ""; - КонецЕсли; - КонецЕсли; - Возврат Рез; -КонецФункции - -Процедура ПроверитьНаличиеСлешаКакПоследнегоСимволаВПараметрах(ЗначенияПараметров) - Если Не ПараметрыСистемы.ЭтоWindows Тогда - Возврат; - КонецЕсли; - РегулярноеВыражение = Новый РегулярноеВыражение("[\\\/]\s*$"); - РегулярноеВыражение.Многострочный = Истина; - Для каждого КлючЗначение Из ЗначенияПараметров Цикл - Значение = КлючЗначение.Значение; - Если ЗначениеЗаполнено(Значение) И РегулярноеВыражение.Совпадает(Значение) Тогда - ВызватьИсключение СтрШаблон( - "Запрещено использование слешей как последних символов в параметрах.%1" + - " Это может привести к проблемам при запуске в командной строке.%1%1 Ключ %2 = %3", - Символы.ПС, КлючЗначение.Ключ, Значение); - КонецЕсли; - КонецЦикла; -КонецПроцедуры - Процедура ВключитьВыводОтладочногоЛогаВОтдельныйФайл(Знач ЗначенияПараметров) ПутьФайлаВывода = ""; diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 19d5de96..12ead86b 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -59,6 +59,7 @@ Функция ВыполнитьКоманду(Знач ИмяКоманды, Знач ПараметрыКоманды) Экспорт Команда = ПолучитьКоманду(ИмяКоманды); + ДополнитьЗначенияПараметров(ИмяКоманды, ПараметрыКоманды); КодВозврата = Команда.ВыполнитьКоманду(ПараметрыКоманды, ДополнительныеПараметры); Возврат КодВозврата; @@ -109,3 +110,217 @@ Возврат Число(Команда); КонецФункции // КодВозвратаКоманды + +#Область СлужебныеПроцедурыИФункции +Функция СоответствиеПеременныхОкруженияПараметрамКоманд() + СоответствиеПеременных = Новый Соответствие(); + + СоответствиеПеременных.Вставить("RUNNER_IBCONNECTION", "--ibconnection"); + СоответствиеПеременных.Вставить("RUNNER_IBNAME", "--ibname"); + СоответствиеПеременных.Вставить("RUNNER_DBUSER", "--db-user"); + СоответствиеПеременных.Вставить("RUNNER_DBPWD", "--db-pwd"); + СоответствиеПеременных.Вставить("RUNNER_v8version", "--v8version"); + СоответствиеПеременных.Вставить("RUNNER_uccode", "--uccode"); + СоответствиеПеременных.Вставить("RUNNER_command", "--command"); + СоответствиеПеременных.Вставить("RUNNER_execute", "--execute"); + СоответствиеПеременных.Вставить("RUNNER_storage-user", "--storage-user"); + СоответствиеПеременных.Вставить("RUNNER_storage-pwd", "--storage-pwd"); + СоответствиеПеременных.Вставить("RUNNER_storage-ver", "--storage-ver"); + СоответствиеПеременных.Вставить("RUNNER_storage-name", "--storage-name"); + СоответствиеПеременных.Вставить("RUNNER_ROOT", "--root"); + СоответствиеПеременных.Вставить("RUNNER_WORKSPACE", "--workspace"); + СоответствиеПеременных.Вставить("RUNNER_PATHVANESSA", "--pathvanessa"); + СоответствиеПеременных.Вставить("RUNNER_PATHXUNIT", "--pathxunit"); + СоответствиеПеременных.Вставить("RUNNER_VANESSASETTINGS", "--vanessasettings"); + СоответствиеПеременных.Вставить("RUNNER_NOCACHEUSE", "--nocacheuse"); + СоответствиеПеременных.Вставить("RUNNER_LOCALE", "--locale"); + СоответствиеПеременных.Вставить("RUNNER_LANGUAGE", "--language"); + + СоответствиеПеременных.Вставить("RUNNER_V8VERSION", "--v8version"); + СоответствиеПеременных.Вставить("RUNNER_ADDITIONAL", "--additional"); + СоответствиеПеременных.Вставить("RUNNER_UCCODE", "--uccode"); + СоответствиеПеременных.Вставить("RUNNER_COMMAND", "--command"); + СоответствиеПеременных.Вставить("RUNNER_EXECUTE", "--execute"); + СоответствиеПеременных.Вставить("RUNNER_STORAGE_NAME", "--storage-name"); + СоответствиеПеременных.Вставить("RUNNER_STORAGE_USER", "--storage-user"); + СоответствиеПеременных.Вставить("RUNNER_STORAGE_PWD", "--storage-pwd"); + СоответствиеПеременных.Вставить("RUNNER_STORAGE_VER", "--storage-ver"); + СоответствиеПеременных.Вставить("RUNNER_TESTSPATH", "testsPath"); + + Возврат Новый ФиксированноеСоответствие(СоответствиеПеременных); +КонецФункции + +Функция НайтиКаталогТекущегоПроекта(Знач Путь) + Рез = ""; + Если ПустаяСтрока(Путь) Тогда + Попытка + Команда = Новый Команда; + Команда.УстановитьСтрокуЗапуска("git rev-parse --show-toplevel"); + Команда.УстановитьПравильныйКодВозврата(0); + Команда.Исполнить(); + Рез = СокрЛП(Команда.ПолучитьВывод()); + Исключение // BSLLS:MissingCodeTryCatchEx-off + // некуда выдавать ошибку, логи еще не доступны + КонецПопытки; + Иначе + Рез = Путь; + КонецЕсли; + Возврат Рез; +КонецФункции // НайтиКаталогТекущегоПроекта() + +Процедура ДополнитьЗначенияПараметров(Знач Команда, ЗначенияПараметров) + Перем ЗначениеПараметраФайлНастроек, ПутьКФайлуНастроекПоУмолчанию, ФайлОбщихНастроек; + Перем ЗначенияПараметровНизкийПриоритет, СоответствиеПеременных, НастройкиИзФайла; + + ТекущийКаталогПроекта = НайтиКаталогТекущегоПроекта( ЗначениеПараметра_КаталогПроекта(ЗначенияПараметров) ); + + ПараметрыСистемы.КорневойПутьПроекта = ТекущийКаталогПроекта; + + ПутьКФайлуНастроекПоУмолчанию = ОбъединитьПути(ТекущийКаталогПроекта, ОбщиеМетоды.ИмяФайлаНастроек()); + + ЗначениеПараметраФайлНастроек = ЗначенияПараметров["--settings"]; + Если ЗначениеЗаполнено(ЗначениеПараметраФайлНастроек) Тогда + ФайлОбщихНастроек = Новый Файл(ОбщиеМетоды.ПолныйПуть(ЗначениеПараметраФайлНастроек)); + Ожидаем.Что(ФайлОбщихНастроек.Существует(), + СтрШаблон("Ожидаем, что указанный в --settings <%1> файл по пути <%2> существует, а его нет!", + ЗначениеПараметраФайлНастроек, + ФайлОбщихНастроек.ПолноеИмя) + ).ЭтоИстина(); + КонецЕсли; + + НастройкиИзФайла = ОбщиеМетоды.ПрочитатьНастройкиФайлJSON(ТекущийКаталогПроекта, + ЗначениеПараметраФайлНастроек, ПутьКФайлуНастроекПоУмолчанию); + + ЗначенияПараметровНизкийПриоритет = Новый Соответствие; + + Если ЗначениеЗаполнено(НастройкиИзФайла) Тогда + ОбщиеМетоды.ДополнитьАргументыИзФайлаНастроек(Команда, ЗначенияПараметровНизкийПриоритет, НастройкиИзФайла); + КонецЕсли; + + СоответствиеПеременных = СоответствиеПеременныхОкруженияПараметрамКоманд(); + + ОбщиеМетоды.ЗаполнитьЗначенияИзПеременныхОкружения(ЗначенияПараметровНизкийПриоритет, СоответствиеПеременных); + + ОбщиеМетоды.ДополнитьСоответствиеСУчетомПриоритета(ЗначенияПараметров, ЗначенияПараметровНизкийПриоритет); + + // на случай переопределения этой настройки повторная установка + ТекущийКаталогПроекта = НайтиКаталогТекущегоПроекта(ЗначениеПараметра_КаталогПроекта(ЗначенияПараметров)); + + ПараметрыСистемы.КорневойПутьПроекта = ТекущийКаталогПроекта; + + ПроверитьНаличиеСлешаКакПоследнегоСимволаВПараметрах(ЗначенияПараметров); + ДобавитьДанныеПодключения(ЗначенияПараметров); + + НастройкиДля1С.ДобавитьШаблоннуюПеременную("workspaceRoot", ТекущийКаталогПроекта); + НастройкиДля1С.ДобавитьШаблоннуюПеременную("runnerRoot", ОбщиеМетоды.КаталогПроекта()); + + НастройкиДля1С.ЗаменитьШаблонныеПеременныеВКоллекции(ЗначенияПараметров); + + ПроверитьНаличиеСлешаКакПоследнегоСимволаВПараметрах(ЗначенияПараметров); + +КонецПроцедуры // ДополнитьЗначенияПараметров + +Процедура ДобавитьДанныеПодключения(ЗначенияПараметров) + + Лог = ДополнительныеПараметры.Лог; + + ИмяСтрокаСоединения = "--ibconnection"; + ИмяСтрокаСоединенияСтарое = "--ibname"; + СтрокаПодключения = ЗначенияПараметров[ИмяСтрокаСоединения]; + ИмяБазы = ЗначенияПараметров[ИмяСтрокаСоединенияСтарое]; + + Если ЗначениеЗаполнено(СтрокаПодключения) И ЗначениеЗаполнено(ИмяБазы) Тогда + ВызватьИсключение СтрШаблон("Запрещено одновременно задавать ключи %1 и %2", ИмяСтрокаСоединения, "--ibname"); + КонецЕсли; + + Если ЗначениеЗаполнено(СтрокаПодключения) Тогда + ЗначенияПараметров.Вставить(ИмяСтрокаСоединенияСтарое, СтрокаПодключения); + Иначе + ЗначенияПараметров.Вставить(ИмяСтрокаСоединения, ИмяБазы); + + Если ЗначениеЗаполнено(ИмяБазы) Тогда + Лог.Предупреждение("------------------------------------------------------------------"); + Лог.Предупреждение("Параметр --ibname устарел. Используйте --ibconnection вместо него!"); + Лог.Предупреждение("------------------------------------------------------------------"); + КонецЕсли; + КонецЕсли; + + Если ЗначениеЗаполнено(ЗначенияПараметров[ИмяСтрокаСоединенияСтарое]) Тогда + ЗначенияПараметров.Вставить(ИмяСтрокаСоединенияСтарое, + ОбщиеМетоды.ПереопределитьПолныйПутьВСтрокеПодключения(ЗначенияПараметров[ИмяСтрокаСоединенияСтарое])); + + ИсходнаяСтрокаПодключения = ЗначенияПараметров[ИмяСтрокаСоединенияСтарое]; + + НоваяСтрокаПодключения = МенеджерСпискаБаз.ПолучитьСтрокуПодключенияСКэшем( + ИсходнаяСтрокаПодключения, + ЗначенияПараметров["--nocacheuse"]); + + ЗначенияПараметров.Вставить(ИмяСтрокаСоединенияСтарое, НоваяСтрокаПодключения); + ЗначенияПараметров.Вставить(ИмяСтрокаСоединения, ИсходнаяСтрокаПодключения); + + КонецЕсли; + + ЗначенияПараметров.Вставить("ДанныеПодключения", ДанныеПодключения(ЗначенияПараметров)); +КонецПроцедуры + +Функция ДанныеПодключения(ЗначенияПараметров) + СтруктураПодключения = Новый Структура; + + // здесь может находиться и имя базы и строка подключения + СтруктураПодключения.Вставить("СтрокаПодключения", ЗначенияПараметров["--ibname"]); + + // если ИспользоватьВременнуюБазу, тогда используется временная база, + // что важно для некоторых команд, например, при работе с хранилищем + СтруктураПодключения.Вставить("ИспользоватьВременнуюБазу", Ложь); + + // здесь может находиться только строка подключения в виде пути к базе + СтруктураПодключения.Вставить("ПутьБазы", ЗначенияПараметров["--ibconnection"]); + + СтруктураПодключения.Вставить("Пользователь", ЗначенияПараметров["--db-user"]); + СтруктураПодключения.Вставить("Пароль", ЗначенияПараметров["--db-pwd"]); + СтруктураПодключения.Вставить("КодЯзыка", ЗначенияПараметров["--language"]); + СтруктураПодключения.Вставить("КодЯзыкаСеанса", ЗначенияПараметров["--locale"]); + СтруктураПодключения.Вставить("ВерсияПлатформы", ЗначенияПараметров["--v8version"]); + СтруктураПодключения.Вставить("РазрядностьПлатформы", ЗначенияПараметров["--bitness"]); + + Рез = Новый Структура; + Для каждого КлючЗначение Из СтруктураПодключения Цикл + Значение = КлючЗначение.Значение; + Если Значение = Неопределено Тогда + Значение = ""; + КонецЕсли; + Рез.Вставить(КлючЗначение.Ключ, Значение); + КонецЦикла; + + Возврат Новый ФиксированнаяСтруктура(Рез); +КонецФункции + +Функция ЗначениеПараметра_КаталогПроекта(Знач ЗначенияПараметров) + Рез = ЗначенияПараметров["--root"]; + Если Не ЗначениеЗаполнено(Рез) Тогда + Рез = ЗначенияПараметров["--workspace"]; + Если Не ЗначениеЗаполнено(Рез) Тогда + Рез = ""; + КонецЕсли; + КонецЕсли; + Возврат Рез; +КонецФункции + +Процедура ПроверитьНаличиеСлешаКакПоследнегоСимволаВПараметрах(ЗначенияПараметров) + Если Не ПараметрыСистемы.ЭтоWindows Тогда + Возврат; + КонецЕсли; + РегулярноеВыражение = Новый РегулярноеВыражение("[\\\/]\s*$"); + РегулярноеВыражение.Многострочный = Истина; + Для каждого КлючЗначение Из ЗначенияПараметров Цикл + Значение = КлючЗначение.Значение; + Если ЗначениеЗаполнено(Значение) И РегулярноеВыражение.Совпадает(Значение) Тогда + ВызватьИсключение СтрШаблон( + "Запрещено использование слешей как последних символов в параметрах.%1" + + " Это может привести к проблемам при запуске в командной строке.%1%1 Ключ %2 = %3", + Символы.ПС, КлючЗначение.Ключ, Значение); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +#КонецОбласти From f182ecc017ba86950feccedc28ea103d993cac55 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sat, 7 Oct 2023 09:07:08 +0200 Subject: [PATCH 06/59] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D1=8B=20=D0=B4=D0=B8=D0=B0=D0=B3=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B5=20=D1=81?= =?UTF-8?q?=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=20?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=D0=B5=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4?= =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...203\320\266\320\265\320\275\320\270\321\217.os" | 14 +++++++++----- ...276\320\266\320\265\320\275\320\270\321\217.os" | 5 +++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index 50a7d928..b4e2b109 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -162,12 +162,13 @@ ИначеЕсли ПараметрыХранилища.РежимОбновления Тогда ЗагрузкаИзХранилища(МенеджерСборки, ПараметрыХранилища); - ОбновитьКонфигурациюБД(МенеджерСборки, РежимРазработчика, РежимыРеструктуризации); Иначе Лог.Информация("Создана пустая база данных."); КонецЕсли; + + ОбновитьКонфигурациюБД(МенеджерСборки, РежимРазработчика, РежимыРеструктуризации); МенеджерСборки.Деструктор(); @@ -195,7 +196,7 @@ Процедура ЗагрузкаИзФайлаКонфигурации(МенеджерСборки) - Лог.Информация("Запускаем загрузку конфигурации из cf-файла"); + Лог.Информация("Запускаем загрузку конфигурации из cf-файла..."); МенеджерВерсий = Новый МенеджерВерсийФайлов1С(); ПутьКФайлуСВерсией = МенеджерВерсий.НайтиФайлСВерсией(ПутьКФайлуКонфигурации); @@ -207,12 +208,13 @@ МенеджерСборки.Деструктор(); ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; + Лог.Информация("Создана информационная база из файла конфигурации."); КонецПроцедуры Процедура ЗагрузкаИзИсходников(МенеджерСборки) - Лог.Информация("Запускаю загрузку конфигурации из исходников"); + Лог.Информация("Запускаем загрузку конфигурации из исходников..."); Попытка СписокФайлов = ""; МенеджерСборки.СобратьИзИсходниковТекущуюКонфигурацию(ПутьКИсходникам, СписокФайлов, Ложь); @@ -221,12 +223,13 @@ МенеджерСборки.Деструктор(); ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; + Лог.Информация("Создана информационная база из исходников."); КонецПроцедуры Процедура ЗагрузкаИзФайлаВыгрузки(МенеджерСборки) - Лог.Информация("Загружаем dt " + ПутьКФайлуВыгрузки); + Лог.Информация("Запускаем загрузку конфигурации из dt-файла..."); Попытка МенеджерСборки.ЗагрузитьИнфобазуИзФайла(ПутьКФайлуВыгрузки); Исключение @@ -234,6 +237,7 @@ МенеджерСборки.Деструктор(); ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; + Лог.Информация("Создана информационная база из файла выгрузки."); КонецПроцедуры @@ -269,7 +273,7 @@ Процедура ДобавитьБазуВСписокБаз(НеДобавлятьВСписокБаз, ВерсияПлатформы, СтрокаПодключения) - Если НЕ НеДобавлятьВСписокБаз Тогда + Если НеДобавлятьВСписокБаз Тогда Возврат; КонецЕсли; diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 12ead86b..fcbc1ed4 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -92,6 +92,10 @@ КонецПроцедуры +Функция Лог() Экспорт + Возврат ДополнительныеПараметры.Лог; +КонецФункции + /////////////////////////////////////////////////////////////////// Функция РезультатыКоманд() Экспорт @@ -112,6 +116,7 @@ КонецФункции // КодВозвратаКоманды #Область СлужебныеПроцедурыИФункции + Функция СоответствиеПеременныхОкруженияПараметрамКоманд() СоответствиеПеременных = Новый Соответствие(); From e4d58c549bc7fabb939dfeb62a11915f83c2ace2 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sat, 7 Oct 2023 09:21:20 +0200 Subject: [PATCH 07/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=BE=D0=BA=D1=80=D1=83=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/fixtures/1Cv8.dt | Bin 0 -> 3728 bytes tests/fixtures/1cv8.cf | Bin 0 -> 15538 bytes tests/xunits/init-dev.os | 100 ++++++++++++++++++ ...20\264\320\233\320\276\320\263\320\260.os" | 38 +++++++ ...20\276\320\274\320\260\320\275\320\264.os" | 87 +++++++++++++++ 5 files changed, 225 insertions(+) create mode 100644 tests/fixtures/1Cv8.dt create mode 100644 tests/fixtures/1cv8.cf create mode 100644 tests/xunits/init-dev.os create mode 100644 "tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os" create mode 100644 "tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" diff --git a/tests/fixtures/1Cv8.dt b/tests/fixtures/1Cv8.dt new file mode 100644 index 0000000000000000000000000000000000000000..e0c3d43e133bf0e6562315f7e666d330c467aff0 GIT binary patch literal 3728 zcmV;B4sY=>LrFqJZE!|2?OJ(wQ&ko(*frg;ECM>AC<1LDY0}NTO*e*(^2W@sDSH;2spB|0t$%BD1HG(T0n#p0humx_Qfv zWoN=`?#~FH*n9s~-{n;gDgDd3qhIMZn(g7U$B(tlUViU>ig;|q?5@4}WXe?oPVfEG zvCosQ+56OpwVOj@j{ns7^M(Tj_HSn8n3m04{^GK>>2tz2KJfG;>y#nyp15pl(;Cn6 zwC^W9Fss*kbXVNyQ!Agmv+K=$oA!FT%2!+oMpac=S>m-b^IyBmo7R1sF89Da)89+q z|5V}0mDx`$C|Y){W&D$`teCdyy5y5a+gs)#jTQOVAIY0FHghzau;4>Byk^Jxn{0Pn zf8<2x!_#Z=BkLxfobvR$?OVqj80Q@G(BO6BR<1s7vAv&~x8#Ra2mhUsb;Nn!ZNFSS z+~j?I{AZ`vWm}&8rVxpSwG%1?wtLWbu)W^=s7$jm3m^v&*jZ`96!?j#<4H#G`vQf)O|8S1!3{)Tn0zjc-0n%y%y=dI=$Yd^WY z`_@t691ENJ^1aV@RX_Lo8wY$Yny^x%%izSExWQ72V+JRVHyN-}%xEbA=3=a%kR$e2#F<~PNUxVy#e_=2 z4bY-E)>v#REHGmhL!qgt$zW;10fc378jLQJ33C=>rjkoBH;%aYv2+(r2@`!@K!gts|n zXKM?b0XPFFf@TQ(BCJPIi0YyY$Nipq&|KEsOo3*MfwMoBaYa`)tn7RVhHHHc;lbP& zvL8j`0t7*2((h$rqmR+`BF$E~2*&1aMwZzP7hzlMf9d9V<8vrLU!ntz3jBqy(c9cb z={ocSXX{wpXmS>pG!+?O{udhHvTQPx;<(9BR0_;4tgysYfZ=@NM=clH4#T`Zy#KDB z4}8mbzF+gn;Te;9Pp_}+>76nEpWp55S)H`&$CR>c{eSMuOBg?N`og@GX)o)|&*{>7 zzdN_(WYL0YjtR@B9{OR}cT47!4cXN2)@LsnM&myn^d7&x!=G{O!UL~=@HzPF_{qI& z{NHoHmtTCdf9KgJX66nXmNWf*dUKfl(Y4v9)6oadSUZNniA!^PG>q(sw3S5PH?7@Z5V@< zV>H-WwmUDBUW?v30K>p^pxbJKf$gC|)qufVu({TG7r>duM!PMreRp|VRv-}2uMX(D zyF1z(+qzc=0%4ua=>W|h05hwtW^te^lp?&fyOb*7RG}Fa22kK=j~fv8fFO%US*U5$ zcOMBUb%NVj<=c*6AS`==Lir6urI+Ak%JA$A@IZ_Y20jcWqSqWi6^JeDk72R`Rr)H9)t>)qX0}G?0Vz~ejS4CCo z6Bik>DZ96cY^!-Buv-@z$c0}Y2(TLYVic3y#%&RpF&gbnHElX^jZh%e3iaJRp@i~Qg#ANSVStqbX0`gP7*>aB zHd{%L2adGF=HvZr_MOetdf=0(g!cQn?0aTHE~jFYg3i=_I{Qv%dL`wtF$y-*`q}I| zo0+y&Zx!6e6nv)l^VxSkhgMJ&N!3v#4rm(oR`8n9&+Gq?r;YVhsAi+Qm>YqHd}j9Z z*>^s(;9-p;Q<0!q{eBz z@t35O2Z>}@LAb>eGzUG1niFl#$i`%JfkVyX4pu4`uy-`iuo;D|ZPwYG;!T)Vlx(E{ zq~7L?an_N~_&uQvo&+)MU?(fk!b((h1eIwivZzSQLFfW13Yn>>%}T;N=I$LdDFS5< zyajk7t}J38l{|;>Olrb9PQn>b&$}qF5yngbqeP^PQ+A@ldbxnYm zpBs^&$&~~}qlHbotR^8(QQCE!oyd?;ctbVei7wG4ZbX=@gh&-|ww%WN!j48}*d>pQ zW-@Yv5^rr$>qi@sKvb+k7DY{B1QhNM5atzu&QOGtZ~`ZenBF~nS2UN=f0gZF)ufYf z1FM^Ws~Ot#Di+`z8PLh_zz*SBO?IJN#l%akcyTw78lvrAA2G;JUJ~m;Q>_oprIB#yiLbV4pd`ThQqz=DXM-lI`5VBRpkg37 z?M{~a&+?io?y?c}li|UNq*`zD13xfAzgNPf)`^dbG&z%KliPAclIuvCVAOk6I4Sy; zhfocZZS&SdeK;Kzep$g6E7@12;^hkHLYAQ{xGJzaEtD>_+ad!<7y80k<5XYk4i;U< z?4iv`vBVP-Iw+DPRi}zf6!S;BAfzEdrQhw2CQL%tg*=O}Jzg$n8z{_6V>qKNTjRNV z;LhC@2;zx)_~)SujK**kSE|_IE}&+TRkNoWk1G`8QH3@xMlmYCgKNX3q*R{<@O(iE z&ud7E)+QgE9#N7mW~zx@VNm+Ou9!jT>{4y0Dv|AU8P51Ix3clVi5DZXaGIT#pI#_U zW|VQMQR_vex{pyU3r9jDWj5?C4k!mp81x+~J`{nl5_&c|WLAX-Jp{c%wxrPrs%ejI zaCNLvP}JR{;NBK%6wZ?oIngo#?s*DRsvH=u@Ltvg52e#6f&tu`2|?t-r8*XfzT`4O zI3XIs^GsIt;(75CH_6&U;rxy>`nTV45@AO2&aVFLouyc(5MCF}`@811_m{(ZpXliSX-7PN~MR~c3ES6mG)*LV#7&-og!`yQeiEF=KDPKfnjA)aWoWP-fFi6 z#hMA$$gRjTXBAfXJPMZcg2d^(SoF~)^$^|iUDc0Z91RVM*?29SjR_6pT;SE#Rq>Na zn$Z+bs!yCiLz7@7<-sUuXDqanB)rvHN~~+4Fj`xPDeg$Nv!beMbOy;DtStbaOZz?0 z)420^N*4P?zl;gSaFhZaq4aShM#ifjH_Nice6@*QYf@nl*Qoj+I0Epnh^h=H{peGC zTDUqb0j8+L8%FT5V<@WNr+ u?u3sKS;FW&!}Jfd;~5tN;K5+izHo0|1By+Rt__ z0N@;GApC+C08j@S2><@c{;vKFGw_QZoXo$`gBb|^M32D3hi=XhaqOJHQlR z46p#009XOc00w|L@Gu3oG60PWh>d}W8;Dr}oInIRn*s0Q0`UCoX90W#>IW*n56@-% z`|u#}r{O!a#$zdXP&=#HnUwX$hK<7sx9H*mAw9zbVqJ{}tU1uoBIrEdfk%$Xzbe|vL`dQSXctN7N+!&!8W zAnr(?R0Ugx<$S;9-PMQVFJC5^p1tlLkBJRB1MZKH&kY0auF@8TI{ls>K8%f%QR*2X zbj1 zgS+!bW2@oQ*PWrutg%~Bp}XTdmuxsoKdy(U$AAXuBl7#Tq5Xopc}n~G_V0)_k&DZ= z?&F_@sWFvf&~nl;%WB>#AINZR`w76j+ZA6G>D|aZzQ6Esl6A)NAeTp}A-k+k@C=%3 zCCfX?wVhh&9b;mQgWz9yKKdANw&DL&zvkxf`iAOmKk2w{vy%(!L>3iJ(*6&mW0chWyIKAU$XP+^?CvCph^VfJ#2=-)koa<*yBUjQ&hq+Q!Du+2M?Y zNjb9=ooI!$F|%T(G)*be~ukygu}}TlvCJ_9&~*wWc=;f#!yT zqYW>MKvn!o(0yW0)|D66K*sh0jUg{zOpXKc=p#&O#bW8mtylSULMv;NYG_h_H6)$Y&x^2ZGS~2DEwSBO+gP9qsLI^f%7mVz)XxTpLl+}@VJI2pGLf^AAXq~fZ?&I_C)`O!23NsbSr@u(D z%i=}zt(yJ9vSlmwL4^-h$MQID@^kZ{p!!rM7c<3};+w!a=VS5J6AVozgXx9EO|tJt zi3sh>6<1Ta9Txjkb*8d=F*VXiSYUx#j`-lxDe5jBEOAFm5YXz(ScLP;jHTZ?N#kKQ zuhFtcOlXn7@YVEDPD!=TIOZ4*eUAxzog3zNo8O$!J3AK=NK{=^kIQ2xvR9G7MWOjY z@hY$_kzCO3N>eMX)Us1uvLI6R62U6LXldvl2_RR_zTzs6<09UPb`(4)U4-EBb*F^Z zyp$h?wcd@a1nV|BYzZf5uqT`5r!pLM!l>L7PSrmgX@lz%{HA1PX=7WYNOM$}N9#%{ zmqL_HqA6GLQf5W%WJ~s4*!j$88JryzE6k%W7HQ2=Y*YtII+Ajab}pu|n9<7^%}ElN zX?o9`r;CGn;uKde^DHUWxBfgSbK2wfBFUMxH5GKDY%+I;@M{L!B7u4W6cBLFU+Awh zT4jXg%*9_mZpnbZl)z>d1b1CyUmC+{!ZxH$;>-&X{Si2Yx;@g9l(oF_`Y6sEw}GMn zj~lB;(<1t!6`9L!dxsuiR2LOf9l5#3-aN909$PeU+Xy>?L3VEat~_=a)=~VkC|-A+ z10l*v#M|6sGT%(q8paX0<<`QNyJEH@P}ixm^mPy8K?E%3q1?%+o%BR_w8lJ*NIgu- zVMJn61T2lgbH%NXHn@hGN;$00Z`7GFHv5d^hHse^b4IN@cwSUHOI#5I*urNq&fAF6AiBoJN_W% z*=7vgMuCblSP+p6;=M73%YO@Nm&Q+R{YoS}{{vKUeg%dY4`C&KKL?$r&;IkU44#Gn z66#4LUQnl;re6VS0g28P&%-8XkdSZ@&B3ZjBrCLo6ED1rCc}eUU4U+KFo|qW{meER z2I<^3q=r|s8biO}3}0GtUNXai=M}e@q?2nt}&-X8U<&0oH#~ z56oOVf2nPKyLEk z5MGlJjt)eDcdJEV&NWpkhj77)XDxyH`D}lm{^K+7f5A==7g>NDGXv^bZXoYKiWa0_ zL7W7sULN4V0DJ|~zaZty2JFoS>-AXxkpE-{wu5{s$WyWaF$2&{fZml8*wYx;3d$201A77UKfv;9 zc$43A1OJe@N{JPL?`1|2zYAR#+2({u;QSd-89jKvPe6uBfU$r8U^$d}4^8zesRo9_BS3s&8{p@CKOk#@`RjKLUwd;Uw; zq3;ur&%X5w7=}Y^G^4*~tX+!~*Fzc_&=Wr_AEZUC9?XCcs(ED+v3KLcDOwS#27Ovg z8vJ>l$jySzsbvHV3Dd0px>H3ZwCjexaHRcm7yo}SQT`(z?H4_OZu4hi^Plja|1Ng^ zga73ImAwLiKV`2@byghkhj2Tq039JU&{2?^`D}G{AFw)V7_t&&N6JdByD zG7J6raqm02PG&F?DWG&_rj}AhL1ZcYWdhtU7f|vG9$c%5m%2{JDC|mih(Y#M|&LM6NxXWnM0-P}PBLt?i9YUZ_-_34BDD}e^j3jqtyh(5f? zhH{55m>^G{tz~qD$b%BJ-1^T-O4cIZ+h<%Bqqzq)=(u!Q6Qm%TLUO}x+NsfgNDxum zJ4#YnWs4Hie&1NvLqzBnBMCa?xl71;1*IR5Y~9E24! zjX-0qkEoVtEQ{{RQvMSB6_pnBAsNgHqd`jr{ED>Gg$N_yX^S|lEZZ2n9)7cTIo%lj zU-_}wj7<%jq~-@D)82a4E7f?LM(kEnhM|i?Wh%t>b(Qa)2iyk1@bh~#kCm8U6SYY4 zTz~ zT-d@NUX_x_<+p!jhFxTouaj+Q)*ULQ7HcZexXDQQd8{Q5$5n3tQ9Q$(dJq}{b)>nK znzqG;-6wq7vU_0JZ$e>rwYStygn2c&enRep1f}NmcUnT<*+|r{@RKo&AA3*jEUY-u zH(nt_d5yq7MM zyF_h~j{nfv0#Zv(1N+>mRKgw0+1({&F>3+q;qh?cP7Kddn0)%vj~0*352RPLjqxMr zpY(EP<@4&OsiGJVsty}h^l&FqwD8@MU4s+|^z3|MuNh${-7s>3f(pd1n?_$=e8s35 z6?pzYPn&68z*gv);i#2HNzcf6N<6YuZtq?95xZ-Hbk6;zL;j0%Y0S_Em)a4=k(M39 ztrpJvv5U8y4IWaXWtLlqDUsiUVEWK-C#vrFN}E+W@KbdMUa(!YxHmL5WpFUoNm15G z9B<8iZk1=BUJS`kc%7t8VU(O*k}rkC_YsEusc7Bv37X(WCmaWIefO1I(0j3w@+ZsD zP}Ky*Zfv0YxP3;HkL{a%!rqDtfPKa#DiBI)mNA3I z1QhoV2Zy?*on;DyXFrtlcDY#YWGE>t+CFT>D!bSXW{_aajO|d~3M}3zT>C>Q4oS)(o7$hj?O2cs+R{NwA$lN48 zezTUzPIJoxOJ5>gGZY_JxMK{LVkR7UoE5*77AD<2$A-W(LJG_N?E3RZC8dGb}PE6teu#>BuUa;;S4z2%(aEaM&e zYN6|5sgbMZMfdFT?o^7M`D;Bt?AK#o9UT1zQl_4f_I7wnDWdG{Dd($Au!$e~q(iWY zFvD=HSVmIdiQwOMC`cdzr%$Jpov*BToU0_F+p0&6nrN2%H5+(KPFP6?q~z4JB^il_ zf0WrZ9F31}1yYYK*wv{Dl~7%NtYJbns~bqB`l!yfoc^5xf#}@HgM{$GcG3RX#`yCG zzuUv&CGA7#!s)G*5<$%(Ma$zmJU`3MI%S7?E}xRlj~}(F={v!?exOXe4&f%#3p?YFd6*{-C(9h}A?}eoffvQ4OI_ z+IZ9imj98{5oW<8MDxcx(YGX)T;{mM7kk-t%J0rA(YxA|Uf0uEV7(Wt@+GWAiZ6FP z&23o)ix|2)G!CVAh`b8HQnQCL?;2Xby5r8P?6$diWuDSFh@ogx9pz2GMQ$ z)v(r9kF$9fzT0bCQ+G~;x*=C)_-#>qM5FF$#pahjxaJ2DJfSaJ8#xvmdb~v}9UjkA z19c5`1od>NbdfqANXSPt;uw%9lvVWB+M!g0{rK&wlfL*ANe1wFK#m2Jk3Ih(u>S>p zZ}C&ZvjcTHX!XwwsNl_j2PiKG()Y~2t9s*~kt#^v8w0Pg0tdZ~1UVHC&D5*=Fag+_gf0H57`f5)Pk5ogHHrgCLJLK~sDq;$zmpw$LPD$k@>aD~Ov z9-8^Ix)e(?PT+4IARJg3poba>V01|PZIGi;{2LO;KFsLk3*fpT2iD@JkW;=3Y^6~lx~+-pI3Abi=sb_y5`(?%?uG9|e(mnN zA<-(C+=)a19-3xw`?~ZEWYGsYDrpR-*Cbka*NOcUhm<Cr)O|Xj3XMhc!-$8l$tqlO`hyyed`*SxCO&ym3nYP zjO?TiMOxgD-i;fwx!rF<*6eh6F)uL!Z<)DT%TC&gEIsN5#fcFNwzVSrgYcjEf&E7r z%K7sNe?5XJ+g~#D5x84M00JEXf*b z=#;Sd#pA=mU=zYK3l~?5L3Y@b&^Soo8HnD9)`<7ijd+DL!tMoD0iYF?+St68s(Ak1?{6e>u38(@^M|@C0Y>rU8j>d1CQx_p8Ag2nf}vf97lW zyU%|)1Hb6;FZj@Z*FXF}_)uOU4*e|-I5VE5x|B0gXAThk9*S+icrEd}?b zHjJjTOC)=%N_mI)U=P&+?OIRP_j&>wRsMB;tq(4@EAJ_icL$E9uSTwz#`en%nYs)G z^##S8QSNMCf02Dx(HUFqU+V8)|9$^T+V9ruUbMl#-LKIv@!R3#Ghg%%nhsz1%^)22 z9pybr{?2X*m*Xew2=5I8%E)#-6MlILF0z-MsDhCL3qQossA%?*kD>QI_o_m)*vqak z2a?AF)DF;K5taj$@_9tz<=`&c4DS?z&!iI{#$Q+Bk4hv`IFL=TQc969m7+)lcoP@tV`2&IYB~mQHBYs^*Ss^(MsUoUhpzT-@I!OB zOj(cPV()sxiL~Y52KnABcM^MtLN;Fs5MqB>L=lM6$*{LnE$2rQy_;^@CD@VJXX~VB zBc0EiS7js~U*vA7tIRw=sd&m*2d3>qzfwn7% zN@*?KWZ4j9&WmJPuw}Z+<{R|n0y^0%jwi;9B=JLd70xBj-!Bg`)J&C$BjNH>DZ!G0 z!H=ltSYjABV1}kh+}=RkhcDN8b|2|~=>~YY%F=f!Yi3K9GtDpGb_A4O(lRBw*`tRn zaN%mIFGwCn#ZV!lFI_Y!L<6Ln3_63NDh_@7wpweSB=pyx@U#!`QKki|UI!2R3is>I z0C4#039BKXyTTB9NPvXq;UuS9ga0 zDxX;OmKA9Y<$Hw@F%j3y;ivu+3uL+-^!!_F?{ z(`%bf6(!n1m}U0U@fl=jiw25AzifOWj7F+88wT|a2d?S*3AUlC*snR8Zvfh~4yuFgL{qoX5k|N^K5V@lgtMq#bhZ(NBLxsER$$69NCY((q z$PnUGqX4DF_z$DF4+^+3`$tE|hBB!e_QeFO?B+L)PO-Q#{@bhi*}iMEF!VQ$vySHye&*vavEW z6tR%=oK_^W4J*`(qgVni=}(|+^3p)41Fxd zRCr93cP-kHL*Ewq`uW6fV}oe;aa^!_Fp`qmO2S1~Q%dK=e@4Gd|htvi7C zW<4XYn%=RSAM)I2{cYAXjQRS6*g(7XU`76ebD8Jd^7;FHsV}KjA~ULzQ=&+(v_(3X5`I zgcjdd;r8ZP?zYTQlZ|k6qcDAQ=2&$Pqmk6P-+DLs_I20F`?1u05;}*&glj^q{N)GH zYT52}wHE3x^f6OxSxF?hjo9AeCy5);Wp`U+W?`Sp} z1hamE92ff*?Ag*%V=xN(izB@^K<%Nf&Bsz${yN zHJHN#k2#@x=W9>#uVA=`dQPX388~bj}b`<0TV^1Weyxxa4@=!J$(^zT^r1q z8d6zJYTYj}mhw=vR$Hl>d3KX zdWJB)7i73$d<8DdflZscbe0=@{ad{vRlc1My_#KNnC#m+ce#qZ1iKQ~cOP0~9VAk*4Z3Rm+OXbWJF`P+tPR$!0`TG|9H zV}cegK}itMQYL7-hzanT=}!dO?!*Ob1sP~z6twus4y-}t_u*Op2r+@+Px5G9U4DXs z192^mJ&n4t)@*;V6AEn`;G9jboxA*2N7SwvdKExQDu@)^B04VJ3|>`s=E#mFN*sYC zJ$88HUyJ^DKTq7%86dlLTi#R@Mq8v*04YZYxdFlAerkPj%zi;sjW zbP6lM@y(!=8xXL5M~#Fh{)XQdjHO&jdo)oE-vVL4qL%}kLKfP4E6|~~Z(C4ORy>r) zOdn$&hZmhV7jg{-V~j9Ox+peCxsnC<75-S?JamofkDHlpF z6uJ3G9lMFVaUog}Bh;4qn(A41J_JPurU|1!HMy==x*HBW&O$o*5M|(Jw%v8idT)=Y z#&uqWB7R5Xm4Kytm9JWyE=&L9zU3iF(w^y)~=qS9^+x7H9rwhk$9R zDBd3KlM}BkFl7h1F4vcU(MKN3Sl7PQ@T;#R%*$c64M#J=J^X^JZaWRt$`q z3Po3?ShU35=d$w13`@STO!H=xWkOz!GhW}2IRY6sqHb~U1eQAY{FjSJ$Rqp<+%s!1h-E6G{ltNjm3!OWzf2!`{ z6|gh33(Ag<8{MM1?HT(K^ytziP|bwsxo<4uXT}veM0&Ox@WLb8bj2YKo;W(`z{4^K zB9-CmVic86E1qv7LP`BLYBb$pKjQ%Zb~Hwb{IzGw@$Dxu5=*;vm)KX84W3ndbAsDX zaDV*r{`m#mf7dVXAA%ERi@)AL`2Qq)CV7V`s=a2x$HLNWg#s9GMipZ$^FW8<4hj6K zm+Qf*q6sHPD+U$+s&SqIPV=a>=Au`SWYw$ox;Hjj9^02aIgsp;iBoUM$#^#OHTDYA zNk`32FQXWgekg)#;87!Rr&!ISNgTMA>|$sowuio5YmJEXtPjA%3?mmHrH8MRE-Zt_ z3{gqJ!n(NirHr#4kU;YHp0VEp>R$|H{q^4f1b=eQzqV%mszG2ss zaHsOv7?kM$oQeGVll+%6@CV0!Ut?ot<^I<==K5!rv9kU0WI*sINBA~bWa1?k?3?qM zV@mKC7Qq)wB<4v87WsDh+4Ru_)>SA5SlZ878pn~00qTtFlU>jENd_}_-UdT#qt(4g z&hdEAq_W*97umc?Utbd^?qJ5mdqbKPg}~9(80hdR>T6H7y)ND}O6P>wmFfN3AkxfO zOls7H{!UZ0Y?>f;8JrZYhQ(JV=7sZR#XU!*;e~gf z*K!Yn-G>p2HuiBS=lYp%kcVFHFIjvAhibphEw{lC7*92u>SEvvIZDoetJQF+w0-io zebJos$!#oqDYCLXVmZO$I1rYxh6EB(-E;Ps^}S~V*OPr()Us+_LY2;k>U`e>)-Q|o zf{buX^2gs1@MR=o_Jqc@RQIGSL$3rqiSkv7 z2Q}MW^!&)st;maxIgGaXY-j3NCrn-RHP^#vkwX}ZuIVuON$@3g({^tM64Mf8P91U2 zN8PdHM`#JNjq@C&`C!(T+(=m1Qh0{@s!NW_IK?5x)^UjFaz6HCBU|6;orU=$T_%Ty z+3|e`ys$gyX36)<`kA$UJQnf0*B0MKf}qR@)6_gL&qdSMW+`u8hIbaZn4N0nnS<|JlrMURz`I4B>`}{J2B>lRv_M|Jg1bLK4OSe|$%Gj literal 0 HcmV?d00001 diff --git a/tests/xunits/init-dev.os b/tests/xunits/init-dev.os new file mode 100644 index 00000000..cb74a307 --- /dev/null +++ b/tests/xunits/init-dev.os @@ -0,0 +1,100 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_СоздатьПустуюФайловуюБазуIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("init-dev"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Создана пустая база данных."); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_СоздатьФайловуюБазуИзИсходниковIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("init-dev"); + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.ДобавитьПараметр("--src", КаталогSrc); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Создана информационная база из исходников."); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_СоздатьФайловуюБазуИзФайлаВыгрузкиIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("init-dev"); + КаталогDt = Исполнитель.ПутьТестовыхДанных("1cv8.dt"); + Исполнитель.ДобавитьПараметр("--dt", КаталогDt); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Создана информационная база из файла выгрузки."); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_СоздатьФайловуюБазуИзФайлаКонфигурацииIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("init-dev"); + КаталогDt = Исполнитель.ПутьТестовыхДанных("1cv8.cf"); + Исполнитель.ДобавитьПараметр("--cf", КаталогDt); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Создана информационная база из файла конфигурации."); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os" "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os" new file mode 100644 index 00000000..4a3ed034 --- /dev/null +++ "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os" @@ -0,0 +1,38 @@ +#Использовать tempfiles + +Перем ТекстовыйДокумент; + +#Область ПрограммныйИнтерфейс + +Функция ВыводЛога() Экспорт + Возврат ТекстовыйДокумент.ПолучитьТекст(); +КонецФункции + +#КонецОбласти + +#Область InterfaceImplementaion + +Процедура ВывестиСобытие(Знач СобытиеЛога) Экспорт + + Сообщение = СобытиеЛога.ПолучитьФорматированноеСообщение(); + ТекстовыйДокумент.ДобавитьСтроку(Сообщение); + +КонецПроцедуры + +Процедура Закрыть() Экспорт +КонецПроцедуры + +// Устанавливает свойство аппендера, заданное в конфигурационном файле +// +Процедура УстановитьСвойство(Знач ИмяСвойства, Знач Значение) Экспорт +КонецПроцедуры // УстановитьСвойство() + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПриСозданииОбъекта() + ТекстовыйДокумент = Новый ТекстовыйДокумент(); +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" new file mode 100644 index 00000000..5995fbb5 --- /dev/null +++ "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" @@ -0,0 +1,87 @@ +#Использовать "..\..\..\.." +#Использовать cmdline + +#Область ОписаниеПеременных + +Перем Команда; +Перем Аргументы; +Перем СпособВывода; +Перем КаталогКоманды; + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ДобавитьПараметр(ИмяПараметра, ЗначениеПараметра) Экспорт + Аргументы.Добавить(ИмяПараметра); + Аргументы.Добавить(ЗначениеПараметра); +КонецПроцедуры + +Процедура ДобавитьФлаг(ИмяФлага) Экспорт + Аргументы.Добавить(ИмяФлага); +КонецПроцедуры + +Процедура ВыполнитьКоманду() Экспорт + + СистемнаяИнформация = Новый СистемнаяИнформация; + ПараметрыСистемы.ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; + + ДобавитьПараметр("--root", КаталогКоманды); + ДобавитьФлаг("--nocacheuse"); + + МенеджерКомандПриложения.РегистраторКоманд(ПараметрыСистемы); + + ДобавитьСпособВывода(МенеджерКомандПриложения); + + Парсер = Новый ПарсерАргументовКоманднойСтроки(); + МенеджерКомандПриложения.ЗарегистрироватьКоманды(Парсер); + ПараметрыКоманды = Парсер.Разобрать(Аргументы); + МенеджерКомандПриложения.ВыполнитьКоманду(Команда, ПараметрыКоманды.ЗначенияПараметров); + +КонецПроцедуры + +Функция ЛогКоманды() Экспорт + Возврат СпособВывода; +КонецФункции + +Функция КаталогКоманды() Экспорт + Возврат КаталогКоманды; +КонецФункции + +Функция ПутьТестовыхДанных(Путь1, Путь2 = Неопределено, Путь3 = Неопределено) Экспорт + + КаталогШаблонов = ОбъединитьПути(ТекущийКаталог(), "tests", "fixtures"); + Возврат ОбъединитьПути(КаталогШаблонов, Путь1, Путь2, Путь3); + +КонецФункции + +Процедура ОжидаемЧтоВыводСодержит(Строка) Экспорт + Ожидаем.Что(СпособВывода.ВыводЛога()).Содержит(Строка); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПриСозданииОбъекта(КомандаПриложения) + + Команда = КомандаПриложения; + Аргументы = Новый Массив; + Аргументы.Добавить(Команда); + + КаталогКоманды = ВременныеФайлы.СоздатьКаталог(); + + СпособВывода = Новый Тест_ВыводЛога(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ДобавитьСпособВывода(МенеджерКомандПриложения) + Лог = МенеджерКомандПриложения.Лог(); + Лог.ДобавитьСпособВывода(СпособВывода); +КонецПроцедуры + +#КонецОбласти From a214d4f4e8c5332a02b26cf5d817ab5432873c46 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 18 Oct 2023 23:20:28 +0200 Subject: [PATCH 08/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=84=D0=BB=D0=B2=D0=B3=20--ibcmd=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20com?= =?UTF-8?q?pileext?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\200\320\265\320\275\320\270\320\271.os" | 48 ++++++++++------- ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 23 +++++++- ...20\265\321\202\320\276\320\264\321\213.os" | 25 +++++++++ tests/xunits/compileext.os | 53 +++++++++++++++++++ ...20\276\320\274\320\260\320\275\320\264.os" | 34 +++++++++++- 5 files changed, 160 insertions(+), 23 deletions(-) create mode 100644 tests/xunits/compileext.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" index 47f15f74..e1147beb 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" @@ -10,10 +10,13 @@ #Использовать v8runner #Использовать asserts -Перем Лог; +#Область ОписаниеПеременных -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +Перем Лог; // Экземпляр логгера + +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -26,6 +29,8 @@ Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "extensionName", "Имя расширения, под которым оно будет зарегистрировано в списке расширений"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--updatedb", "Признак обновления расширения"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры // ЗарегистрироватьКоманду @@ -34,35 +39,38 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; - Попытка - Лог = ДополнительныеПараметры.Лог; - Исключение - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - КонецПопытки; - - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; + КаталогИсходников = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["inputPath"]); + ИмяРасширения = ПараметрыКоманды["extensionName"]; + ОбновлятьИБ = ПараметрыКоманды["--updatedb"]; + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + + Лог.Информация("Собираем расширение %1 из исходников...", ИмяРасширения); Попытка - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); - - МенеджерКонфигуратора.СобратьИзИсходниковРасширение( - ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["inputPath"]), - ПараметрыКоманды["extensionName"], ПараметрыКоманды["--updatedb"]); + МенеджерСборки.СобратьИзИсходниковРасширение(КаталогИсходников, ИмяРасширения, ОбновлятьИБ); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + МенеджерСборки.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; + Лог.Информация("Сборка расширения из исходников завершена."); - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; КонецФункции // ВыполнитьКоманду + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index d6efb145..507160bc 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -35,7 +35,7 @@ КонецПроцедуры Процедура СобратьИзИсходниковТекущуюКонфигурацию(Знач ВходнойКаталог, - Знач СписокФайловДляЗагрузки = "", СниматьСПоддержки = Ложь) Экспорт + Знач СписокФайловДляЗагрузки = "", СниматьСПоддержки = Ложь, ОбновитьФайлВерсий = Истина) Экспорт ИмяРасширения = ""; @@ -49,6 +49,11 @@ УправлениеИБ.СнятьСПоддержки(); КонецЕсли; + Если ОбновитьФайлВерсий Тогда + ПутьКФайлуСостояния = ОбъединитьПути(ВходнойКаталог, "ConfigDumpInfo.xml"); + УправлениеИБ.ВыгрузитьВФайлСостояниеКонфигурации(ПутьКФайлуСостояния, ИмяРасширения); + КонецЕсли; + КонецПроцедуры Процедура ЗагрузитьИнфобазуИзФайла(Знач ПутьКЗагружаемомуФайлуСДанными, Знач КоличествоЗаданий = 0) Экспорт @@ -80,6 +85,22 @@ КонецПроцедуры +Процедура ВыгрузитьКонфигурациюВФайл(Знач ПутьКНужномуФайлуКонфигурации) Экспорт + + УправлениеИБ.ВыгрузитьКонфигурациюВФайл(ПутьКНужномуФайлуКонфигурации); + +КонецПроцедуры + +Процедура СобратьИзИсходниковРасширение(Каталог, ИмяРасширения, Обновить = Ложь) Экспорт + + УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(Каталог, ИмяРасширения); + + Если Обновить Тогда + УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытий diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" index 24396b97..2bafc1cc 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" @@ -646,5 +646,30 @@ КонецФункции +Функция ФабрикаМенеджераСборки(ПараметрыКоманды) Экспорт + + ИспользоватьIbcm = ПараметрыКоманды["--ibcmd"]; + СтрокаПодключенияИБ = ПараметрыКоманды["ДанныеПодключения"].ПутьБазы; + + Если Не ИспользоватьIbcm Тогда + Лог.Отладка("Используем конфигуратор."); + Возврат Новый МенеджерКонфигуратора(); + + ИначеЕсли ЗначениеЗаполнено(СтрокаПодключенияИБ) И Не ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключенияИБ) Тогда + Лог.Информация("Серверные ИБ не поддерживаются ibcmd. Используем конфигуратор."); + Возврат Новый МенеджерКонфигуратора(); + + Иначе + Лог.Отладка("Используем ibcmd."); + Возврат Новый МенеджерIbcmd(); + + КонецЕсли; + +КонецФункции + +Функция ЛогКоманды(ДополнительныеПараметры) Экспорт + Возврат ДополнительныеПараметры.Лог; +КонецФункции; + // из-за особенностей загрузки модуль ОбщиеМетоды грузится раньше ПараметрыСистемы, // поэтому сразу в конце кода модуля использовать ПараметрыСистемы нельзя diff --git a/tests/xunits/compileext.os b/tests/xunits/compileext.os new file mode 100644 index 00000000..3b0c5fb7 --- /dev/null +++ b/tests/xunits/compileext.os @@ -0,0 +1,53 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_СобратьРасширениеИзИсходниковВТекущуюБазуIbcmd() Экспорт + + // Дано + ИмяРасширения = "РасширениеНовое1"; + + Исполнитель = Новый Тест_ИсполнительКоманд("compileext"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cfe"); + Исполнитель.ДобавитьПараметр(КаталогSrc); + Исполнитель.ДобавитьПараметр(ИмяРасширения); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Сборка расширения из исходников завершена."); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" index 5995fbb5..7ce4f869 100644 --- "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" +++ "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" @@ -1,5 +1,7 @@ #Использовать "..\..\..\.." #Использовать cmdline +#Использовать ibcmdrunner +#Использовать asserts #Область ОписаниеПеременных @@ -12,9 +14,13 @@ #Область СлужебныйПрограммныйИнтерфейс -Процедура ДобавитьПараметр(ИмяПараметра, ЗначениеПараметра) Экспорт +Процедура ДобавитьПараметр(ИмяПараметра, ЗначениеПараметра = Неопределено) Экспорт + Аргументы.Добавить(ИмяПараметра); - Аргументы.Добавить(ЗначениеПараметра); + Если ЗначениеПараметра <> Неопределено Тогда + Аргументы.Добавить(ЗначениеПараметра); + КонецЕсли; + КонецПроцедуры Процедура ДобавитьФлаг(ИмяФлага) Экспорт @@ -59,6 +65,30 @@ Ожидаем.Что(СпособВывода.ВыводЛога()).Содержит(Строка); КонецПроцедуры +Процедура ОжидаемЧтоФайлСуществует(ПутьКФайлу) Экспорт + + ПолныйПуть = ОбъединитьПути(КаталогКоманды, ПутьКФайлу); + Файл = Новый Файл(ПолныйПуть); + ФайлСуществует = Файл.Существует() И Файл.ЭтоФайл(); + Сообщение = СтрШаблон("Ожидали, что файл %1 существует", ПутьКФайлу); + + Ожидаем.Что(ФайлСуществует, Сообщение).ЭтоИстина(); + +КонецПроцедуры + +Процедура УстановитьКонтекстПустаяИБ() Экспорт + + КаталогПустойИБ = ОбъединитьПути(КаталогКоманды, "db-data"); + + УправлениеИБ = Новый УправлениеИБ; + УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогПустойИБ); + УправлениеИБ.СоздатьИБИзФайлаВыгрузки(""); + + СтрокаСоединения = СтрШаблон("/F""%1""", КаталогПустойИБ); + ДобавитьПараметр("--ibconnection", СтрокаСоединения); + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытий From b5227a40382a70980088a14f9923270c1e67afae Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 18 Oct 2023 23:23:23 +0200 Subject: [PATCH 09/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=83=D1=81=D0=BB=D0=BE=D0=B2=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D1=80=D0=B8=D0=B7=D0=BD=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=83=D1=82=D0=B8=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B?= =?UTF-8?q?=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\265\321\202\320\276\320\264\321\213.os" | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" index 2bafc1cc..6804b4fd 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" @@ -324,17 +324,38 @@ Лог.Отладка("Использован системный корневой путь проекта - <%1>", КаталогПроекта); КонецЕсли; - Если Лев(Путь, 1) = "." И КаталогПроекта <> Путь Тогда + Если ЭтоОтносительныйПуть(Путь) И КаталогПроекта <> Путь Тогда Путь = ОбъединитьПути(КаталогПроекта, Путь); Лог.Отладка("Нашли абсолютный путь проекта - <%1>", Путь); КонецЕсли; - + ФайлПуть = Новый Файл(Путь); Возврат ФайлПуть.ПолноеИмя; КонецФункции // ПолныйПуть() + +Функция ЭтоОтносительныйПуть(Знач Путь) + + // BSLLS:IfElseDuplicatedCodeBlock-off + Если СтрНачинаетсяС(Путь, ".") Тогда + Возврат Истина; + + ИначеЕсли СтрНачинаетсяС(Путь, "/") Тогда + Возврат Ложь; + + ИначеЕсли Сред(Путь, 2, 1) = ":" Тогда + Возврат Ложь; + + Иначе + Возврат Истина; + + КонецЕсли; + // BSLLS:IfElseDuplicatedCodeBlock-on + +КонецФункции + Функция КаталогПроекта() Экспорт ФайлИсточника = Новый Файл(ТекущийСценарий().Источник); Возврат ОбъединитьПути(ФайлИсточника.Путь, "..", ".."); @@ -669,7 +690,7 @@ Функция ЛогКоманды(ДополнительныеПараметры) Экспорт Возврат ДополнительныеПараметры.Лог; -КонецФункции; +КонецФункции // из-за особенностей загрузки модуль ОбщиеМетоды грузится раньше ПараметрыСистемы, // поэтому сразу в конце кода модуля использовать ПараметрыСистемы нельзя From bbe62e393a28e9e51557908ab634a0024b636d5e Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 18 Oct 2023 23:24:16 +0200 Subject: [PATCH 10/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B3=D0=B5=D1=82=D1=82=D0=B5=D1=80=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=D0=B0=20?= =?UTF-8?q?=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=98?= =?UTF-8?q?=D0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...3\321\200\320\260\321\202\320\276\321\200\320\260.os" | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" index 66899181..393cf69e 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" @@ -1179,6 +1179,15 @@ КонецПроцедуры +// Возвращает каталог времнной ИБ +// +// Возвращаемое значение: +// Строка - Каталог временной ИБ +// +Функция КаталогВременнойИБ() Экспорт + Возврат КаталогВременнойИБ; +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции From cf437dcc0329597216c77e9d96afed1370e29b91 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 18 Oct 2023 23:25:06 +0200 Subject: [PATCH 11/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20compile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\275\320\270\320\272\320\276\320\262.os" | 116 +++++++++++------- ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 39 +++++- tests/xunits/compile.os | 73 +++++++++++ 3 files changed, 181 insertions(+), 47 deletions(-) create mode 100644 tests/xunits/compile.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262.os" index 94aedcca..4e5b30df 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262.os" @@ -14,12 +14,16 @@ #Использовать logos #Использовать v8runner +#Область ОписаниеПеременных + Перем Лог; -Перем МенеджерКонфигуратора; Перем МенеджерВерсий; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +Перем ДанныеПодключения; + +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -46,6 +50,8 @@ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--noupdate", "Флаг обновления СonfigDumpInfo.xml"); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--build-number", "Номер сборки для установки в последний разряд номера версии"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -55,23 +61,20 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Попытка - Лог = ДополнительныеПараметры.Лог; - Исключение - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - КонецПопытки; - - ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ПутьВходящий = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды, "-s", "--src")); - ПутьИсходящий = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды,"-o", "--out")); - ВерсияПлатформы = ПараметрыКоманды["--v8version"]; + ПутьИсходящий = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды, "-o", "--out")); СписокФайлов = ПараметрыКоманды["--list"]; - ОбновлятьДамп = НЕ ПараметрыКоманды["--noupdate"]; + ОбновлятьФайлВерсий = НЕ ПараметрыКоманды["--noupdate"]; + ИспользоватьТекущуюИБ = ОбщиеМетоды.ЕстьФлагКоманды(ПараметрыКоманды, "-c", "--current"); МенеджерВерсий = Новый МенеджерВерсийФайлов1С(); @@ -81,47 +84,74 @@ ИзменитьНомерСборкиВИсходникахКонфигурации(ПутьВходящий, НомерСборки); КонецЕсли; + + Если ИспользоватьТекущуюИБ Тогда + СобратьИзИсходниковТекущуюКонфигурацию(ПараметрыКоманды, ПутьВходящий, СписокФайлов, ОбновлятьФайлВерсий); + Иначе + СобратьИзИсходниковФайлКонфигурации(ПараметрыКоманды, + ПутьВходящий, ПутьИсходящий, ОбновлятьФайлВерсий); + КонецЕсли; + + Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + +КонецФункции - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; +#КонецОбласти +#Область СлужебныеПроцедурыИФункции + +Процедура СобратьИзИсходниковТекущуюКонфигурацию(ПараметрыКоманды, + ПутьВходящий, СписокФайлов, ОбновлятьФайлВерсий) + + Лог.Информация("Запускаем сборку конфигурации из исходников в текущую ИБ..."); + + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Попытка - ВТекущуюКонфигурацию = ОбщиеМетоды.ЕстьФлагКоманды(ПараметрыКоманды, "-c", "--current"); - Если ТипЗнч(ВТекущуюКонфигурацию) = Тип("Булево") И ВТекущуюКонфигурацию Тогда - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); - - МенеджерКонфигуратора.СобратьИзИсходниковТекущуюКонфигурацию( - ПутьВходящий, - СписокФайлов, Истина, ОбновлятьДамп); - Иначе - СобратьИзИсходниковФайлКонфигурации(ПутьВходящий, ПутьИсходящий, ДанныеПодключения, ВерсияПлатформы, - ОбновлятьДамп, ПараметрыКоманды); - КонецЕсли; + МенеджерСборки.СобратьИзИсходниковТекущуюКонфигурацию( + ПутьВходящий, СписокФайлов, Истина, ОбновлятьФайлВерсий); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + МенеджерСборки.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); - Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; -КонецФункции + Лог.Информация("Сборка конфигурации из исходников в текущую ИБ завершена."); + +КонецПроцедуры -Процедура СобратьИзИсходниковФайлКонфигурации(ПутьВходящий, ПутьИсходящий, ДанныеПодключения, - ВерсияПлатформы, ОбновлятьФайлВерсий, Знач ПараметрыКоманды) +Процедура СобратьИзИсходниковФайлКонфигурации(ПараметрыКоманды, + ПутьВходящий, ПутьИсходящий, ОбновлятьФайлВерсий) - КаталогВременнойБазы = ВременныеФайлы.СоздатьКаталог(); - СтрокаПодключения = "/F""" + КаталогВременнойБазы + """"; - МенеджерКонфигуратора.Инициализация(ПараметрыКоманды, СтрокаПодключения, "", "", ВерсияПлатформы, , - ДанныеПодключения.КодЯзыка, ДанныеПодключения.КодЯзыкаСеанса); - Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); + Лог.Информация("Запускаем сборку конфигурации из исходников в файл cf..."); - Конфигуратор.СоздатьФайловуюБазу(КаталогВременнойБазы); + ОбщиеМетоды.УстановитьИспользованиеВременнойБазы(ПараметрыКоманды); + + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + КаталогВременнойИБ = МенеджерСборки.КаталогВременнойИБ(); - МенеджерКонфигуратора.СобратьИзИсходниковТекущуюКонфигурацию(ПутьВходящий, , , ОбновлятьФайлВерсий); ПутьИсходящийСВерсией = МенеджерВерсий.ПодставитьНомерВерсии(ПутьВходящий, ПутьИсходящий); - МенеджерКонфигуратора.ВыгрузитьКонфигурациюВФайл(ПутьИсходящийСВерсией); + Попытка + + МенеджерСборки.СоздатьФайловуюБазу(КаталогВременнойИБ); + МенеджерСборки.СобратьИзИсходниковТекущуюКонфигурацию(ПутьВходящий, , , ОбновлятьФайлВерсий); + МенеджерСборки.ВыгрузитьКонфигурациюВФайл(ПутьИсходящийСВерсией); + + Исключение + МенеджерСборки.Деструктор(); + ВызватьИсключение; + КонецПопытки; + + МенеджерСборки.Деструктор(); - ВременныеФайлы.УдалитьФайл(КаталогВременнойБазы); + Лог.Информация("Сборка конфигурации из исходников в файл cf завершена."); КонецПроцедуры @@ -136,3 +166,5 @@ КонецЦикла; КонецПроцедуры + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 507160bc..af6e50fd 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -6,6 +6,7 @@ Перем Лог; // Содердит объект ллога Перем ВременныйКаталогДанныхСервера; // Временный каталог данных автономного сервера +Перем КаталогВременнойИБ; Перем УправлениеИБ; // :УправлениеИБ Перем Локаль; // Локаль приложения @@ -39,16 +40,16 @@ ИмяРасширения = ""; + Если СниматьСПоддержки Тогда + УправлениеИБ.СнятьСПоддержки(); + КонецЕсли; + Если ЗначениеЗаполнено(СписокФайловДляЗагрузки) Тогда УправлениеИБ.ЗагрузитьВыбранныеФайлыКонфигурации(ВходнойКаталог, СписокФайловДляЗагрузки, ИмяРасширения); Иначе УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(ВходнойКаталог, ИмяРасширения); КонецЕсли; - Если СниматьСПоддержки Тогда - УправлениеИБ.СнятьСПоддержки(); - КонецЕсли; - Если ОбновитьФайлВерсий Тогда ПутьКФайлуСостояния = ОбъединитьПути(ВходнойКаталог, "ConfigDumpInfo.xml"); УправлениеИБ.ВыгрузитьВФайлСостояниеКонфигурации(ПутьКФайлуСостояния, ИмяРасширения); @@ -101,6 +102,25 @@ КонецПроцедуры +// Выгружает файл расширения из ИБ +// +// Параметры: +// ПутьКНужномуФайлуРасширения - Строка - Путь к результату - выгружаемому файлу конфигурации (*.cfe) +// ИмяРасширения - Строка - Имя расширения +// +Процедура ВыгрузитьРасширениеВФайл(Знач ПутьКНужномуФайлуРасширения, Знач ИмяРасширения) Экспорт + УправлениеИБ.ВыгрузитьКонфигурациюВФайл(ПутьКНужномуФайлуРасширения, ИмяРасширения); +КонецПроцедуры + +// Возвращает каталог времнной ИБ +// +// Возвращаемое значение: +// Строка - Каталог временной ИБ +// +Функция КаталогВременнойИБ() Экспорт + Возврат КаталогВременнойИБ; +КонецФункции + #КонецОбласти #Область ОбработчикиСобытий @@ -135,7 +155,16 @@ ИспользоватьВременнуюБазу = ДанныеПодключения.ИспользоватьВременнуюБазу; Если ИспользоватьВременнуюБазу Тогда - Лог.Отладка("ИспользоватьВременнуюБазу %1", ИспользоватьВременнуюБазу); + Лог.Отладка("ИспользоватьВременнуюБазу %1", ИспользоватьВременнуюБазу); + + КаталогВременнойИБ = ОбъединитьПути(ВременныйКаталогДанныхСервера, "db_data"); + + СтрокаСоединения = СтрШаблон("/F%1", КаталогВременнойИБ); + Пользователь = ""; + Пароль = ""; + + УстановитьКонтекст(СтрокаСоединения, Пользователь, Пароль); + Иначе УстановитьКонтекст(ДанныеПодключения.ПутьБазы, ДанныеПодключения.Пользователь, ДанныеПодключения.Пароль); diff --git a/tests/xunits/compile.os b/tests/xunits/compile.os new file mode 100644 index 00000000..ff0cdb4b --- /dev/null +++ b/tests/xunits/compile.os @@ -0,0 +1,73 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_СобратьКонфигурациюИзИсходниковВТекущуюБазуIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("compile"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.ДобавитьПараметр("--src", КаталогSrc); + Исполнитель.ДобавитьФлаг("--current"); + Исполнитель.ДобавитьФлаг("--noupdate"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Сборка конфигурации из исходников в текущую ИБ завершена."); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_СобратьКонфигурациюИзИсходниковIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("compile"); + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.ДобавитьПараметр("--src", КаталогSrc); + Исполнитель.ДобавитьПараметр("--out", "1Cv8.cf"); + Исполнитель.ДобавитьФлаг("--noupdate"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Сборка конфигурации из исходников в файл cf завершена."); + Исполнитель.ОжидаемЧтоФайлСуществует("1Cv8.cf"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file From a25f55134f27925289d39c8422923efd954b6263 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 18 Oct 2023 23:25:44 +0200 Subject: [PATCH 12/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20compileexttocfe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\200\320\265\320\275\320\270\321\217.os" | 119 ++++++++++++------ tests/xunits/compileexttocfe.os | 73 +++++++++++ 2 files changed, 153 insertions(+), 39 deletions(-) create mode 100644 tests/xunits/compileexttocfe.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262\320\244\320\260\320\271\320\273\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262\320\244\320\260\320\271\320\273\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.os" index 39b57c73..85797685 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262\320\244\320\260\320\271\320\273\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262\320\244\320\260\320\271\320\273\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.os" @@ -14,12 +14,16 @@ #Использовать logos #Использовать v8runner +#Область ОписаниеПеременных + Перем Лог; -Перем МенеджерКонфигуратора; Перем МенеджерВерсий; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +Перем ИмяРасширения; + +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -47,6 +51,8 @@ Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--build-number", "Номер сборки для установки в последний разряд номера версии"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -56,22 +62,18 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Попытка - Лог = ДополнительныеПараметры.Лог; - Исключение - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - КонецПопытки; - - ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ПутьВходящий = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды, "-s", "--src")); ПутьИсходящий = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды,"-o", "--out")); - ВерсияПлатформы = ПараметрыКоманды["--v8version"]; - СтрокаПодключения = ДанныеПодключения.СтрокаПодключения; + ИспользоватьТекущуюИБ = ОбщиеМетоды.ЕстьФлагКоманды(ПараметрыКоманды, "-c", "--current"); МенеджерВерсий = Новый МенеджерВерсийФайлов1С(); @@ -81,40 +83,77 @@ ИзменитьНомерСборкиВИсходникахКонфигурации(ПутьВходящий, НомерСборки); КонецЕсли; - - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; + ПутьИсходящийСВерсией = МенеджерВерсий.ПодставитьНомерВерсии(ПутьВходящий, ПутьИсходящий); ИмяРасширения = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""); + Если ИспользоватьТекущуюИБ Тогда + СобратьИзИсходниковТекущуюКонфигурацию(ПараметрыКоманды, ПутьВходящий, ПутьИсходящийСВерсией); + Иначе + СобратьИзИсходниковВоВременнойБазе(ПараметрыКоманды, ПутьВходящий, ПутьИсходящийСВерсией); + КонецЕсли; + + Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура СобратьИзИсходниковТекущуюКонфигурацию(ПараметрыКоманды, + ПутьВходящий, ПутьИсходящий) + + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + + Лог.Информация("Запускаем сборку расширения из исходников в текущую ИБ..."); + + Попытка + + МенеджерСборки.СобратьИзИсходниковРасширение(ПутьВходящий, ИмяРасширения, Ложь); + МенеджерСборки.ВыгрузитьРасширениеВФайл(ПутьИсходящий, ИмяРасширения); + + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + МенеджерСборки.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + КонецПопытки; + + МенеджерСборки.Деструктор(); + + Лог.Информация("Сборка расширения из исходников в текущую ИБ завершена."); + +КонецПроцедуры + +Процедура СобратьИзИсходниковВоВременнойБазе(ПараметрыКоманды, + ПутьВходящий, ПутьИсходящий) + + ОбщиеМетоды.УстановитьИспользованиеВременнойБазы(ПараметрыКоманды); + + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + + ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + КаталогВременнойИБ = МенеджерСборки.КаталогВременнойИБ(); + + Лог.Информация("Запускаем сборку расширения из исходников в файл cfe..."); + Попытка - ВТекущуюКонфигурацию = ОбщиеМетоды.ЕстьФлагКоманды(ПараметрыКоманды, "-c", "--current"); - Если ТипЗнч(ВТекущуюКонфигурацию) = Тип("Булево") И ВТекущуюКонфигурацию Тогда - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); - Иначе - КаталогВременнойБазы = ВременныеФайлы.СоздатьКаталог(); - СтрокаПодключения = "/F""" + КаталогВременнойБазы + """"; - МенеджерКонфигуратора.Инициализация(ПараметрыКоманды, СтрокаПодключения, "", "", ВерсияПлатформы, , - ДанныеПодключения.КодЯзыка, ДанныеПодключения.КодЯзыкаСеанса); - Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); - - Конфигуратор.СоздатьФайловуюБазу(КаталогВременнойБазы); - КонецЕсли; - - МенеджерКонфигуратора.СобратьИзИсходниковРасширение( - ПутьВходящий, - ИмяРасширения, - Ложь); - ПутьИсходящийСВерсией = МенеджерВерсий.ПодставитьНомерВерсии(ПутьВходящий, ПутьИсходящий); - МенеджерКонфигуратора.ВыгрузитьРасширениеВФайл(ПутьИсходящийСВерсией, ИмяРасширения); + МенеджерСборки.СоздатьФайловуюБазу(КаталогВременнойИБ); + МенеджерСборки.СобратьИзИсходниковРасширение(ПутьВходящий, ИмяРасширения, Ложь); + МенеджерСборки.ВыгрузитьРасширениеВФайл(ПутьИсходящий, ИмяРасширения); + Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + МенеджерСборки.Деструктор(); + ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; - МенеджерКонфигуратора.Деструктор(); + Лог.Информация("Сборка расширения из исходников в файл cfe завершена."); - Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; -КонецФункции +КонецПроцедуры Процедура ИзменитьНомерСборкиВИсходникахКонфигурации(Знач ПутьИсходников, Знач НомерСборки) @@ -127,3 +166,5 @@ КонецЦикла; КонецПроцедуры + +#КонецОбласти diff --git a/tests/xunits/compileexttocfe.os b/tests/xunits/compileexttocfe.os new file mode 100644 index 00000000..c5324f63 --- /dev/null +++ b/tests/xunits/compileexttocfe.os @@ -0,0 +1,73 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_СобратьРасширениеИзИсходниковВТекущуюБазуIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("compileexttocfe"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cfe"); + Исполнитель.ДобавитьФлаг("--current"); + Исполнитель.ДобавитьПараметр("--src", КаталогSrc); + Исполнитель.ДобавитьПараметр("--out", "./Расширение1.cfe"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Сборка расширения из исходников в текущую ИБ завершена."); + Исполнитель.ОжидаемЧтоФайлСуществует("Расширение1.cfe"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_СобратьКонфигурациюИзИсходниковIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("compileexttocfe"); + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cfe"); + Исполнитель.ДобавитьПараметр("--src", КаталогSrc); + Исполнитель.ДобавитьПараметр("--out", "Расширение1.cfe"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Сборка расширения из исходников в файл cfe завершена."); + Исполнитель.ОжидаемЧтоФайлСуществует("Расширение1.cfe"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file From d155c528921de86fd6b7b259061ac39d696e41ca Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 18 Oct 2023 23:26:31 +0200 Subject: [PATCH 13/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D1=80=D0=B8=D0=B7=D0=BD=D0=B0=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=98=D0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...65\320\234\320\265\321\202\320\276\320\264\321\213.os" | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" index 6804b4fd..b220ef43 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" @@ -692,5 +692,13 @@ Возврат ДополнительныеПараметры.Лог; КонецФункции +Процедура УстановитьИспользованиеВременнойБазы(ПараметрыКоманды) Экспорт + + ДанныеПодключения = Новый Структура(ПараметрыКоманды["ДанныеПодключения"]); + ДанныеПодключения.ИспользоватьВременнуюБазу = Истина; + ПараметрыКоманды["ДанныеПодключения"] = Новый ФиксированнаяСтруктура(ДанныеПодключения); + +КонецПроцедуры + // из-за особенностей загрузки модуль ОбщиеМетоды грузится раньше ПараметрыСистемы, // поэтому сразу в конце кода модуля использовать ПараметрыСистемы нельзя From c6c7d6c6689196dbdc6ef6170a9a9726930e3d1e Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 19 Oct 2023 21:14:05 +0200 Subject: [PATCH 14/59] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20?= =?UTF-8?q?=D1=81=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=D0=BC=D0=B8=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=B0=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...65\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index af6e50fd..705eb814 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -51,8 +51,7 @@ КонецЕсли; Если ОбновитьФайлВерсий Тогда - ПутьКФайлуСостояния = ОбъединитьПути(ВходнойКаталог, "ConfigDumpInfo.xml"); - УправлениеИБ.ВыгрузитьВФайлСостояниеКонфигурации(ПутьКФайлуСостояния, ИмяРасширения); + УправлениеИБ.ВыгрузитьВФайлСостояниеКонфигурации(ВходнойКаталог, ИмяРасширения); КонецЕсли; КонецПроцедуры From b23a05e8a530561dd67d66a112df6a49820c1863 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 19 Oct 2023 22:12:09 +0200 Subject: [PATCH 15/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20restore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\244\320\260\320\271\320\273\320\260.os" | 35 +++++++++---- tests/xunits/init-dev.os | 4 +- tests/xunits/restore.os | 50 +++++++++++++++++++ 3 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 tests/xunits/restore.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" index ffd51de7..3636fe88 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" @@ -12,10 +12,13 @@ #Использовать logos #Использовать v8runner +#Область ОписаниеПеременных + Перем Лог; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -27,6 +30,8 @@ Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "dtpath", "Путь к файлу с данными информационной базы (*.dt)"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--JobsCount ", "Количество заданий для загрузки информационной базы. Значение по умолчанию ‑ 0, что означает, будет столько заданий, сколько и процессоров. @@ -40,27 +45,35 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт Лог = ДополнительныеПараметры.Лог; ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + ФайлВыгрузки = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["dtpath"]); + КоличествоЗаданий = ПараметрыКоманды["--JobsCount"]; - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог.Информация("Запускаем загрузку информационной базы из dt..."); Попытка - МенеджерКонфигуратора.ЗагрузитьИнфобазуИзФайла( - ПараметрыКоманды["dtpath"], - ПараметрыКоманды["--JobsCount"]); + МенеджерСборки.ЗагрузитьИнфобазуИзФайла(ФайлВыгрузки, КоличествоЗаданий); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + МенеджерСборки.Деструктор(); + ВызватьИсключение; КонецПопытки; + Лог.Информация("Загрузка информационной базы из dt завершена."); - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции + +#КонецОбласти diff --git a/tests/xunits/init-dev.os b/tests/xunits/init-dev.os index cb74a307..530fbf19 100644 --- a/tests/xunits/init-dev.os +++ b/tests/xunits/init-dev.os @@ -50,8 +50,8 @@ // Дано Исполнитель = Новый Тест_ИсполнительКоманд("init-dev"); - КаталогDt = Исполнитель.ПутьТестовыхДанных("1cv8.dt"); - Исполнитель.ДобавитьПараметр("--dt", КаталогDt); + ФайлDt = Исполнитель.ПутьТестовыхДанных("1cv8.dt"); + Исполнитель.ДобавитьПараметр("--dt", ФайлDt); Исполнитель.ДобавитьФлаг("--ibcmd"); // Когда diff --git a/tests/xunits/restore.os b/tests/xunits/restore.os new file mode 100644 index 00000000..7e38145e --- /dev/null +++ b/tests/xunits/restore.os @@ -0,0 +1,50 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ВыгрузитьИнформационноюБазуВФайлIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("restore"); + ФайлDt = Исполнитель.ПутьТестовыхДанных("1cv8.dt"); + Исполнитель.ДобавитьПараметр(ФайлDt); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Загрузка информационной базы из dt завершена."); + +КонецПроцедуры + + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти From de1bf10c5380cd316defa0218ffaeaf32ccb647f Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 19 Oct 2023 22:12:24 +0200 Subject: [PATCH 16/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20dump?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\222\320\244\320\260\320\271\320\273.os" | 35 +++++++++---- ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 15 ++++++ tests/xunits/dump.os | 50 +++++++++++++++++++ 3 files changed, 89 insertions(+), 11 deletions(-) create mode 100644 tests/xunits/dump.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\222\320\244\320\260\320\271\320\273.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\222\320\244\320\260\320\271\320\273.os" index d28c9ad3..7289f3b1 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\222\320\244\320\260\320\271\320\273.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\222\320\244\320\260\320\271\320\273.os" @@ -14,10 +14,13 @@ #Использовать logos #Использовать v8runner +#Область ОписаниеПеременных + Перем Лог; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -29,6 +32,8 @@ Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "dtpath", "Путь к результату - выгружаемому файлу с данными (*.dt)"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -38,26 +43,34 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + ФайлВыгрузки = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["dtpath"]); - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог.Информация("Запускаем выгрузку информационной базы в dt..."); Попытка - МенеджерКонфигуратора.ВыгрузитьИнфобазуВФайл( - ПараметрыКоманды["dtpath"]); + МенеджерСборки.ВыгрузитьИнфобазуВФайл(ФайлВыгрузки); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + МенеджерСборки.Деструктор(); + ВызватьИсключение; КонецПопытки; + Лог.Информация("Выгрузка информационной базы в dt завершена."); - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции // ВыполнитьКоманду + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 705eb814..9b4d655a 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -56,6 +56,21 @@ КонецПроцедуры +// Выгружает информационную базу в файл +// +// Параметры: +// ПутьКВыгружаемомуФайлуСДанными - Строка - Путь к результату - выгружаемому файлу с данными (*.dt) +// +Процедура ВыгрузитьИнфобазуВФайл(Знач ПутьКВыгружаемомуФайлуСДанными) Экспорт + УправлениеИБ.ВыгрузитьДанныеИБ(ПутьКВыгружаемомуФайлуСДанными); +КонецПроцедуры + +// Загружает информационную базу из файла +// +// Параметры: +// ПутьКЗагружаемомуФайлуСДанными - Строка - Путь к файлу с данными (*.dt) +// КоличествоЗаданий - Число - Количество заданий (потоков) загрузки из файла с данными +// Процедура ЗагрузитьИнфобазуИзФайла(Знач ПутьКЗагружаемомуФайлуСДанными, Знач КоличествоЗаданий = 0) Экспорт УправлениеИБ.ЗагрузитьДанныеИБ(ПутьКЗагружаемомуФайлуСДанными); КонецПроцедуры diff --git a/tests/xunits/dump.os b/tests/xunits/dump.os new file mode 100644 index 00000000..a668d686 --- /dev/null +++ b/tests/xunits/dump.os @@ -0,0 +1,50 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ВыгрузитьИнформационноюБазуВФайлIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("dump"); + Исполнитель.ДобавитьПараметр("1Cv8.dt"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Выгрузка информационной базы в dt завершена."); + Исполнитель.ОжидаемЧтоФайлСуществует("1Cv8.dt"); + +КонецПроцедуры + + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти From dfcbfdc14495948dcb009c0fd49a3e223bf33d45 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 19 Oct 2023 22:24:56 +0200 Subject: [PATCH 17/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20unload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\222\320\244\320\260\320\271\320\273.os" | 36 ++++++++----- tests/xunits/unload.os | 50 +++++++++++++++++++ 2 files changed, 73 insertions(+), 13 deletions(-) create mode 100644 tests/xunits/unload.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" index 1ec986eb..7061a22f 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" @@ -14,10 +14,13 @@ #Использовать logos #Использовать v8runner +#Область ОписаниеПеременных + Перем Лог; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -29,6 +32,8 @@ Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "cfpath", "Путь к результату - выгружаемому файлу конфигурации (*.cf)"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -38,29 +43,34 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт Лог = ДополнительныеПараметры.Лог; - // TODO отрефакторить получение ЗапускатьТолстыйКлиент - ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + ФайлКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["cfpath"]); - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог.Информация("Запускаем выгрузку конфигурации в cf..."); Попытка - МенеджерКонфигуратора.ВыгрузитьКонфигурациюВФайл( - ПараметрыКоманды["cfpath"] - ); + МенеджерСборки.ВыгрузитьКонфигурациюВФайл(ФайлКонфигурации); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + МенеджерСборки.Деструктор(); + ВызватьИсключение; КонецПопытки; + Лог.Информация("Выгрузка конфигурации в cf завершена."); - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции // ВыполнитьКоманду + +#КонецОбласти diff --git a/tests/xunits/unload.os b/tests/xunits/unload.os new file mode 100644 index 00000000..f51d965b --- /dev/null +++ b/tests/xunits/unload.os @@ -0,0 +1,50 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ВыгрузитьКонфигурациюВФайлIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("unload"); + Исполнитель.ДобавитьПараметр("1Cv8.cf"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Выгрузка конфигурации в cf завершена."); + Исполнитель.ОжидаемЧтоФайлСуществует("1Cv8.cf"); + +КонецПроцедуры + + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти From 6ac572598da1b629f35bbc5fd5270bd44e6a5611 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 19 Oct 2023 22:47:07 +0200 Subject: [PATCH 18/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20load?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\200\320\260\321\206\320\270\320\270.os" | 40 ++++++++------- tests/xunits/init-dev.os | 4 +- tests/xunits/load.os | 49 +++++++++++++++++++ 3 files changed, 73 insertions(+), 20 deletions(-) create mode 100644 tests/xunits/load.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" index 80240939..6a5b0621 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" @@ -14,11 +14,13 @@ #Использовать logos #Использовать v8runner +#Область ОписаниеПеременных + Перем Лог; -Перем МенеджерКонфигуратора; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -33,6 +35,8 @@ "Краткая команда 'путь к cf --src', пример: -s ./1Cv8.cf | В пути файла можно указать шаблонную переменную $version для подстановки в нее версии конфигурации | Пример: 1Cv8_$version.cf выгрузит файл вида 1Cv8_1.2.3.4.cf"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -42,18 +46,14 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) // -// Возвращаемое значение: -// Число - Результат выполенения команды +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Попытка - Лог = ДополнительныеПараметры.Лог; - Исключение - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - КонецПопытки; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; @@ -61,18 +61,22 @@ МенеджерВерсий = Новый МенеджерВерсийФайлов1С(); ПутьВходящийСВерсией = МенеджерВерсий.НайтиФайлСВерсией(ПутьВходящий); - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог.Информация("Запускаем загрузку конфигурации из cf..."); Попытка - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); - - МенеджерКонфигуратора.ЗагрузитьФайлКонфигурации(ПутьВходящийСВерсией); + МенеджерСборки.ЗагрузитьФайлКонфигурации(ПутьВходящийСВерсией); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + МенеджерСборки.Деструктор(); + ВызватьИсключение; КонецПопытки; + Лог.Информация("Загрузка конфигурации из cf завершена."); - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции + +#КонецОбласти diff --git a/tests/xunits/init-dev.os b/tests/xunits/init-dev.os index 530fbf19..70b14ae2 100644 --- a/tests/xunits/init-dev.os +++ b/tests/xunits/init-dev.os @@ -68,8 +68,8 @@ // Дано Исполнитель = Новый Тест_ИсполнительКоманд("init-dev"); - КаталогDt = Исполнитель.ПутьТестовыхДанных("1cv8.cf"); - Исполнитель.ДобавитьПараметр("--cf", КаталогDt); + ФайлCf = Исполнитель.ПутьТестовыхДанных("1cv8.cf"); + Исполнитель.ДобавитьПараметр("--cf", ФайлCf); Исполнитель.ДобавитьФлаг("--ibcmd"); // Когда diff --git a/tests/xunits/load.os b/tests/xunits/load.os new file mode 100644 index 00000000..2af3feb0 --- /dev/null +++ b/tests/xunits/load.os @@ -0,0 +1,49 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ЗагузитьКонфигурациюИзФайлаIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("load"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + ФайлCf = Исполнитель.ПутьТестовыхДанных("1cv8.cf"); + Исполнитель.ДобавитьПараметр("--src", ФайлCf); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Загрузка конфигурации из cf завершена."); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти From 9acab1745eff14757c5df60da09a9b318e70a726 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 19 Oct 2023 23:07:18 +0200 Subject: [PATCH 19/59] =?UTF-8?q?=D0=98=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D1=83=D0=B5=D0=BC=20=D0=B5=D0=B4=D0=B8=D0=BD=D1=8B=D0=B9?= =?UTF-8?q?=20=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D0=B1=D1=8A=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" | 2 +- ...\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" | 2 +- ...\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" index 7061a22f..391aee9b 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" @@ -50,7 +50,7 @@ // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; ФайлКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["cfpath"]); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" index 3636fe88..b2d0d193 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" @@ -52,7 +52,7 @@ // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; ФайлВыгрузки = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["dtpath"]); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index b4e2b109..1b3dafff 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -75,7 +75,7 @@ // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); КорневойПутьПроекта = ПараметрыСистемы.КорневойПутьПроекта; ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; From 850309e4ad9ad054233829acaaa81f3db3598606 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 19 Oct 2023 23:13:13 +0200 Subject: [PATCH 20/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20loadext?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\244\320\260\320\271\320\273\320\260.os" | 42 +++++++++------- ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 16 ++++++ tests/xunits/loadext.os | 50 +++++++++++++++++++ 3 files changed, 89 insertions(+), 19 deletions(-) create mode 100644 tests/xunits/loadext.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" index 3c65247f..f18c32af 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" @@ -12,11 +12,13 @@ #Использовать logos #Использовать v8runner +#Область ОписаниеПеременных + Перем Лог; -Перем МенеджерКонфигуратора; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -33,6 +35,8 @@ | Пример: 1Cv8_$version.cfе выгрузит файл вида 1Cv8_1.2.3.4.cfе"); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--extension", "Имя расширения. Обязательный параметр."); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--updatedb", "Признак обновления расширения"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -42,18 +46,14 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) // -// Возвращаемое значение: -// Число - Результат выполенения команды +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Попытка - Лог = ДополнительныеПараметры.Лог; - Исключение - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - КонецПопытки; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ИмяРасширения = ПараметрыКоманды["--extension"]; Если Не ЗначениеЗаполнено(ИмяРасширения) Тогда @@ -61,24 +61,28 @@ КонецЕсли; ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + ОбновитьКонфигурациюИБ = ПараметрыКоманды["--updatedb"]; ПутьВходящий = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды, "-f", "--file")); МенеджерВерсий = Новый МенеджерВерсийФайлов1С(); ПутьВходящийСВерсией = МенеджерВерсий.НайтиФайлСВерсией(ПутьВходящий); - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог.Информация("Запускаем загрузку расширения из cfe..."); Попытка - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); - - МенеджерКонфигуратора.ЗагрузитьФайлРасширения(ПутьВходящийСВерсией, ИмяРасширения, - ПараметрыКоманды["--updatedb"]); + МенеджерСборки.ЗагрузитьФайлРасширения(ПутьВходящийСВерсией, ИмяРасширения, ОбновитьКонфигурациюИБ); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + МенеджерСборки.Деструктор(); + ВызватьИсключение; КонецПопытки; + Лог.Информация("Загрузка расширения из cfe завершена."); - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции // ВыполнитьКоманду + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 9b4d655a..763c58ff 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -126,6 +126,22 @@ УправлениеИБ.ВыгрузитьКонфигурациюВФайл(ПутьКНужномуФайлуРасширения, ИмяРасширения); КонецПроцедуры +// Загружает файл расширения в текущую базу данных. +// Параметры: +// ПутьКФайлу - Строка - Путь к файлу *.cfe +// ИмяРасширения - Строка +// ОбновитьКонфигурациюИБ - Булево +// +Процедура ЗагрузитьФайлРасширения(Знач ПутьКФайлу, Знач ИмяРасширения, Знач ОбновитьКонфигурациюИБ = Ложь) Экспорт + + УправлениеИБ.ЗагрузитьКонфигурацию(ПутьКФайлу, ИмяРасширения); + + Если ОбновитьКонфигурациюИБ Тогда + УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения); + КонецЕсли; + +КонецПроцедуры + // Возвращает каталог времнной ИБ // // Возвращаемое значение: diff --git a/tests/xunits/loadext.os b/tests/xunits/loadext.os new file mode 100644 index 00000000..c6611ebf --- /dev/null +++ b/tests/xunits/loadext.os @@ -0,0 +1,50 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ЗагузитьРасширениеИзФайлаIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("loadext"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + ФайлCfe = Исполнитель.ПутьТестовыхДанных("Extension1.cfe"); + Исполнитель.ДобавитьПараметр("--file", ФайлCfe); + Исполнитель.ДобавитьПараметр("--extension", "Расширение1"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Загрузка расширения из cfe завершена."); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти From 2cd7e613a75098c14d5f278fb1f1a17098d203bc Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Fri, 20 Oct 2023 00:25:10 +0200 Subject: [PATCH 21/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20unloadext?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\222\320\244\320\260\320\271\320\273.os" | 39 +++++++++----- tests/xunits/unloadext.os | 51 +++++++++++++++++++ ...20\276\320\274\320\260\320\275\320\264.os" | 5 ++ 3 files changed, 81 insertions(+), 14 deletions(-) create mode 100644 tests/xunits/unloadext.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\244\320\260\320\271\320\273.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\244\320\260\320\271\320\273.os" index 5a127c3d..66f6e3ee 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\244\320\260\320\271\320\273.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\244\320\260\320\271\320\273.os" @@ -12,10 +12,13 @@ #Использовать logos #Использовать v8runner +#Область ОписаниеПеременных + Перем Лог; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -29,7 +32,8 @@ Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "cfepath", "Путь к результату - выгружаемому файлу расширения (*.cfe)"); Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "extname", "Имя расширения"); - + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -39,28 +43,35 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + ФайлРасширения = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["cfepath"]); + ИмяРасширения = ПараметрыКоманды["extname"]; - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог.Информация("Запускаем выгрузку расширения в cfe..."); Попытка - МенеджерКонфигуратора.ВыгрузитьРасширениеВФайл( - ПараметрыКоманды["cfepath"], - ПараметрыКоманды["extname"] - ); + МенеджерСборки.ВыгрузитьРасширениеВФайл(ФайлРасширения, ИмяРасширения); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + МенеджерСборки.Деструктор(); + ВызватьИсключение; КонецПопытки; + Лог.Информация("Выгрузка расширения в cfe завершена."); - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции // ВыполнитьКоманду + +#КонецОбласти diff --git a/tests/xunits/unloadext.os b/tests/xunits/unloadext.os new file mode 100644 index 00000000..bb3ce417 --- /dev/null +++ b/tests/xunits/unloadext.os @@ -0,0 +1,51 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ВыгрузитьРасширениеВФайлIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("unloadext"); + Исполнитель.ДобавитьПараметр("РасширениеНовое1.cfe"); + Исполнитель.ДобавитьПараметр("Расширение1"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.СоздатьПустоеРасширение("Расширение1", "Расш1_"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Выгрузка расширения в cfe завершена."); + Исполнитель.ОжидаемЧтоФайлСуществует("РасширениеНовое1.cfe"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" index 7ce4f869..c10121b7 100644 --- "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" +++ "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" @@ -9,6 +9,7 @@ Перем Аргументы; Перем СпособВывода; Перем КаталогКоманды; +Перем УправлениеИБ; #КонецОбласти @@ -89,6 +90,10 @@ КонецПроцедуры +Процедура СоздатьПустоеРасширение(ИмяРасширения, ПрефиксИмен) Экспорт + УправлениеИБ.СоздатьРасширение(ИмяРасширения, ПрефиксИмен); +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытий From 2f854a98ba8bce69a4f9500caf7db2493971f690 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Fri, 20 Oct 2023 22:22:25 +0200 Subject: [PATCH 22/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20updatedb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\206\320\270\320\270\320\221\320\224.os" | 38 ++++++++++----- ...20\265\321\202\320\276\320\264\321\213.os" | 2 +- tests/xunits/updatedb.os | 48 +++++++++++++++++++ ...20\276\320\274\320\260\320\275\320\264.os" | 13 +++++ 4 files changed, 89 insertions(+), 12 deletions(-) create mode 100644 tests/xunits/updatedb.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\224.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\224.os" index d2517a25..52e21486 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\224.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\224.os" @@ -13,8 +13,13 @@ #Использовать v8runner -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#Область ОписаниеПеременных + +Перем Лог; + +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -31,7 +36,8 @@ "Поддержка режима реструктуризации -v2 на сервере"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--dynamic", "Динамическое обновление конфигурации"); - + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); КонецПроцедуры // ЗарегистрироватьКоманду @@ -39,22 +45,32 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - - ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; - - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); РежимРеструктуризации_В1 = ПараметрыКоманды["--v1"]; РежимРеструктуризации_В2 = ПараметрыКоманды["--v2"]; ДинамическоеОбновление = ПараметрыКоманды["--dynamic"]; - ОбщиеМетоды.ОбновитьКонфигурациюБД(МенеджерКонфигуратора, РежимРеструктуризации_В1, РежимРеструктуризации_В2, ДинамическоеОбновление); - МенеджерКонфигуратора.Деструктор(); + ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + + Лог.Информация("Запускаем обновление конфигурации базы данных..."); + ОбщиеМетоды.ОбновитьКонфигурациюБД(МенеджерСборки, РежимРеструктуризации_В1, РежимРеструктуризации_В2, ДинамическоеОбновление); + Лог.Информация("Обновление конфигурации базы данных завершено."); + + МенеджерСборки.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции // ВыполнитьКоманду + +#КонецОбласти diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" index b220ef43..3b826b5f 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" @@ -529,7 +529,7 @@ КонецЕсли; Исключение МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ВызватьИсключение; КонецПопытки; КонецПроцедуры diff --git a/tests/xunits/updatedb.os b/tests/xunits/updatedb.os new file mode 100644 index 00000000..ba6f44d9 --- /dev/null +++ b/tests/xunits/updatedb.os @@ -0,0 +1,48 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ВыгрузитьИнформационноюБазуВФайлIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("updatedb"); + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrc); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Обновление конфигурации базы данных завершено."); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" index c10121b7..866ee5c7 100644 --- "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" +++ "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" @@ -90,6 +90,19 @@ КонецПроцедуры +Процедура УстановитьКонтекстИБИзФайловКонфигурации(Каталог) Экспорт + + КаталогИБ = ОбъединитьПути(КаталогКоманды, "db-data"); + + УправлениеИБ = Новый УправлениеИБ; + УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогИБ); + УправлениеИБ.СоздатьИБИзФайловКонфигурации(Каталог); + + СтрокаСоединения = СтрШаблон("/F""%1""", КаталогИБ); + ДобавитьПараметр("--ibconnection", СтрокаСоединения); + +КонецПроцедуры + Процедура СоздатьПустоеРасширение(ИмяРасширения, ПрефиксИмен) Экспорт УправлениеИБ.СоздатьРасширение(ИмяРасширения, ПрефиксИмен); КонецПроцедуры From baa3009da9c37427e8067806de1c10244c2f50e3 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Fri, 20 Oct 2023 22:33:27 +0200 Subject: [PATCH 23/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20updateext?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\200\320\265\320\275\320\270\320\271.os" | 40 +++++++---- ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 18 +++++ tests/xunits/updateext.os | 68 +++++++++++++++++++ 3 files changed, 113 insertions(+), 13 deletions(-) create mode 100644 tests/xunits/updateext.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" index 74fbae45..767d5a58 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" @@ -10,10 +10,13 @@ #Использовать v8runner #Использовать asserts -Перем Лог; +#Область ОписаниеПеременных -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +Перем Лог; // Экземпляр логгера + +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -23,6 +26,9 @@ ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, ТекстОписания); Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "extensionName", "Имя расширения, которое нужно обновить"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры // ЗарегистрироватьКоманду @@ -31,29 +37,37 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + ИмяРасширения = ПараметрыКоманды["extensionName"]; МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); - - МенеджерКонфигуратора.ОбновитьРасширение(ПараметрыКоманды["extensionName"]); + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог.Информация("Запускаем обновление базы данных расширения ..."); Попытка - МенеджерКонфигуратора.ПоказатьСписокВсехРасширенийКонфигурации(); + МенеджерСборки.ОбновитьРасширение(ИмяРасширения); + МенеджерСборки.ПоказатьСписокВсехРасширенийКонфигурации(); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + МенеджерСборки.Деструктор(); + ВызватьИсключение; КонецПопытки; + Лог.Информация("Обновление базы данных расширения завершено."); - - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции // ВыполнитьКоманду + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 763c58ff..75b9b14b 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -100,6 +100,24 @@ КонецПроцедуры +// ОбновитьРасширение +// +// Параметры: +// ИмяРасширения - Строка - <описание параметра> +// +Процедура ОбновитьРасширение(Знач ИмяРасширения) Экспорт + + РежимДинамическогоОбновления = "disable"; + ЗавершатьСеансы = "force"; + + УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения, РежимДинамическогоОбновления, ЗавершатьСеансы); +КонецПроцедуры + +Процедура ПоказатьСписокВсехРасширенийКонфигурации() Экспорт + СписокРасширений = УправлениеИБ.СписокРасширений(); + Лог.Информация("Список расширений конфигурации:%2%1", СписокРасширений, Символы.ПС); +КонецПроцедуры + Процедура ВыгрузитьКонфигурациюВФайл(Знач ПутьКНужномуФайлуКонфигурации) Экспорт УправлениеИБ.ВыгрузитьКонфигурациюВФайл(ПутьКНужномуФайлуКонфигурации); diff --git a/tests/xunits/updateext.os b/tests/xunits/updateext.os new file mode 100644 index 00000000..cdbed212 --- /dev/null +++ b/tests/xunits/updateext.os @@ -0,0 +1,68 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ОбновитьРасширение() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("updateext"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.СоздатьПустоеРасширение("Расширение1", "Расш1_"); + Исполнитель.ДобавитьПараметр("Расширение1"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется версия платформы"); + Исполнитель.ОжидаемЧтоВыводСодержит("Обновление базы данных расширения завершено."); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ОбновитьРасширениеIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("updateext"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.СоздатьПустоеРасширение("Расширение1", "Расш1_"); + Исполнитель.ДобавитьПараметр("Расширение1"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Обновление базы данных расширения завершено."); + +КонецПроцедуры + + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти From a0a6e0b4852f64c54e16c3f3923cc8fcc6b30e5d Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sat, 21 Oct 2023 00:01:42 +0200 Subject: [PATCH 24/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20decompile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\200\320\260\321\206\320\270\320\270.os" | 120 ++++++++++++------ ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 51 +++++++- tests/xunits/decompile.os | 73 +++++++++++ 3 files changed, 198 insertions(+), 46 deletions(-) create mode 100644 tests/xunits/decompile.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" index 88054e08..b4ed5603 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" @@ -9,10 +9,13 @@ #Использовать asserts -Перем Лог; +#Область ОписаниеПеременных -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +Перем Лог; // Экземпляр логгера + +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -32,8 +35,12 @@ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-c", "Флаг выгрузки из текущей базы, краткая форма от --current"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--userenames", "Использовать файл переименований renames"); - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v", "Путь к файлу версии (ConfigDumpInfo.xml или его копия), краткая от --versions"); - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--versions", "Путь к файлу версии (ConfigDumpInfo.xml или его копия) или -v"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v", + "Путь к файлу версии (ConfigDumpInfo.xml или его копия), краткая от --versions"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--versions", + "Путь к файлу версии (ConfigDumpInfo.xml или его копия) или -v"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -43,62 +50,91 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Попытка - Лог = ДополнительныеПараметры.Лог; - Исключение - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - КонецПопытки; - - ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ПутьВходящий = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды, "-i", "--in")); ПутьИсходящий = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды, "-o", "--out")); - ВерсияПлатформы = ПараметрыКоманды["--v8version"]; ФайлВерсии = ОбщиеМетоды.ПолныйПуть(ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды, "-v", "--versions")); - СтрокаПодключения = ДанныеПодключения.СтрокаПодключения; + ИспользоватьПереименования = ПараметрыКоманды["--userenames"]; - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; + ИспользоватьТекущуюИБ = ОбщиеМетоды.ЕстьФлагКоманды(ПараметрыКоманды, "-c", "--current"); + + Если ИспользоватьТекущуюИБ Тогда + РазобратьНаИсходникиТекущуюКонфигурацию(ПараметрыКоманды, + ПутьИсходящий, ФайлВерсии, ИспользоватьПереименования); + Иначе + РазобратьНаИсходникиФайлКонфигурации(ПараметрыКоманды, + ПутьВходящий, ПутьИсходящий, ФайлВерсии, ИспользоватьПереименования); + КонецЕсли; - Попытка - ИзТекущейКонфигурации = ОбщиеМетоды.ЕстьФлагКоманды(ПараметрыКоманды, "-c", "--current"); - ИзТекущейКонфигурации = ?(ИзТекущейКонфигурации, ИзТекущейКонфигурации, - НЕ (ЗначениеЗаполнено(ПутьВходящий) И Новый Файл(ПутьВходящий).Существует())); - ТолькоИзмененные = ?(ИспользоватьПереименования, Ложь, Истина); - Если ИзТекущейКонфигурации Тогда + Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + +КонецФункции // ВыполнитьКоманду + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции - Лог.Информация("Запускаю выгрузку конфигурации в исходники"); +Процедура РазобратьНаИсходникиТекущуюКонфигурацию(ПараметрыКоманды, + ПутьИсходящий, ФайлВерсии, ИспользоватьПереименования) + + ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + ТолькоИзмененные = ?(ИспользоватьПереименования, Ложь, Истина); + + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог.Информация("Запускаем разборку конфигурации текущей ИБ на исходники..."); + Попытка + МенеджерСборки.РазобратьНаИсходникиТекущуюКонфигурацию(ПутьИсходящий, ФайлВерсии, + ТолькоИзмененные, ИспользоватьПереименования); + Исключение + МенеджерСборки.Деструктор(); + ВызватьИсключение; + КонецПопытки; + Лог.Информация("Разборка конфигурации текущей ИБ на исходники завершена."); - МенеджерКонфигуратора.РазобратьНаИсходникиТекущуюКонфигурацию(ПутьИсходящий, ФайлВерсии, - ТолькоИзмененные, ИспользоватьПереименования); + МенеджерСборки.Деструктор(); + +КонецПроцедуры - Иначе +Процедура РазобратьНаИсходникиФайлКонфигурации(ПараметрыКоманды, + ПутьВходящий, ПутьИсходящий, ФайлВерсии, ИспользоватьПереименования) - КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); - СтрокаПодключения = "/F" +КаталогВременнойИБ; - МенеджерКонфигуратора.Инициализация(ПараметрыКоманды, СтрокаПодключения, , , - ВерсияПлатформы, ПараметрыКоманды["--uccode"], - ДанныеПодключения.КодЯзыка, ДанныеПодключения.КодЯзыкаСеанса); - МенеджерКонфигуратора.УправлениеКонфигуратором().СоздатьФайловуюБазу(КаталогВременнойИБ); + Если НЕ ФС.ФайлСуществует(ПутьВходящий) Тогда + ВызватьИсключение СтрШаблон("Файл cf %1 не найден", ПутьВходящий); + КонецЕсли; - МенеджерКонфигуратора.ВыгрузитьКонфигурациюВИсходники(ПутьВходящий, ПутьИсходящий, ФайлВерсии, - ИспользоватьПереименования); - ВременныеФайлы.УдалитьФайл(КаталогВременнойИБ); + ОбщиеМетоды.УстановитьИспользованиеВременнойБазы(ПараметрыКоманды); + ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; - КонецЕсли; + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + КаталогВременнойИБ = МенеджерСборки.КаталогВременнойИБ(); + Лог.Информация("Запускаем разборку cf-файла на исходники..."); + Попытка + + МенеджерСборки.СоздатьФайловуюБазу(КаталогВременнойИБ); + МенеджерСборки.ВыгрузитьКонфигурациюВИсходники(ПутьВходящий, + ПутьИсходящий, ФайлВерсии, ИспользоватьПереименования); + Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + МенеджерСборки.Деструктор(); + ВызватьИсключение; КонецПопытки; + Лог.Информация("Разборка cf-файла на исходники завершена."); - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); - Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; -КонецФункции // ВыполнитьКоманду +КонецПроцедуры + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 75b9b14b..fa59af2e 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -78,11 +78,12 @@ Процедура ЗагрузитьФайлКонфигурации(Знач ПутьКФайлу, Знач СниматьСПоддержки = Истина) Экспорт ИмяРасширения = ""; - УправлениеИБ.ЗагрузитьКонфигурацию(ПутьКФайлу, ИмяРасширения); - + Если СниматьСПоддержки Тогда - УправлениеИБ.СнятьСПоддержки(); - КонецЕсли; + УправлениеИБ.СнятьСПоддержки(); + КонецЕсли; + + УправлениеИБ.ЗагрузитьКонфигурацию(ПутьКФайлу, ИмяРасширения); КонецПроцедуры @@ -124,6 +125,48 @@ КонецПроцедуры +// Разбор текущей конфигураций на исходники штатной выгрузкой 1С +// +// Параметры: +// КаталогВыгрузки - Строка - Путь к каталогу выгрузки +// ФайлВерсии - Строка - Путь к файлу версии +// ТолькоИзмененные - Булево - Выгружать только измененные файлы для ускорения выгрузки +// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать по папкам согласно иерархии метаданных +// +Процедура РазобратьНаИсходникиТекущуюКонфигурацию(КаталогВыгрузки, Знач ФайлВерсии = "", + Знач ТолькоИзмененные = Истина, + Знач ИспользоватьПереименования = Ложь) Экспорт + + НеВыгружатьНеСуществующиеОбъекты = Истина; + ИмяРасширения = ""; + ВАрхив = Ложь; + НаСервере = Ложь; + КоличествоПотоков = 0; + + ФС.ОбеспечитьКаталог(КаталогВыгрузки); + Синхронизировать = ТолькоИзмененные И ФС.ФайлСуществует(ФайлВерсии); + + УправлениеИБ.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки, ФайлВерсии, ИмяРасширения, + Синхронизировать, ВАрхив, НаСервере, КоличествоПотоков, НеВыгружатьНеСуществующиеОбъекты); + +КонецПроцедуры + +// Выгружает файл конфигурации в исходники +// +// Параметры: +// ФайлКонфигурации - Строка - Путь к источнику - выгружаемому файлу конфигурации (*.cf) +// ВыходнойКаталог - Строка - Путь к каталогу выгрузки +// ФайлВерсии - Строка - Путь к файлу версии +// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать по папкам согласно иерархии метаданных +// +Процедура ВыгрузитьКонфигурациюВИсходники(Знач ФайлКонфигурации, Знач ВыходнойКаталог, + Знач ФайлВерсии = "", Знач ИспользоватьПереименования = Ложь) Экспорт + + ЗагрузитьФайлКонфигурации(ФайлКонфигурации); + РазобратьНаИсходникиТекущуюКонфигурацию(ВыходнойКаталог, ФайлВерсии, Истина, ИспользоватьПереименования); + +КонецПроцедуры + Процедура СобратьИзИсходниковРасширение(Каталог, ИмяРасширения, Обновить = Ложь) Экспорт УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(Каталог, ИмяРасширения); diff --git a/tests/xunits/decompile.os b/tests/xunits/decompile.os new file mode 100644 index 00000000..f13fe92c --- /dev/null +++ b/tests/xunits/decompile.os @@ -0,0 +1,73 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_РазобратьТекущуюКонфигурациюНаИсходникиIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("decompile"); + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrc); + Исполнитель.ДобавитьПараметр("--out", "src"); + Исполнитель.ДобавитьФлаг("--current"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Разборка конфигурации текущей ИБ на исходники завершена."); + Исполнитель.ОжидаемЧтоФайлСуществует("src/Configuration.xml"); + Исполнитель.ОжидаемЧтоФайлСуществует("src/Catalogs/Справочник1.xml"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_РазобратьФайлКонфигурацииНаИсходникиIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("decompile"); + ФайлCf = Исполнитель.ПутьТестовыхДанных("1Cv8.cf"); + Исполнитель.ДобавитьПараметр("--in", ФайлCf); + Исполнитель.ДобавитьПараметр("--out", "src"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Разборка cf-файла на исходники завершена."); + Исполнитель.ОжидаемЧтоФайлСуществует("src/Configuration.xml"); + Исполнитель.ОжидаемЧтоФайлСуществует("src/Catalogs/Справочник1.xml"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти From ea8219bc47686478a786cb090c955f916fd3b265 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sat, 21 Oct 2023 01:13:02 +0200 Subject: [PATCH 25/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20decompileext?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\200\320\265\320\275\320\270\320\271.os" | 69 ++++++++----------- ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 24 +++++++ ...20\260\321\202\320\276\321\200\320\260.os" | 20 ++++++ tests/xunits/decompileext.os | 56 +++++++++++++++ ...20\276\320\274\320\260\320\275\320\264.os" | 4 ++ 5 files changed, 132 insertions(+), 41 deletions(-) create mode 100644 tests/xunits/decompileext.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" index e211c0a3..31ac3752 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" @@ -9,10 +9,13 @@ #Использовать asserts -Перем Лог; +#Область ОписаниеПеременных -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +Перем Лог; // Экземпляр логгера + +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -24,6 +27,9 @@ Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "extensionName", "Имя расширения, под которым оно зарегистрировано в списке расширений"); Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "outputPath", "Путь к исходникам расширения"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры // ЗарегистрироватьКоманду @@ -32,54 +38,35 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; - ПутьИсходников = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["outputPath"]); - - РазобратьНаИсходникиРасширение( - ПараметрыКоманды["extensionName"], ПутьИсходников, - ДанныеПодключения, - ПараметрыКоманды["--v8version"], ПараметрыКоманды["--uccode"], ПараметрыКоманды - ); - - Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; -КонецФункции + ИмяРасширения = ПараметрыКоманды["extensionName"]; + КаталогВыгрузки = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["outputPath"]); -Процедура РазобратьНаИсходникиРасширение(Знач ИмяРасширения, Знач Каталог, - Знач ДанныеПодключения, - Знач ВерсияПлатформы, Знач КлючРазрешенияЗапуска, - Знач ПараметрыКоманды) - - Лог.Информация("Выполняю разборку расширения %1 на исходники в каталог %2", ИмяРасширения, Каталог); - Ожидаем.Что(ДанныеПодключения.СтрокаПодключения, "Ожидаем, что строка подключения к ИБ задана, а это не так").Заполнено(); - - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - МенеджерКонфигуратора.Инициализация(ПараметрыКоманды, ДанныеПодключения.СтрокаПодключения, - ДанныеПодключения.Пользователь, ДанныеПодключения.Пароль, - ВерсияПлатформы, КлючРазрешенияЗапуска, - ДанныеПодключения.КодЯзыка, ДанныеПодключения.КодЯзыкаСеанса); - - Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); - - ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); - ПараметрыЗапуска.Добавить("/Visible"); - ПараметрыЗапуска.Добавить("/DumpConfigToFiles """ + Каталог + """"); - ПараметрыЗапуска.Добавить("-Extension """ + ИмяРасширения + """"); + МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + Лог.Информация("Запускаем разборку расширения на исходники..."); Попытка - Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); + МенеджерСборки.РазобратьРасширениеНаИсходники(КаталогВыгрузки, ИмяРасширения); Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + МенеджерСборки.Деструктор(); + ВызватьИсключение; КонецПопытки; + Лог.Информация("Разборка расширения на исходники завершена."); - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); - Лог.Информация("Разборка расширения завершена"); + Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + +КонецФункции -КонецПроцедуры +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index fa59af2e..68c79361 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -151,6 +151,30 @@ КонецПроцедуры +// Выгружает расширение в исходники +// +// Параметры: +// КаталогВыгрузки - Строка - Путь к каталогу выгрузки +// ИмяРасширения - Строка - Имя расширения +// ФайлВерсии - Строка - Путь к файлу версии +// ТолькоИзмененные - Булево - Выгружать только измененные файлы для ускорения выгрузки +// +Процедура РазобратьРасширениеНаИсходники(КаталогВыгрузки, ИмяРасширения, + Знач ФайлВерсии = "", Знач ТолькоИзмененные = Истина) Экспорт + + НеВыгружатьНеСуществующиеОбъекты = Истина; + ВАрхив = Ложь; + НаСервере = Ложь; + КоличествоПотоков = 0; + + ФС.ОбеспечитьКаталог(КаталогВыгрузки); + Синхронизировать = ТолькоИзмененные И ФС.ФайлСуществует(ФайлВерсии); + + УправлениеИБ.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки, ФайлВерсии, ИмяРасширения, + Синхронизировать, ВАрхив, НаСервере, КоличествоПотоков, НеВыгружатьНеСуществующиеОбъекты); + +КонецПроцедуры + // Выгружает файл конфигурации в исходники // // Параметры: diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" index 393cf69e..950a7039 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" @@ -891,6 +891,26 @@ КонецПроцедуры +// Выгружает расширение в исходники +// +// Параметры: +// КаталогВыгрузки - Строка - Путь к каталогу выгрузки +// ИмяРасширения - Строка - Имя расширения +// ФайлВерсии - Строка - Путь к файлу версии +// ТолькоИзмененные - Булево - Выгружать только измененные файлы для ускорения выгрузки +// +Процедура РазобратьРасширениеНаИсходники(КаталогВыгрузки, ИмяРасширения, + Знач ФайлВерсии = "", Знач ТолькоИзмененные = Истина) Экспорт + + ФС.ОбеспечитьКаталог(КаталогВыгрузки); + Синхронизировать = ТолькоИзмененные И ФС.ФайлСуществует(ФайлВерсии); + + ФорматВыгрузки = ""; // Всегда иерархический + УправлениеКонфигуратором.ВыгрузитьРасширениеВФайлы(КаталогВыгрузки, ИмяРасширения, ФорматВыгрузки, + Синхронизировать, ФайлВерсии); + +КонецПроцедуры + // Выгружает файл конфигурации в исходники // // Параметры: diff --git a/tests/xunits/decompileext.os b/tests/xunits/decompileext.os new file mode 100644 index 00000000..d616bd69 --- /dev/null +++ b/tests/xunits/decompileext.os @@ -0,0 +1,56 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_РазобратьРасширениеНаИсходникиIbcmd() Экспорт + + // Дано + ИмяРасширения = "РасширениеНовое1"; + + Исполнитель = Новый Тест_ИсполнительКоманд("decompileext"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cfe"); + Исполнитель.СоздатьРасширениеИзФайлов(ИмяРасширения, КаталогSrc); + + Исполнитель.ДобавитьПараметр(ИмяРасширения); + Исполнитель.ДобавитьПараметр("src"); + Исполнитель.ДобавитьФлаг("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); + Исполнитель.ОжидаемЧтоВыводСодержит("Разборка расширения на исходники завершена."); + Исполнитель.ОжидаемЧтоФайлСуществует("src/Configuration.xml"); + Исполнитель.ОжидаемЧтоФайлСуществует("src/Ext/ManagedApplicationModule.bsl"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" index 866ee5c7..85de8a6c 100644 --- "a/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" +++ "b/tests/xunits/utils/classes/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" @@ -107,6 +107,10 @@ УправлениеИБ.СоздатьРасширение(ИмяРасширения, ПрефиксИмен); КонецПроцедуры +Процедура СоздатьРасширениеИзФайлов(ИмяРасширения, КаталогИсходников) Экспорт + УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(КаталогИсходников, ИмяРасширения); +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытий From 4037bd6aac9455c320828360277f69c2e61fb8ef Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 5 Nov 2023 11:52:33 +0200 Subject: [PATCH 26/59] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B4=D0=B8=D0=B0=D0=B3=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BD=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=D1=8E=D1=89=D0=B8=D1=85=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D0=B5=20=D0=98=D0=91=20=D0=B8=D0=B7=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" index 950a7039..dbec98e9 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" @@ -1048,7 +1048,6 @@ Процедура ЗагрузитьИнфобазуИзФайла(Знач ПутьКЗагружаемомуФайлуСДанными, Знач КоличествоЗаданий = 0) Экспорт Лог.Информация("Запускаю загрузку информационной базы из файла"); - ТекущаяПроцедура = "ЗагрузитьИнфобазуИзФайла"; Попытка УправлениеКонфигуратором.ЗагрузитьИнформационнуюБазу(ПутьКЗагружаемомуФайлуСДанными, КоличествоЗаданий); @@ -1058,7 +1057,7 @@ КонецЕсли; Исключение Лог.Ошибка(УправлениеКонфигуратором.ВыводКоманды()); - ВызватьИсключение ТекущаяПроцедура; + ВызватьИсключение; КонецПопытки; Лог.Информация("Загрузка из файла завершена."); From 0520e0d4b91b08b9eec453192f4f6782c18bcc62 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 5 Nov 2023 11:53:11 +0200 Subject: [PATCH 27/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=B4=D0=B6=D0=B5=D1=80=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8?= =?UTF-8?q?=D0=B3=D1=83=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\320\234\320\265\321\202\320\276\320\264\321\213.os" | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" index 3b826b5f..514fdbe2 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" @@ -674,11 +674,11 @@ Если Не ИспользоватьIbcm Тогда Лог.Отладка("Используем конфигуратор."); - Возврат Новый МенеджерКонфигуратора(); + Возврат НовыйМенеджерКонфигуратора(); ИначеЕсли ЗначениеЗаполнено(СтрокаПодключенияИБ) И Не ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключенияИБ) Тогда Лог.Информация("Серверные ИБ не поддерживаются ibcmd. Используем конфигуратор."); - Возврат Новый МенеджерКонфигуратора(); + Возврат НовыйМенеджерКонфигуратора(); Иначе Лог.Отладка("Используем ibcmd."); @@ -688,6 +688,11 @@ КонецФункции +Функция НовыйМенеджерКонфигуратора() Экспорт + Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); + Возврат Новый МенеджерКонфигуратора(); +КонецФункции + Функция ЛогКоманды(ДополнительныеПараметры) Экспорт Возврат ДополнительныеПараметры.Лог; КонецФункции From f468a1060ad93df601ef1bada9163ff9f2e14d66 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 5 Nov 2023 11:53:43 +0200 Subject: [PATCH 28/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=20--ibcmd=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20update-dev?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\266\320\265\320\275\320\270\321\217.os" | 275 ++++++++++-------- tests/xunits/update-dev.os | 142 +++++++++ 2 files changed, 298 insertions(+), 119 deletions(-) create mode 100644 tests/xunits/update-dev.os diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index 212cd72e..eb33e097 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -11,9 +11,24 @@ #Использовать v8runner #Использовать fs +#Область ОписаниеПеременных + Перем Лог; Перем КорневойПутьПроекта; +Перем ДанныеПодключения; +Перем ПараметрыХранилища; +Перем РежимыРеструктуризации; +Перем РежимРазработчика; +Перем ПутьКИсходникам; +Перем ПутьКФайлуВыгрузки; +Перем ИнкрементальнаяЗагрузкаGit; +Перем СниматьСПоддержки; + +#КонецОбласти + +#Область ОбработчикиСобытий + Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт ТекстОписания = @@ -58,6 +73,9 @@ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--v2", "Поддержка режима реструктуризации -v2 на сервере"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibcmd", + "Использовать утилиту ibcmd вместо конфигуратора"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры // ЗарегистрироватьКоманду @@ -66,11 +84,14 @@ // // Параметры: // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений -// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) +// ДополнительныеПараметры - Структура - дополнительные параметры (необязательно) +// +// Возвращаемое значение: +// Число - Код возврата команды. // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); КорневойПутьПроекта = ПараметрыСистемы.КорневойПутьПроекта; ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; @@ -86,138 +107,56 @@ РежимыРеструктуризации.Вставить("Первый", ПараметрыКоманды["--v1"]); РежимыРеструктуризации.Вставить("Второй", ПараметрыКоманды["--v2"]); - ОбновитьБазуДанных(ПараметрыКоманды["--src"], ПараметрыКоманды["--dt"], - ДанныеПодключения, - ПараметрыКоманды["--uccode"], - ПараметрыКоманды["--v8version"], ПараметрыКоманды["--dev"], - ПараметрыХранилища, РежимыРеструктуризации, - ПараметрыКоманды); + ПутьКИсходникам = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--src"]); + ПутьКФайлуВыгрузки = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--dt"]); + + ИнкрементальнаяЗагрузкаGit = ПараметрыКоманды["--git-increment"]; + СниматьСПоддержки = ПараметрыКоманды["--disable-support"]; + РежимРазработчика = ПараметрыКоманды["--dev"]; + + ОбновитьБазуДанных(ПараметрыКоманды); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; КонецФункции -Процедура ОбновитьБазуДанных(Знач ПутьИсходников, Знач ПутьАрхиваИБ, - Знач ДанныеПодключения, - Знач КлючРазрешенияЗапуска, Знач ВерсияПлатформы, Знач РежимРазработчика, - Знач ПараметрыХранилища, РежимыРеструктуризации, - ПараметрыКоманды) +#КонецОбласти - ТекущаяПроцедура = "Запускаем обновление"; +#Область СлужебныеПроцедурыИФункции - СниматьСПоддержки = ПараметрыКоманды["--disable-support"]; - ИнкрементальнаяЗагрузкаGit = ПараметрыКоманды["--git-increment"]; +Процедура ОбновитьБазуДанных(ПараметрыКоманды) - СтрокаПодключения = ДанныеПодключения.ПутьБазы; - Пользователь = ДанныеПодключения.Пользователь; - Пароль = ДанныеПодключения.Пароль; - КодЯзыка = ДанныеПодключения.КодЯзыка; - КодЯзыкаСеанса = ДанныеПодключения.КодЯзыкаСеанса; - - СтрокаПодключенияХранилище = ПараметрыХранилища.СтрокаПодключения; - ПользовательХранилища = ПараметрыХранилища.Пользователь; - ПарольХранилища = ПараметрыХранилища.Пароль; - ВерсияХранилища = ПараметрыХранилища.Версия; - РежимОбновленияХранилища = ПараметрыХранилища.РежимОбновления; - - Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); - - Если РежимРазработчика = Истина Тогда - КаталогБазы = ОбъединитьПути(КорневойПутьПроекта, "./build/ibservice"); - СтрокаПодключения = "/F""" + КаталогБазы + """"; - КонецЕсли; + ТекущаяПроцедура = "Запускаем обновление"; - Если ПустаяСтрока(СтрокаПодключения) Тогда - КаталогБазы = ОбъединитьПути(КорневойПутьПроекта, ?(РежимРазработчика = Истина, "./build/ibservice", "./build/ib")); - СтрокаПодключения = "/F""" + КаталогБазы + """"; + Если ПустаяСтрока(ДанныеПодключения.ПутьБазы) Тогда + ДанныеПодключения = СоздатьДанныеПодключения(ДанныеПодключения); КонецЕсли; + СтрокаПодключения = ДанныеПодключения.ПутьБазы; + Лог.Отладка("ИнициализироватьБазуДанных СтрокаПодключения:" + СтрокаПодключения); - Если Лев(СтрокаПодключения, 2) = "/F" Тогда - КаталогБазы = ОбщиеМетоды.УбратьКавычкиВокругПути(Сред(СтрокаПодключения, 3, СтрДлина(СтрокаПодключения) - 2)); - ФайлБазы = Новый Файл(КаталогБазы); - Ожидаем.Что(ФайлБазы.Существует(), ТекущаяПроцедура + " папка с базой существует").ЭтоИстина(); + Если ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключения) Тогда + КаталогБазы = ОбщиеМетоды.КаталогФайловойИБ(СтрокаПодключения); + Ожидаем.Что(ФС.КаталогСуществует(КаталогБазы), ТекущаяПроцедура + " папка с базой существует").ЭтоИстина(); КонецЕсли; - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - // При первичной инициализации опускаем указание пользователя и пароля, т.к. их еще нет. - МенеджерКонфигуратора.Инициализация( - ПараметрыКоманды, СтрокаПодключения, "", "", - ВерсияПлатформы, КлючРазрешенияЗапуска, - КодЯзыка, КодЯзыкаСеанса); - - Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); - - Конфигуратор.УстановитьИмяФайлаСообщенийПлатформы(ВременныеФайлы.НовоеИмяФайла("log")); - - Конфигуратор.УстановитьКонтекст(СтрокаПодключения, "", ""); - Если Не ПустаяСтрока(ПутьАрхиваИБ) Тогда - ПутьАрхиваИБ = Новый Файл(ОбъединитьПути(КорневойПутьПроекта, ПутьАрхиваИБ)).ПолноеИмя; - Лог.Информация("Загружаем dt " + ПутьАрхиваИБ); - Попытка - Конфигуратор.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); - Конфигуратор.ЗагрузитьИнформационнуюБазу(ПутьАрхиваИБ); - Исключение - Лог.Ошибка("Не удалось загрузить:" + ОписаниеОшибки()); - КонецПопытки; + МенеджерСборки = НовыйМенеджерСборки(ПараметрыКоманды); + МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); + + Если ЗначениеЗаполнено(ПутьКИсходникам) Тогда + ЗагрузкаИзИсходников(МенеджерСборки); + ИначеЕсли ЗначениеЗаполнено(ПутьКФайлуВыгрузки) Тогда + ЗагрузкаИзФайлаВыгрузки(МенеджерСборки); + ИначеЕсли ПараметрыХранилища.РежимОбновления Тогда + ЗагрузкаИзХранилища(МенеджерСборки); + Иначе + Лог.Ошибка("Информационная база не обновлялась!"); КонецЕсли; - Конфигуратор.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); + ОбновитьКонфигурациюБД(МенеджерСборки); - Если Не ПустаяСтрока(ПутьИсходников) Тогда - - Если ИнкрементальнаяЗагрузкаGit Тогда - СписокФайлов = ПолучитьСтрокуИзмененныхФайлов(ПутьИсходников); - Иначе - СписокФайлов = ""; - КонецЕсли; - - Лог.Информация("Запускаю загрузку конфигурации из исходников"); - - Если Не ПустаяСтрока(СписокФайлов) Тогда - - Лог.Информация( - "Будет выполнена инкрементальная загрузка - |Измененные файлы: - |%1", - СтрСоединить(СтрРазделить(СписокФайлов, ";"), Символы.ПС) - ); - - КонецЕсли; - - ПутьИсходников = Новый Файл(ОбъединитьПути(КорневойПутьПроекта, ПутьИсходников)).ПолноеИмя; - - МенеджерКонфигуратора.СобратьИзИсходниковТекущуюКонфигурацию( - ПутьИсходников, СписокФайлов, СниматьСПоддержки); - - Если ИнкрементальнаяЗагрузкаGit Тогда - ЗаписатьХэшПоследнегоЗагруженногоКоммита(ПутьИсходников); - КонецЕсли; - - КонецЕсли; - - Попытка - - Если РежимОбновленияХранилища = Истина Тогда - Лог.Информация("Обновляем из хранилища"); - - МенеджерКонфигуратора.ЗапуститьОбновлениеИзХранилища( - СтрокаПодключенияХранилище, ПользовательХранилища, ПарольХранилища, - ВерсияХранилища); - КонецЕсли; - - Если РежимРазработчика = Ложь Или РежимыРеструктуризации.Первый Или РежимыРеструктуризации.Второй Тогда - ОбщиеМетоды.ОбновитьКонфигурациюБД(МенеджерКонфигуратора, - РежимыРеструктуризации.Первый, РежимыРеструктуризации.Второй); - КонецЕсли; - - Исключение - МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - КонецПопытки; - - МенеджерКонфигуратора.Деструктор(); + МенеджерСборки.Деструктор(); КонецПроцедуры @@ -229,7 +168,8 @@ Возврат ""; КонецЕсли; - ТекущийКаталог = ТекущийКаталог(); + ТекущийКаталог = КорневойПутьПроекта; + ОтносительныйПутьИсходников = ФС.ОтносительныйПуть(КорневойПутьПроекта, ПутьИсходников, "/"); КоманднаяСтрока = СтрШаблон("git diff --name-only %1 HEAD", Хэш); @@ -242,7 +182,7 @@ Пока Процесс.ПотокВывода.ЕстьДанные Цикл СтрокаВывода = Процесс.ПотокВывода.ПрочитатьСтроку(); - Если СтрНачинаетсяС(СтрокаВывода, СтрЗаменить(ПутьИсходников, "./", "")) + Если СтрНачинаетсяС(СтрокаВывода, ОтносительныйПутьИсходников) И Не ФайлВСпискеИсключений(СтрокаВывода) Тогда СтрокаВывода = СкорректироватьПутьКИзменениюФормы(СтрокаВывода); @@ -263,6 +203,13 @@ Если ЗначениеЗаполнено(СтрокаИзмененныхФайлов) Тогда СтрокаИзмененныхФайлов = Лев(СтрокаИзмененныхФайлов, СтрДлина(СтрокаИзмененныхФайлов) - 1); + + ИзменныеФайлыЛог = СтрСоединить(СтрРазделить(СтрокаИзмененныхФайлов, ";"), Символы.ПС); + Лог.Информация( "Будет выполнена инкрементальная загрузка + |Измененные файлы: + |%1", + ИзменныеФайлыЛог + ); КонецЕсли; Возврат СтрокаИзмененныхФайлов; @@ -289,7 +236,7 @@ ИмяФайла = ФайлПредыдущегоГитКоммита(ПутьИсходников).ПолноеИмя; - ТекущийКаталог = ТекущийКаталог(); + ТекущийКаталог = КорневойПутьПроекта; КоманднаяСтрока = "git rev-parse --short HEAD"; @@ -345,3 +292,93 @@ Функция ИмяФайлаПредыдущегоГитКоммита() Возврат "lastUploadedCommit.txt"; КонецФункции + +Функция НовыйМенеджерСборки(ПараметрыКоманды) + + Если ПараметрыХранилища.РежимОбновления Тогда + Возврат ОбщиеМетоды.НовыйМенеджерКонфигуратора(); + Иначе + Возврат ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); + КонецЕсли; + +КонецФункции + +Функция СоздатьДанныеПодключения(ДанныеПодключения) + + _ДанныеПодключения = Новый Структура(ДанныеПодключения); + ЗаполнитьЗначенияСвойств(_ДанныеПодключения, ДанныеПодключения); + КаталогБазы = ОбъединитьПути(КорневойПутьПроекта, ?(РежимРазработчика = Истина, "./build/ibservice", "./build/ib")); + Файл = Новый Файл(КаталогБазы); + _ДанныеПодключения.ПутьБазы = "/F""" + Файл.ПолноеИмя + """"; + _ДанныеПодключения.СтрокаПодключения = "/F""" + Файл.ПолноеИмя + """"; + + Возврат _ДанныеПодключения; + +КонецФункции + +Процедура ЗагрузкаИзИсходников(МенеджерСборки) + + Лог.Информация("Запускаем обновление конфигурации из исходников..."); + Если ИнкрементальнаяЗагрузкаGit Тогда + СписокФайлов = ПолучитьСтрокуИзмененныхФайлов(ПутьКИсходникам); + Иначе + СписокФайлов = ""; + КонецЕсли; + + Попытка + МенеджерСборки.СобратьИзИсходниковТекущуюКонфигурацию(ПутьКИсходникам, СписокФайлов, СниматьСПоддержки); + Исключение + МенеджерСборки.Деструктор(); + ВызватьИсключение; + КонецПопытки; + + Если ИнкрементальнаяЗагрузкаGit Тогда + ЗаписатьХэшПоследнегоЗагруженногоКоммита(ПутьКИсходникам); + КонецЕсли; + + Лог.Информация("Информационная база обновлена из исходников."); + +КонецПроцедуры + +Процедура ЗагрузкаИзФайлаВыгрузки(МенеджерСборки) + + Лог.Информация("Запускаем обновление конфигурации из dt-файла..."); + Попытка + МенеджерСборки.ЗагрузитьИнфобазуИзФайла(ПутьКФайлуВыгрузки); + Исключение + МенеджерСборки.Деструктор(); + ВызватьИсключение; + КонецПопытки; + Лог.Информация("Информационная база обновлена из файла выгрузки."); + +КонецПроцедуры + +Процедура ЗагрузкаИзХранилища(МенеджерКонфигуратора) + + Лог.Информация("Обновляем из хранилища"); + Попытка + МенеджерКонфигуратора.ЗапуститьОбновлениеИзХранилища( + ПараметрыХранилища.СтрокаПодключения, ПараметрыХранилища.Пользователь, ПараметрыХранилища.Пароль, + ПараметрыХранилища.Версия); + Исключение + МенеджерКонфигуратора.Деструктор(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +Процедура ОбновитьКонфигурациюБД(МенеджерСборки) + + Попытка + Если РежимРазработчика = Ложь Или РежимыРеструктуризации.Первый Или РежимыРеструктуризации.Второй Тогда + ОбщиеМетоды.ОбновитьКонфигурациюБД(МенеджерСборки, + РежимыРеструктуризации.Первый, РежимыРеструктуризации.Второй); + КонецЕсли; + Исключение + МенеджерСборки.Деструктор(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти diff --git a/tests/xunits/update-dev.os b/tests/xunits/update-dev.os new file mode 100644 index 00000000..4b2626ed --- /dev/null +++ b/tests/xunits/update-dev.os @@ -0,0 +1,142 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать gitrunner +#Использовать "utils" +#Использовать "..\.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +//&Тест +Процедура ТестДолжен_ОбновитьФайловуюБазуИзИсходниковIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("update-dev"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.ДобавитьПараметр("--src", КаталогSrc); + Исполнитель.ДобавитьПараметр("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); + Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из исходников."); + +КонецПроцедуры + +//&Тест +Процедура ТестДолжен_ОбновитьФайловуюБазуИзФайлаВыгрузкиIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("update-dev"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + ФайлDt = Исполнитель.ПутьТестовыхДанных("1cv8.dt"); + Исполнитель.ДобавитьПараметр("--dt", ФайлDt); + Исполнитель.ДобавитьПараметр("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); + Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из файла выгрузки."); + +КонецПроцедуры + +//&Тест +Процедура ТестДолжен_ОбновитьФайловуюБазуИнкрементальноIbcmd() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("update-dev"); + УстановитьКонтекстИнкрементальнойЗагрузки(Исполнитель); + Исполнитель.ДобавитьПараметр("--src", "src/cf"); + Исполнитель.ДобавитьПараметр("--git-increment"); + Исполнитель.ДобавитьПараметр("--ibcmd"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(Исполнитель.КаталогКоманды(), ".git")); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); + Исполнитель.ОжидаемЧтоВыводСодержит("Будет выполнена инкрементальная загрузка"); + Исполнитель.ОжидаемЧтоВыводСодержит("ManagedApplicationModule.bsl"); + + Исполнитель.ОжидаемЧтоВыводСодержит("Обновление конфигурации БД завершено."); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ЗаписатьТекст(ИмяФайла, Текст) + + ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла); + ЗаписьТекста.ЗаписатьСтроку(Текст); + ЗаписьТекста.Закрыть(); + +КонецПроцедуры + +Процедура УстановитьКонтекстИнкрементальнойЗагрузки(Исполнитель) + + КаталогПроекта = Исполнитель.КаталогКоманды(); + КаталогИсходников = ОбъединитьПути(КаталогПроекта, "src", "cf"); + КаталогSrc = Исполнитель.ПутьТестовыхДанных("cf"); + + ФС.КопироватьСодержимоеКаталога(КаталогSrc, КаталогИсходников); + + Репозиторий = Новый ГитРепозиторий(); + Репозиторий.УстановитьРабочийКаталог(КаталогПроекта); + Репозиторий.Инициализировать(); + + _gitignore = ОбъединитьПути(КаталогПроекта, ".gitignore"); + ЗаписатьТекст(_gitignore, "lastUploadedCommit.txt"); + + Репозиторий.ДобавитьФайлВИндекс("."); + Репозиторий.Закоммитить("first commit"); + + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("rev-parse"); + ПараметрыКоманды.Добавить("--short"); + ПараметрыКоманды.Добавить("HEAD"); + Репозиторий.ВыполнитьКоманду(ПараметрыКоманды); + ПоследнийКоммит = Репозиторий.ПолучитьВыводКоманды(); + + lastUploadedCommit = ОбъединитьПути(КаталогИсходников, "lastUploadedCommit.txt"); + ЗаписатьТекст(lastUploadedCommit, ПоследнийКоммит); + + Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогИсходников); + + ManagedApplicationModule = ОбъединитьПути(КаталогИсходников, "Ext", "ManagedApplicationModule.bsl"); + ЗаписатьТекст(ManagedApplicationModule, "Процедура ПриНачалеРаботыСистемы() КонецПроцедуры"); + Репозиторий.ДобавитьФайлВИндекс("."); + Репозиторий.Закоммитить("second commit"); + +КонецПроцедуры + +#КонецОбласти From 53ee7684fe4295a86a6ab717971cb5d17ca4239d Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 5 Nov 2023 11:54:16 +0200 Subject: [PATCH 29/59] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=D1=8B=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BE=D0=BA=D1=80=D1=83=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\266\320\265\320\275\320\270\321\217.os" | 85 ++++++------------- 1 file changed, 25 insertions(+), 60 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index 1b3dafff..6c2bc81c 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -18,10 +18,12 @@ // Параметры команды Перем ДанныеПодключения; +Перем ПараметрыХранилища; +Перем РежимыРеструктуризации; +Перем РежимРазработчика; Перем ПутьКФайлуКонфигурации; Перем ПутьКИсходникам; Перем ПутьКФайлуВыгрузки; -Перем ИспользоватьIbcmd; // Флаг использования утилиты ibcmd #КонецОбласти @@ -94,12 +96,9 @@ ПутьКИсходникам = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--src"]); ПутьКФайлуВыгрузки = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--dt"]); ПутьКФайлуКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--cf"]); - ИспользоватьIbcmd = ПараметрыКоманды["--ibcmd"]; - - ИнициализироватьБазуДанных(РежимыРеструктуризации, - ПараметрыКоманды["--v8version"], ПараметрыКоманды["--dev"], - ПараметрыХранилища, - ПараметрыКоманды["--nocacheuse"], + РежимРазработчика = ПараметрыКоманды["--dev"]; + + ИнициализироватьБазуДанных(ПараметрыКоманды["--v8version"], ПараметрыКоманды["--nocacheuse"], ПараметрыКоманды); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; @@ -110,9 +109,8 @@ #Область СлужебныеПроцедурыИФункции -Процедура ИнициализироватьБазуДанных(РежимыРеструктуризации, - Знач ВерсияПлатформы, Знач РежимРазработчика, - Знач ПараметрыХранилища, Знач НеДобавлятьВСписокБаз, +Процедура ИнициализироватьБазуДанных(Знач ВерсияПлатформы, + Знач НеДобавлятьВСписокБаз, Знач ПараметрыКоманды) Перем БазуСоздавали; @@ -121,15 +119,11 @@ Пользователь = ДанныеПодключения.Пользователь; Пароль = ДанныеПодключения.Пароль; Если ПустаяСтрока(ДанныеПодключения.ПутьБазы) Тогда - ДанныеПодключения = СоздатьДанныеПодключения(ДанныеПодключения, РежимРазработчика); + ДанныеПодключения = СоздатьДанныеПодключения(ДанныеПодключения); КонецЕсли; СтрокаПодключения = ДанныеПодключения.ПутьБазы; - ОперацияПоддерживаетсяIbcmd = (НЕ ПараметрыХранилища.РежимОбновления); - - МенеджерСборки = НовыйМенеджерСборки(ИспользоватьIbcmd, - ДанныеПодключения.ПутьБазы, ОперацияПоддерживаетсяIbcmd); - + МенеджерСборки = НовыйМенеджерСборки(ПараметрыКоманды); МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); Лог.Отладка("ИнициализироватьБазуДанных СтрокаПодключения:" + СтрокаПодключения); @@ -168,7 +162,7 @@ КонецЕсли; - ОбновитьКонфигурациюБД(МенеджерСборки, РежимРазработчика, РежимыРеструктуризации); + ОбновитьКонфигурациюБД(МенеджерСборки); МенеджерСборки.Деструктор(); @@ -187,9 +181,8 @@ Попытка МенеджерСборки.СоздатьФайловуюБазу(КаталогБазы); Исключение - ИнфоОшибки = ИнформацияОбОшибке(); МенеджерСборки.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнфоОшибки); + ВызватьИсключение; КонецПопытки; КонецПроцедуры @@ -204,9 +197,8 @@ МенеджерСборки.ЗагрузитьФайлКонфигурации(ПутьКФайлуСВерсией, Ложь); МенеджерСборки.ОбновитьКонфигурациюБазыДанных(Ложь); Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); МенеджерСборки.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ВызватьИсключение; КонецПопытки; Лог.Информация("Создана информационная база из файла конфигурации."); @@ -219,9 +211,8 @@ СписокФайлов = ""; МенеджерСборки.СобратьИзИсходниковТекущуюКонфигурацию(ПутьКИсходникам, СписокФайлов, Ложь); Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); МенеджерСборки.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ВызватьИсключение; КонецПопытки; Лог.Информация("Создана информационная база из исходников."); @@ -233,9 +224,8 @@ Попытка МенеджерСборки.ЗагрузитьИнфобазуИзФайла(ПутьКФайлуВыгрузки); Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); МенеджерСборки.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ВызватьИсключение; КонецПопытки; Лог.Информация("Создана информационная база из файла выгрузки."); @@ -249,15 +239,13 @@ ПараметрыХранилища.СтрокаПодключения, ПараметрыХранилища.Пользователь, ПараметрыХранилища.Пароль, ПараметрыХранилища.Версия); Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение "Не удалось загрузить базу из хранилища: - |" + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ВызватьИсключение; КонецПопытки; КонецПроцедуры -Процедура ОбновитьКонфигурациюБД(МенеджерСборки, РежимРазработчика, РежимыРеструктуризации) +Процедура ОбновитьКонфигурациюБД(МенеджерСборки) Попытка Если РежимРазработчика = Ложь Или РежимыРеструктуризации.Первый Или РежимыРеструктуризации.Второй Тогда @@ -266,7 +254,7 @@ КонецЕсли; Исключение МенеджерСборки.Деструктор(); - ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ВызватьИсключение; КонецПопытки; КонецПроцедуры @@ -287,46 +275,23 @@ Новый Файл(КорневойПутьПроекта).ИмяБезРасширения, ДопДанныеСпискаБаз); Исключение - Лог.Предупреждение("Добавление базы в список " + ОписаниеОшибки()); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Лог.Предупреждение("Добавление базы в список " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); КонецПопытки; КонецПроцедуры -Функция НовыйМенеджерСборки(ИспользоватьУтилитуКоманднойСтроки, СтрокаПодключенияИБ, ПоддерживаемаяОперация = Истина) +Функция НовыйМенеджерСборки(ПараметрыКоманды) - Если Не ИспользоватьУтилитуКоманднойСтроки Тогда - Лог.Отладка("Используем конфигуратор."); - Возврат НовыйМенеджерКонфигуратора(); - - ИначеЕсли Не ПоддерживаемаяОперация Тогда - Лог.Отладка("Операция не поддерживается ibcmd. Используем конфигуратор."); - Возврат НовыйМенеджерКонфигуратора(); - - ИначеЕсли Не ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключенияИБ) Тогда - Лог.Информация("Серверные ИБ не поддерживаются ibcmd. Используем конфигуратор."); - Возврат НовыйМенеджерКонфигуратора(); - + Если ПараметрыХранилища.РежимОбновления Тогда + Возврат ОбщиеМетоды.НовыйМенеджерКонфигуратора(); Иначе - Лог.Отладка("Используем ibcmd."); - Возврат Новый МенеджерIbcmd(); - + Возврат ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); КонецЕсли; КонецФункции -Функция НовыйМенеджерКонфигуратора() - - МенеджерКонфигуратора = Новый МенеджерКонфигуратора(); - Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); - - // Конфигуратор = МенеджерКонфигуратора.УправлениеКонфигуратором(); - // Конфигуратор.УстановитьИмяФайлаСообщенийПлатформы(ВременныеФайлы.НовоеИмяФайла("log")); - - Возврат МенеджерКонфигуратора; - -КонецФункции - -Функция СоздатьДанныеПодключения(ДанныеПодключения, РежимРазработчика) +Функция СоздатьДанныеПодключения(ДанныеПодключения) _ДанныеПодключения = Новый Структура(ДанныеПодключения); КаталогБазы = ОбъединитьПути(КорневойПутьПроекта, ?(РежимРазработчика = Истина, "./build/ibservice", "./build/ib")); From 03005b6f673eb303f5ef39e5b46ccfcf3a26d0d9 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 8 Nov 2023 08:30:03 +0200 Subject: [PATCH 30/59] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=B0=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=B8=D0=BC=D0=BF=D0=BE=D1=80=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\267\321\203\320\222\320\244\320\260\320\271\320\273.os" | 5 +---- ...\270\321\216\320\222\320\244\320\260\320\271\320\273.os" | 5 +---- ...\270\320\265\320\222\320\244\320\260\320\271\320\273.os" | 5 +---- ...\230\320\267\320\244\320\260\320\271\320\273\320\260.os" | 5 +---- ...\230\320\267\320\244\320\260\320\271\320\273\320\260.os" | 5 +---- ...\263\321\203\321\200\320\260\321\206\320\270\320\270.os" | 5 +---- ...\200\321\203\320\266\320\265\320\275\320\270\321\217.os" | 6 +----- ...\200\320\260\321\206\320\270\320\270\320\221\320\224.os" | 4 +--- ...\200\321\203\320\266\320\265\320\275\320\270\321\217.os" | 6 +----- ...\210\320\270\321\200\320\265\320\275\320\270\320\271.os" | 5 ----- ...\263\321\203\321\200\320\260\321\206\320\270\320\270.os" | 2 -- ...\210\320\270\321\200\320\265\320\275\320\270\320\271.os" | 2 -- ...\210\320\270\321\200\320\265\320\275\320\270\320\271.os" | 3 --- ...\276\320\264\320\275\320\270\320\272\320\276\320\262.os" | 5 +---- ...\210\320\270\321\200\320\265\320\275\320\270\321\217.os" | 5 +---- 15 files changed, 11 insertions(+), 57 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\222\320\244\320\260\320\271\320\273.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\222\320\244\320\260\320\271\320\273.os" index 7289f3b1..d800d223 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\222\320\244\320\260\320\271\320\273.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\222\320\244\320\260\320\271\320\273.os" @@ -11,12 +11,9 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" index 391aee9b..26e11d8e 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\216\320\222\320\244\320\260\320\271\320\273.os" @@ -11,12 +11,9 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\244\320\260\320\271\320\273.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\244\320\260\320\271\320\273.os" index 66f6e3ee..9a7b494e 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\244\320\260\320\271\320\273.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\244\320\260\320\271\320\273.os" @@ -9,12 +9,9 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" index b2d0d193..ef1c1c20 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\275\321\204\320\276\320\261\320\260\320\267\321\203\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" @@ -9,12 +9,9 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" index f18c32af..412aa380 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\230\320\267\320\244\320\260\320\271\320\273\320\260.os" @@ -9,12 +9,9 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" index 6a5b0621..e6826e27 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\244\320\260\320\271\320\273\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" @@ -11,12 +11,9 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index 6c2bc81c..e08b5436 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -7,13 +7,9 @@ // /////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать fs -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера Перем КорневойПутьПроекта; // Параметры команды diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\224.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\224.os" index 52e21486..b0fd7cef 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\224.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\221\320\224.os" @@ -11,11 +11,9 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index eb33e097..fd3204b2 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -7,13 +7,9 @@ // /////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner -#Использовать fs - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера Перем КорневойПутьПроекта; Перем ДанныеПодключения; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" index 767d5a58..27c459dd 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" @@ -7,9 +7,6 @@ // /////////////////////////////////////////////////////////////////// -#Использовать v8runner -#Использовать asserts - #Область ОписаниеПеременных Перем Лог; // Экземпляр логгера @@ -49,8 +46,6 @@ ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; ИмяРасширения = ПараметрыКоманды["extensionName"]; - МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - МенеджерСборки = ОбщиеМетоды.ФабрикаМенеджераСборки(ПараметрыКоманды); МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" index b4ed5603..808c95db 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" @@ -7,8 +7,6 @@ // /////////////////////////////////////////////////////////////////// -#Использовать asserts - #Область ОписаниеПеременных Перем Лог; // Экземпляр логгера diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" index 31ac3752..a3c8c182 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" @@ -7,8 +7,6 @@ // /////////////////////////////////////////////////////////////////// -#Использовать asserts - #Область ОписаниеПеременных Перем Лог; // Экземпляр логгера diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" index e1147beb..fd944d02 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" @@ -7,9 +7,6 @@ // /////////////////////////////////////////////////////////////////// -#Использовать v8runner -#Использовать asserts - #Область ОписаниеПеременных Перем Лог; // Экземпляр логгера diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262.os" index 4e5b30df..200b7514 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262.os" @@ -11,12 +11,9 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера Перем МенеджерВерсий; Перем ДанныеПодключения; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262\320\244\320\260\320\271\320\273\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262\320\244\320\260\320\271\320\273\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.os" index 85797685..1c66d506 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262\320\244\320\260\320\271\320\273\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272\320\276\320\262\320\244\320\260\320\271\320\273\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.os" @@ -11,12 +11,9 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner - #Область ОписаниеПеременных -Перем Лог; +Перем Лог; // Экземпляр логгера Перем МенеджерВерсий; Перем ИмяРасширения; From 982e13ba2e554b94067fa228effec25b3f3cbe4f Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 19 Nov 2023 12:35:25 +0200 Subject: [PATCH 31/59] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packagedef b/packagedef index 1f99ab0b..8e01b74f 100644 --- a/packagedef +++ b/packagedef @@ -63,6 +63,7 @@ .ЗависитОт("cli-selector", "0.4.0") .ЗависитОт("semver", "0.5.2") .ЗависитОт("fluent", "0.5.0") + .ЗависитОт("ibcmdrunner", "0.2.1") .РазработкаЗависитОт("1bdd") .РазработкаЗависитОт("1testrunner") @@ -70,6 +71,7 @@ .РазработкаЗависитОт("coverage") .РазработкаЗависитОт("1commands") .РазработкаЗависитОт("fs") + .РазработкаЗависитОт("gitrunner") .РазработкаЗависитОт("add", "6.8.0") .ВключитьФайл("tools") From 77cab6209922a873e4d9c0969e9b519e8f470b58 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 19 Nov 2023 12:39:46 +0200 Subject: [PATCH 32/59] =?UTF-8?q?=D0=A3=D1=87=D1=82=D0=BE=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packagedef b/packagedef index 8e01b74f..06dcdd79 100644 --- a/packagedef +++ b/packagedef @@ -63,7 +63,7 @@ .ЗависитОт("cli-selector", "0.4.0") .ЗависитОт("semver", "0.5.2") .ЗависитОт("fluent", "0.5.0") - .ЗависитОт("ibcmdrunner", "0.2.1") + .ЗависитОт("ibcmdrunner", "0.2.2") .РазработкаЗависитОт("1bdd") .РазработкаЗависитОт("1testrunner") @@ -71,7 +71,7 @@ .РазработкаЗависитОт("coverage") .РазработкаЗависитОт("1commands") .РазработкаЗависитОт("fs") - .РазработкаЗависитОт("gitrunner") + .РазработкаЗависитОт("gitrunner", "1.7.0") .РазработкаЗависитОт("add", "6.8.0") .ВключитьФайл("tools") From 28ed05bfc25caff2d9b24a028d15fb7dd1b4fbcf Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 28 Jan 2024 19:56:00 +0200 Subject: [PATCH 33/59] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=B5=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20=D0=BE=D1=82=20ibcmdrunner?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index 06dcdd79..985e4435 100644 --- a/packagedef +++ b/packagedef @@ -63,7 +63,7 @@ .ЗависитОт("cli-selector", "0.4.0") .ЗависитОт("semver", "0.5.2") .ЗависитОт("fluent", "0.5.0") - .ЗависитОт("ibcmdrunner", "0.2.2") + .ЗависитОт("ibcmdrunner", "0.2.3") .РазработкаЗависитОт("1bdd") .РазработкаЗависитОт("1testrunner") From 3fa83aa5434692bbd571a5bac099b63977027dd4 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sun, 28 Jan 2024 19:57:14 +0200 Subject: [PATCH 34/59] =?UTF-8?q?=D0=92=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20update-dev?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/xunits/update-dev.os | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/xunits/update-dev.os b/tests/xunits/update-dev.os index 4b2626ed..6d57c83d 100644 --- a/tests/xunits/update-dev.os +++ b/tests/xunits/update-dev.os @@ -12,7 +12,7 @@ #Область СлужебныйПрограммныйИнтерфейс -//&Тест +&Тест Процедура ТестДолжен_ОбновитьФайловуюБазуИзИсходниковIbcmd() Экспорт // Дано @@ -31,7 +31,7 @@ КонецПроцедуры -//&Тест +&Тест Процедура ТестДолжен_ОбновитьФайловуюБазуИзФайлаВыгрузкиIbcmd() Экспорт // Дано @@ -50,7 +50,7 @@ КонецПроцедуры -//&Тест +&Тест Процедура ТестДолжен_ОбновитьФайловуюБазуИнкрементальноIbcmd() Экспорт // Дано From ec34621dda4760e9591d785ff655552bf3106917 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 1 Feb 2024 16:00:47 +0200 Subject: [PATCH 35/59] =?UTF-8?q?=D0=92=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=20=D0=B2=20=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=B4=D0=B6=D0=B5=D1=80=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.os | 31 ------------------- ...20\266\320\265\320\275\320\270\321\217.os" | 31 +++++++++++++++++++ 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/main.os b/src/main.os index ee7a19f4..c6dd82d4 100644 --- a/src/main.os +++ b/src/main.os @@ -80,8 +80,6 @@ ВывестиВерсию(); КонецЕсли; - ВключитьВыводОтладочногоЛогаВОтдельныйФайл(ЗначенияПараметров); - Возврат МенеджерКомандПриложения.ВыполнитьКоманду(Команда, ЗначенияПараметров); КонецФункции // ВыполнениеКоманды() @@ -92,35 +90,6 @@ ОбщиеМетоды.ЗагрузитьВанессаАДД(ДопТекстОшибки); КонецПроцедуры -Процедура ВключитьВыводОтладочногоЛогаВОтдельныйФайл(Знач ЗначенияПараметров) - - ПутьФайлаВывода = ""; - Если ЗначенияПараметров["--debuglogfile"] <> Неопределено Тогда - ПутьФайлаВывода = ЗначенияПараметров["--debuglogfile"]; - ФайлВывода = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайлаВывода)); - ФС.ОбеспечитьКаталог(ФайлВывода.Путь); - ИначеЕсли ЗначенияПараметров["--debuglog"] Тогда - // специально не через ВременныеФайлы для возможности сохранения файла после завершения - ПутьФайлаВывода = ПолучитьИмяВременногоФайла(".log"); // BSLLS:MissingTemporaryFileDeletion-off - ФайлВывода = Новый Файл(ПутьФайлаВывода); - ПутьФайлаВывода = ОбъединитьПути(ФайлВывода.Путь, "vrunner-" + ФайлВывода.Имя); // BSLLS:MissingTemporaryFileDeletion-off - Иначе - Возврат; - КонецЕсли; - - ФайлЖурнала = Новый ВыводЛогаВФайл; - ФайлЖурнала.ОткрытьФайл(ПутьФайлаВывода); - - Если Не Лог.ДобавленыСобственныеСпособыВывода() Тогда - ВыводПоУмолчанию = Новый ВыводЛогаВКонсоль(); - Лог.ДобавитьСпособВывода(ВыводПоУмолчанию); - КонецЕсли; - - Лог.ДобавитьСпособВывода(ФайлЖурнала, УровниЛога.Отладка); - - Лог.Отладка("Подключил вывод отладочного лога в отдельный файл %1", ПутьФайлаВывода); -КонецПроцедуры - Процедура ВывестиВерсию() Сообщить(СтрШаблон("%1 v%2", ПараметрыСистемы.ИмяПродукта(), ПараметрыСистемы.ВерсияПродукта())); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index fcbc1ed4..279acbc0 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -60,6 +60,7 @@ Команда = ПолучитьКоманду(ИмяКоманды); ДополнитьЗначенияПараметров(ИмяКоманды, ПараметрыКоманды); + ВключитьВыводОтладочногоЛогаВОтдельныйФайл(ПараметрыКоманды); КодВозврата = Команда.ВыполнитьКоманду(ПараметрыКоманды, ДополнительныеПараметры); Возврат КодВозврата; @@ -225,6 +226,36 @@ КонецПроцедуры // ДополнитьЗначенияПараметров +Процедура ВключитьВыводОтладочногоЛогаВОтдельныйФайл(Знач ЗначенияПараметров) + + ПутьФайлаВывода = ""; + Если ЗначенияПараметров["--debuglogfile"] <> Неопределено Тогда + ПутьФайлаВывода = ЗначенияПараметров["--debuglogfile"]; + ФайлВывода = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайлаВывода)); + ФС.ОбеспечитьКаталог(ФайлВывода.Путь); + ИначеЕсли ЗначенияПараметров["--debuglog"] Тогда + // специально не через ВременныеФайлы для возможности сохранения файла после завершения + ПутьФайлаВывода = ПолучитьИмяВременногоФайла(".log"); // BSLLS:MissingTemporaryFileDeletion-off + ФайлВывода = Новый Файл(ПутьФайлаВывода); + ПутьФайлаВывода = ОбъединитьПути(ФайлВывода.Путь, "vrunner-" + ФайлВывода.Имя); // BSLLS:MissingTemporaryFileDeletion-off + Иначе + Возврат; + КонецЕсли; + + ФайлЖурнала = Новый ВыводЛогаВФайл; + ФайлЖурнала.ОткрытьФайл(ПутьФайлаВывода); + + Если Не Лог.ДобавленыСобственныеСпособыВывода() Тогда + ВыводПоУмолчанию = Новый ВыводЛогаВКонсоль(); + Лог.ДобавитьСпособВывода(ВыводПоУмолчанию); + КонецЕсли; + + Лог.ДобавитьСпособВывода(ФайлЖурнала, УровниЛога.Отладка); + + Лог.Отладка("Подключил вывод отладочного лога в отдельный файл %1", ПутьФайлаВывода); + +КонецПроцедуры + Процедура ДобавитьДанныеПодключения(ЗначенияПараметров) Лог = ДополнительныеПараметры.Лог; From 178af653cdf1c4afeb2037279a59e4b4193ba504 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 1 Feb 2024 17:02:28 +0200 Subject: [PATCH 36/59] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BB=D0=BE=D0=B3=D0=B0=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" | 2 ++ 1 file changed, 2 insertions(+) diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 279acbc0..c04d9119 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -228,6 +228,8 @@ Процедура ВключитьВыводОтладочногоЛогаВОтдельныйФайл(Знач ЗначенияПараметров) + Лог = Лог(); + ПутьФайлаВывода = ""; Если ЗначенияПараметров["--debuglogfile"] <> Неопределено Тогда ПутьФайлаВывода = ЗначенияПараметров["--debuglogfile"]; From 30a20f8091c8982234de656defb0efee466bb2ee Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 1 Feb 2024 18:34:53 +0200 Subject: [PATCH 37/59] =?UTF-8?q?=D0=92=D1=8B=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B5=D0=B9=208.3.20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/fixtures/1Cv8.dt | Bin 3728 -> 3791 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/fixtures/1Cv8.dt b/tests/fixtures/1Cv8.dt index e0c3d43e133bf0e6562315f7e666d330c467aff0..d7e9a89e7256b4059af7409b435a53c745dd9b11 100644 GIT binary patch literal 3791 zcmV;=4lwaCLrFqJZE!|2?OJ(wQ&ko(*frguR49m{C>Gja(xjUx+9njD-E3MAMDXS1 zwtbT1#g`Xo6@&yqu%CjWEYB5WbUws&hQ(zRXa%((C=5C&s9pF*tO}z{or&Y;-1}bM znuMi;-~7|A$vyX+^EIr=I=kLdH&CL z)lRA0#C&F*as18n=l8E4X?`~0=tmnopH_c-{W>CDaV z?_YN=ux)8dpzqMqv4794%q;oS_TJ;FxAf*f|LIdr^PXJ%IYq1bN%kKKo*!yAB_%j{#fa?_H*P*{Fuj|YyY~A{C;pw1)?4vADdA(@Ojx#=M+D}s_{${>q`<*|2-~DxFBK63e|CBY(J>9eB(M5}I zxpC{AU!U3CZ`m}peC@sCHoM;YA}5ZzzW3l;VD!y-09T`*ytpFJh1?K zYyK=%*_ea{aoa9`Zf9U04V%7?gjbR~OkEN>4SICbJ!d)ck&-SaZuXq@x%CwFw+ zIxdi5U=m+i{9JqGv#-8(;@2zH-AraMS7rjrO^{BFkUHw}Fsaj;3o|G8%scPjugwEi zy%k_UuhANcY#IY*DAZuZz^W-QXbUiHVS_{7Ihk-aNKFf`yuOE^ z4nOzrQo9}<=<~if@Dd4_D2MQJV3tywR z*-MgD=m*Z$99*lj78N%XYGD2sXyCG})0E)2PE%L{^fs)Z*p`psT;hx6!k)E%5fVR* zEf*H*|5@0Qw5??MYsq!1mM(p`H9FRQ*8Ir4NwbewR*zr4t8?#1=h_ZW-aR+DvGb

zAIflx1(v(8GB<5amUWM%5SgVuyyRw zNmH`CuMNo>vT@#DV>Hd9z2Cff_p;2nIcHN|c=f$|+eiF%iI>!~ z%eH@6actD+v;+O8CzL%kwPyFopN6I$KDK-5sV^RA_T8TK)v2{pa(;2mUVQrI{Ktn) ze0%ZF8-7WDvM+5;|ID2w>zT}A-OIjHCwHVIu37Tj@xSfEreOxTTdREDeg0vUfW~aFx!QUU!0GyWv&p-!qpUT} z>-DNPd(~ZCTUsr9yEc2h0hP&W0gVm-ld-jGxwqY)5PWO4NmT-g!DduTK!IgV)R3rU zL0L3PTt%b0tH&?Z@$F-zZ@2io0nrl_ifUOP7PUQ6knW!ZJAkOCuUIA7|Zn#`xH0oPN$5-*q;ueOCYMtV z6D?sgX^_oOu}dKAfE&0^U7%yMN%~si37JA_LlIPGRW)ykf-&v6{u#T zoR}SfhJ2ccYUI zUBeM6#c^N<@c2to(t|`itRU?C37UoOL(Q=!YiMIUy1=0pvIi@f3)nlHXV{FwRyM0l zR{kbTDT+5z08($VMmXz;XZ&t|3P%DTwy%u|(!vN-Z1G9cl4ntpmc!5mR2VW7QJay3 zdCcBBC{hHg9#h1-i9kwP6eUf3r6nS<0;cXX;$Z~~)C7mw`tWubq zKtNJh8$u6XJ0o@vf@6X<*{el~t)N&2HI;|To#YYH5fEv(VZAu?Xvh*dZLYtVSps#U z`wW38mM04x#E=;wwIWgzP_Yu$fPCJCfsHVx1~Cdmia13lGOWXStY#-c6PUdMbJGy& zmEHrF2sOUUPT~tf5;VS?pxkI-Q!cA<$Wxeh6>BFnWE9?&itu=s=n^+1Oh!N?3pia& zV{TzbBQx@nM@BIj*+GdmHp%tF4T(1_)?gNeO=1KT?hg>=C~uoT#7Q8A6^BgkZmuhu z%jmz%_Q*=oO4xzXPQcX+ZFGY81_HIY09`uN7T=N2P=|lx!nUiKnwj|1(RCEKPpn>Osq+4%iu|_ zA>9Nm->U*~;kP`5YNTkJv&QSg=_v8b1bs1reOW3Fmp~6@8OnmO-i{=Hak3#rMJQZ_ZJov2iI(XwTs$3I47!)#-Lvao`KzF)?NBoIbG&xD7}$ncvl(gt`aokbBeVAo6t zA{#E%kw6S2ml49r;Sio@vdS0Fi=Vi0#wH5qcAW9Q|Be$2Gm>+5&F}9l!FU_tw7EHd z*Z%(g(%8>u%p$1;LH42B39uqomL;)5=^?gVQD0l3yqO5uaN=O6keh=}y^ua$RToo^2HFlXTtGoSiLGsbf4f{e$yc+hslrObf F{a^l0Rt5k7 literal 3728 zcmV;B4sY=>LrFqJZE!|2?OJ(wQ&ko(*frg;ECM>AC<1LDY0}NTO*e*(^2W@sDSH;2spB|0t$%BD1HG(T0n#p0humx_Qfv zWoN=`?#~FH*n9s~-{n;gDgDd3qhIMZn(g7U$B(tlUViU>ig;|q?5@4}WXe?oPVfEG zvCosQ+56OpwVOj@j{ns7^M(Tj_HSn8n3m04{^GK>>2tz2KJfG;>y#nyp15pl(;Cn6 zwC^W9Fss*kbXVNyQ!Agmv+K=$oA!FT%2!+oMpac=S>m-b^IyBmo7R1sF89Da)89+q z|5V}0mDx`$C|Y){W&D$`teCdyy5y5a+gs)#jTQOVAIY0FHghzau;4>Byk^Jxn{0Pn zf8<2x!_#Z=BkLxfobvR$?OVqj80Q@G(BO6BR<1s7vAv&~x8#Ra2mhUsb;Nn!ZNFSS z+~j?I{AZ`vWm}&8rVxpSwG%1?wtLWbu)W^=s7$jm3m^v&*jZ`96!?j#<4H#G`vQf)O|8S1!3{)Tn0zjc-0n%y%y=dI=$Yd^WY z`_@t691ENJ^1aV@RX_Lo8wY$Yny^x%%izSExWQ72V+JRVHyN-}%xEbA=3=a%kR$e2#F<~PNUxVy#e_=2 z4bY-E)>v#REHGmhL!qgt$zW;10fc378jLQJ33C=>rjkoBH;%aYv2+(r2@`!@K!gts|n zXKM?b0XPFFf@TQ(BCJPIi0YyY$Nipq&|KEsOo3*MfwMoBaYa`)tn7RVhHHHc;lbP& zvL8j`0t7*2((h$rqmR+`BF$E~2*&1aMwZzP7hzlMf9d9V<8vrLU!ntz3jBqy(c9cb z={ocSXX{wpXmS>pG!+?O{udhHvTQPx;<(9BR0_;4tgysYfZ=@NM=clH4#T`Zy#KDB z4}8mbzF+gn;Te;9Pp_}+>76nEpWp55S)H`&$CR>c{eSMuOBg?N`og@GX)o)|&*{>7 zzdN_(WYL0YjtR@B9{OR}cT47!4cXN2)@LsnM&myn^d7&x!=G{O!UL~=@HzPF_{qI& z{NHoHmtTCdf9KgJX66nXmNWf*dUKfl(Y4v9)6oadSUZNniA!^PG>q(sw3S5PH?7@Z5V@< zV>H-WwmUDBUW?v30K>p^pxbJKf$gC|)qufVu({TG7r>duM!PMreRp|VRv-}2uMX(D zyF1z(+qzc=0%4ua=>W|h05hwtW^te^lp?&fyOb*7RG}Fa22kK=j~fv8fFO%US*U5$ zcOMBUb%NVj<=c*6AS`==Lir6urI+Ak%JA$A@IZ_Y20jcWqSqWi6^JeDk72R`Rr)H9)t>)qX0}G?0Vz~ejS4CCo z6Bik>DZ96cY^!-Buv-@z$c0}Y2(TLYVic3y#%&RpF&gbnHElX^jZh%e3iaJRp@i~Qg#ANSVStqbX0`gP7*>aB zHd{%L2adGF=HvZr_MOetdf=0(g!cQn?0aTHE~jFYg3i=_I{Qv%dL`wtF$y-*`q}I| zo0+y&Zx!6e6nv)l^VxSkhgMJ&N!3v#4rm(oR`8n9&+Gq?r;YVhsAi+Qm>YqHd}j9Z z*>^s(;9-p;Q<0!q{eBz z@t35O2Z>}@LAb>eGzUG1niFl#$i`%JfkVyX4pu4`uy-`iuo;D|ZPwYG;!T)Vlx(E{ zq~7L?an_N~_&uQvo&+)MU?(fk!b((h1eIwivZzSQLFfW13Yn>>%}T;N=I$LdDFS5< zyajk7t}J38l{|;>Olrb9PQn>b&$}qF5yngbqeP^PQ+A@ldbxnYm zpBs^&$&~~}qlHbotR^8(QQCE!oyd?;ctbVei7wG4ZbX=@gh&-|ww%WN!j48}*d>pQ zW-@Yv5^rr$>qi@sKvb+k7DY{B1QhNM5atzu&QOGtZ~`ZenBF~nS2UN=f0gZF)ufYf z1FM^Ws~Ot#Di+`z8PLh_zz*SBO?IJN#l%akcyTw78lvrAA2G;JUJ~m;Q>_oprIB#yiLbV4pd`ThQqz=DXM-lI`5VBRpkg37 z?M{~a&+?io?y?c}li|UNq*`zD13xfAzgNPf)`^dbG&z%KliPAclIuvCVAOk6I4Sy; zhfocZZS&SdeK;Kzep$g6E7@12;^hkHLYAQ{xGJzaEtD>_+ad!<7y80k<5XYk4i;U< z?4iv`vBVP-Iw+DPRi}zf6!S;BAfzEdrQhw2CQL%tg*=O}Jzg$n8z{_6V>qKNTjRNV z;LhC@2;zx)_~)SujK**kSE|_IE}&+TRkNoWk1G`8QH3@xMlmYCgKNX3q*R{<@O(iE z&ud7E)+QgE9#N7mW~zx@VNm+Ou9!jT>{4y0Dv|AU8P51Ix3clVi5DZXaGIT#pI#_U zW|VQMQR_vex{pyU3r9jDWj5?C4k!mp81x+~J`{nl5_&c|WLAX-Jp{c%wxrPrs%ejI zaCNLvP}JR{;NBK%6wZ?oIngo#?s*DRsvH=u@Ltvg52e#6f&tu`2|?t-r8*XfzT`4O zI3XIs^GsIt;(75CH_6&U;rxy>`nTV45@AO2&aVFLouyc(5MCF}`@811_m{(ZpXliSX-7PN~MR~c3ES6mG)*LV#7&-og!`yQeiEF=KDPKfnjA)aWoWP-fFi6 z#hMA$$gRjTXBAfXJPMZcg2d^(SoF~)^$^|iUDc0Z91RVM*?29SjR_6pT;SE#Rq>Na zn$Z+bs!yCiLz7@7<-sUuXDqanB)rvHN~~+4Fj`xPDeg$Nv!beMbOy;DtStbaOZz?0 z)420^N*4P?zl;gSaFhZaq4aShM#ifjH_Nice6@*QYf@nl*Qoj+I0Epnh^h=H{peGC zTDUqb0j8+L8%FT5V<@WNr+ u?u3sK Date: Wed, 24 Apr 2024 08:47:13 +0300 Subject: [PATCH 38/59] =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20=D0=BE=D1=82=20=D0=B4=D0=B2?= =?UTF-8?q?=D0=B8=D0=B6=D0=BA=D0=B0=201.9.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit как у ibcmdrunner --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index 985e4435..2365a8fa 100644 --- a/packagedef +++ b/packagedef @@ -44,7 +44,7 @@ Описание.Имя("vanessa-runner") .Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта()) - .ВерсияСреды("1.7.0") + .ВерсияСреды("1.9.0") .ЗависитОт("logos", "1.4.0") .ЗависитОт("cmdline", "1.0.0") From 3bb7567f5dedc05c32b61b60d9339e2abe3eed35 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 20 Jun 2024 15:51:01 +0300 Subject: [PATCH 39/59] =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B1=D0=B5=D0=BB=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20GA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index 2365a8fa..a3a980a4 100644 --- a/packagedef +++ b/packagedef @@ -44,7 +44,7 @@ Описание.Имя("vanessa-runner") .Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта()) - .ВерсияСреды("1.9.0") + .ВерсияСреды("1.9.0") .ЗависитОт("logos", "1.4.0") .ЗависитОт("cmdline", "1.0.0") From 28162387e498fb3429b4028bfd66cf5b926173f2 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 20 Jun 2024 18:12:11 +0300 Subject: [PATCH 40/59] =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=B0=20=D0=A2=D0=B5=D1=81=D1=82=D0=94?= =?UTF-8?q?=D0=BE=D0=BB=D0=B6=D0=B5=D0=BD=5F=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=D0=A4=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=D1=83?= =?UTF-8?q?=D1=8E=D0=91=D0=B0=D0=B7=D1=83=D0=98=D0=BD=D0=BA=D1=80=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D0=BB=D1=8C=D0=BD=D0=BEIbcmd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\320\264\320\266\320\265\321\200Ibcmd.os" | 46 +++++++++++-------- tests/xunits/update-dev.os | 25 +++++----- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 68c79361..69cd52e6 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -15,7 +15,7 @@ #Область ПрограммныйИнтерфейс Процедура УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт - + КаталогБазы = ОбщиеМетоды.КаталогФайловойИБ(СтрокаСоединения); Лог.Отладка("Использовать каталог ИБ %1", КаталогБазы); УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогБазы); @@ -28,7 +28,7 @@ ОбщиеМетоды.ОбеспечитьПустойКаталог(Новый Файл(КаталогБазы)); УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогБазы); - УправлениеИБ.СоздатьИБИзФайлаВыгрузки(ПутьКШаблону, ЛокальДляЗапуска()); + УправлениеИБ.СоздатьИБИзФайлаВыгрузки(ПутьКШаблону, ЛокальДляЗапуска()); СтрокаСоединения = СтрШаблон("File=""%1""", КаталогБазы); ДобавитьБазуВСписокБаз(ИмяБазыВСписке, СтрокаСоединения); @@ -40,6 +40,10 @@ ИмяРасширения = ""; + Если ТипЗнч(СписокФайловДляЗагрузки) = Тип("Строка") Тогда + СписокФайловДляЗагрузки = СтрРазделить(СписокФайловДляЗагрузки, ";"); + КонецЕсли; + Если СниматьСПоддержки Тогда УправлениеИБ.СнятьСПоддержки(); КонецЕсли; @@ -78,7 +82,7 @@ Процедура ЗагрузитьФайлКонфигурации(Знач ПутьКФайлу, Знач СниматьСПоддержки = Истина) Экспорт ИмяРасширения = ""; - + Если СниматьСПоддержки Тогда УправлениеИБ.СнятьСПоддержки(); КонецЕсли; @@ -99,6 +103,8 @@ ИмяРасширения = ""; УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения, РежимДинамическогоОбновления, ЗавершатьСеансы); + Лог.Информация("Обновление конфигурации БД завершено."); + КонецПроцедуры // ОбновитьРасширение @@ -107,7 +113,7 @@ // ИмяРасширения - Строка - <описание параметра> // Процедура ОбновитьРасширение(Знач ИмяРасширения) Экспорт - + РежимДинамическогоОбновления = "disable"; ЗавершатьСеансы = "force"; @@ -145,8 +151,8 @@ ФС.ОбеспечитьКаталог(КаталогВыгрузки); Синхронизировать = ТолькоИзмененные И ФС.ФайлСуществует(ФайлВерсии); - - УправлениеИБ.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки, ФайлВерсии, ИмяРасширения, + + УправлениеИБ.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки, ФайлВерсии, ИмяРасширения, Синхронизировать, ВАрхив, НаСервере, КоличествоПотоков, НеВыгружатьНеСуществующиеОбъекты); КонецПроцедуры @@ -159,7 +165,7 @@ // ФайлВерсии - Строка - Путь к файлу версии // ТолькоИзмененные - Булево - Выгружать только измененные файлы для ускорения выгрузки // -Процедура РазобратьРасширениеНаИсходники(КаталогВыгрузки, ИмяРасширения, +Процедура РазобратьРасширениеНаИсходники(КаталогВыгрузки, ИмяРасширения, Знач ФайлВерсии = "", Знач ТолькоИзмененные = Истина) Экспорт НеВыгружатьНеСуществующиеОбъекты = Истина; @@ -170,7 +176,7 @@ ФС.ОбеспечитьКаталог(КаталогВыгрузки); Синхронизировать = ТолькоИзмененные И ФС.ФайлСуществует(ФайлВерсии); - УправлениеИБ.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки, ФайлВерсии, ИмяРасширения, + УправлениеИБ.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки, ФайлВерсии, ИмяРасширения, Синхронизировать, ВАрхив, НаСервере, КоличествоПотоков, НеВыгружатьНеСуществующиеОбъекты); КонецПроцедуры @@ -209,7 +215,7 @@ // Процедура ВыгрузитьРасширениеВФайл(Знач ПутьКНужномуФайлуРасширения, Знач ИмяРасширения) Экспорт УправлениеИБ.ВыгрузитьКонфигурациюВФайл(ПутьКНужномуФайлуРасширения, ИмяРасширения); -КонецПроцедуры +КонецПроцедуры // Загружает файл расширения в текущую базу данных. // Параметры: @@ -218,7 +224,7 @@ // ОбновитьКонфигурациюИБ - Булево // Процедура ЗагрузитьФайлРасширения(Знач ПутьКФайлу, Знач ИмяРасширения, Знач ОбновитьКонфигурациюИБ = Ложь) Экспорт - + УправлениеИБ.ЗагрузитьКонфигурацию(ПутьКФайлу, ИмяРасширения); Если ОбновитьКонфигурациюИБ Тогда @@ -240,12 +246,12 @@ #Область ОбработчикиСобытий -Процедура ПриСозданииОбъекта() - +Процедура ПриСозданииОбъекта() + Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); ВременныйКаталогДанныхСервера = ВременныеФайлы.СоздатьКаталог(); Локаль = ""; - + УправлениеИБ = Новый УправлениеИБ; УправлениеИБ.УстановитьПараметрыАвтономногоСервера(ВременныйКаталогДанныхСервера); @@ -271,7 +277,7 @@ ИспользоватьВременнуюБазу = ДанныеПодключения.ИспользоватьВременнуюБазу; Если ИспользоватьВременнуюБазу Тогда Лог.Отладка("ИспользоватьВременнуюБазу %1", ИспользоватьВременнуюБазу); - + КаталогВременнойИБ = ОбъединитьПути(ВременныйКаталогДанныхСервера, "db_data"); СтрокаСоединения = СтрШаблон("/F%1", КаталогВременнойИБ); @@ -279,16 +285,16 @@ Пароль = ""; УстановитьКонтекст(СтрокаСоединения, Пользователь, Пароль); - + Иначе - УстановитьКонтекст(ДанныеПодключения.ПутьБазы, + УстановитьКонтекст(ДанныеПодключения.ПутьБазы, ДанныеПодключения.Пользователь, ДанныеПодключения.Пароль); КонецЕсли; КонецПроцедуры Процедура Деструктор() Экспорт - + Попытка ВременныеФайлы.УдалитьФайл(ВременныйКаталогДанныхСервера); Исключение @@ -309,13 +315,13 @@ Если Не СтрНачинаетсяС(ВерсияПлатформы, "8.3") Тогда ВызватьИсключение "Неверная версия платформы <" + ВерсияПлатформы + ">"; КонецЕсли; - + Возврат Платформа1С.ПутьКIBCMD(ВерсияПлатформы, Разрядность); КонецФункции Функция ЛокальДляЗапуска() - + Если ЗначениеЗаполнено(Локаль) Тогда Возврат Локаль; Иначе @@ -325,7 +331,7 @@ КонецФункции Процедура ДобавитьБазуВСписокБаз(ИмяБазыВСписке, СтрокаСоединения) - + Если ПустаяСтрока(ИмяБазыВСписке) Тогда Возврат; КонецЕсли; diff --git a/tests/xunits/update-dev.os b/tests/xunits/update-dev.os index 6d57c83d..3c374f9a 100644 --- a/tests/xunits/update-dev.os +++ b/tests/xunits/update-dev.os @@ -21,14 +21,14 @@ КаталогSrc = Исполнитель.ПутьТестовыхДанных("cf"); Исполнитель.ДобавитьПараметр("--src", КаталогSrc); Исполнитель.ДобавитьПараметр("--ibcmd"); - + // Когда Исполнитель.ВыполнитьКоманду(); // Тогда Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из исходников."); - + КонецПроцедуры &Тест @@ -40,14 +40,14 @@ ФайлDt = Исполнитель.ПутьТестовыхДанных("1cv8.dt"); Исполнитель.ДобавитьПараметр("--dt", ФайлDt); Исполнитель.ДобавитьПараметр("--ibcmd"); - + // Когда Исполнитель.ВыполнитьКоманду(); // Тогда Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из файла выгрузки."); - + КонецПроцедуры &Тест @@ -63,15 +63,16 @@ // Когда Исполнитель.ВыполнитьКоманду(); - ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(Исполнитель.КаталогКоманды(), ".git")); + //ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(Исполнитель.КаталогКоманды(), ".git")); // Тогда Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); Исполнитель.ОжидаемЧтоВыводСодержит("Будет выполнена инкрементальная загрузка"); Исполнитель.ОжидаемЧтоВыводСодержит("ManagedApplicationModule.bsl"); + Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из исходников"); Исполнитель.ОжидаемЧтоВыводСодержит("Обновление конфигурации БД завершено."); - + КонецПроцедуры #КонецОбласти @@ -79,15 +80,15 @@ #Область ОбработчикиСобытий Процедура ПередЗапускомТеста() Экспорт - + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); - + КонецПроцедуры Процедура ПослеЗапускаТеста() Экспорт - + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); - + КонецПроцедуры #КонецОбласти @@ -95,7 +96,7 @@ #Область СлужебныеПроцедурыИФункции Процедура ЗаписатьТекст(ИмяФайла, Текст) - + ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла); ЗаписьТекста.ЗаписатьСтроку(Текст); ЗаписьТекста.Закрыть(); @@ -103,7 +104,7 @@ КонецПроцедуры Процедура УстановитьКонтекстИнкрементальнойЗагрузки(Исполнитель) - + КаталогПроекта = Исполнитель.КаталогКоманды(); КаталогИсходников = ОбъединитьПути(КаталогПроекта, "src", "cf"); КаталогSrc = Исполнитель.ПутьТестовыхДанных("cf"); From 32b8e4705abadc7484dc3ac314f9a475392766f9 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 20 Jun 2024 18:58:15 +0300 Subject: [PATCH 41/59] =?UTF-8?q?=D0=BD=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=88=D0=BE=D0=B5=20=D1=83=D1=82=D0=BE=D1=87=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 69cd52e6..e9a6081d 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -41,7 +41,9 @@ ИмяРасширения = ""; Если ТипЗнч(СписокФайловДляЗагрузки) = Тип("Строка") Тогда - СписокФайловДляЗагрузки = СтрРазделить(СписокФайловДляЗагрузки, ";"); + Если СписокФайловДляЗагрузки <> "" Тогда + СписокФайловДляЗагрузки = СтрРазделить(СписокФайловДляЗагрузки, ";"); + КонецЕсли; КонецЕсли; Если СниматьСПоддержки Тогда From 22c14004a77d623f9e7b80d9681161580acab33d Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 20 Jun 2024 18:58:56 +0300 Subject: [PATCH 42/59] =?UTF-8?q?=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20v8unpack=201.0.5=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/testing.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 7f1a42f7..45ca6726 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -15,7 +15,7 @@ jobs: # matrix: # # os: [ubuntu-latest, windows-latest] # oscript_version: ['1.4.0'] - + steps: # Загрузка проекта - name: Актуализация @@ -23,7 +23,7 @@ jobs: with: # Disabling shallow clone is recommended for improving relevancy of reporting fetch-depth: 0 - + # Установка OneScript конкретной версии # - name: Установка OneScript # uses: otymko/setup-onescript@v1.1 @@ -36,11 +36,12 @@ jobs: run: | opm install --dev opm install -l + opm u v8unpack@1.0.5 # run: | # opm install opm # opm install add # opm install --dev - + # Задача тестирования, в результате ожидается успешное выполнение - name: Тестирование run: oscript ./tasks/test.os From e6251e9bdc6a9ce998599ff99d756647384ac86a Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 20 Jun 2024 19:14:28 +0300 Subject: [PATCH 43/59] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=20=D1=81=D1=82=D1=80=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/testing.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 45ca6726..7b5be9de 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -34,8 +34,8 @@ jobs: - name: Установка зависимостей shell: cmd run: | - opm install --dev - opm install -l + opm install --dev | + opm install -l | opm u v8unpack@1.0.5 # run: | # opm install opm From 662c7822633e8821e6da0b065cc51e83e9182abe Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 20 Jun 2024 19:18:05 +0300 Subject: [PATCH 44/59] =?UTF-8?q?=D0=B4=D0=BE=D0=BF.=D0=B7=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/testing.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 7b5be9de..2e11111b 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -34,9 +34,7 @@ jobs: - name: Установка зависимостей shell: cmd run: | - opm install --dev | - opm install -l | - opm u v8unpack@1.0.5 + opm install --dev & opm install -l & opm u v8unpack@1.0.5 # run: | # opm install opm # opm install add From 2ecae300925afbae52adf26d5c166d1510c790f6 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 20 Jun 2024 19:34:51 +0300 Subject: [PATCH 45/59] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=20opm=20+=20check?= =?UTF-8?q?out?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/testing.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 2e11111b..f470c077 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -19,7 +19,7 @@ jobs: steps: # Загрузка проекта - name: Актуализация - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: # Disabling shallow clone is recommended for improving relevancy of reporting fetch-depth: 0 @@ -34,7 +34,9 @@ jobs: - name: Установка зависимостей shell: cmd run: | - opm install --dev & opm install -l & opm u v8unpack@1.0.5 + call opm install --dev + call opm install -l + call opm u v8unpack@1.0.5 # run: | # opm install opm # opm install add From 127880831fb842a3dc1790764fa510b608f3a4fa Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 21 Jun 2024 15:26:13 +0300 Subject: [PATCH 46/59] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=84=D0=B8=D1=87=D1=83=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=D0=BD=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\321\201\321\202\320\276\320\262.feature" | 132 +++++++++--------- 1 file changed, 68 insertions(+), 64 deletions(-) diff --git "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\265\321\201\321\202\320\276\320\262.feature" "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\265\321\201\321\202\320\276\320\262.feature" index b66bedc2..0fd7d448 100644 --- "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\265\321\201\321\202\320\276\320\262.feature" +++ "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\265\321\201\321\202\320\276\320\262.feature" @@ -6,8 +6,6 @@ Чтобы удостовериться в качестве подготовленной конфигурации Контекст: - Допустим я подготовил репозиторий и рабочий каталог проекта - И я подготовил рабочую базу проекта "./build/ib" по умолчанию И Я копирую каталог "xdd_test" из каталога "tests/fixtures" проекта в подкаталог "build" рабочего каталога И Я копирую каталог "feature" из каталога "tests/fixtures" проекта в подкаталог "build" рабочего каталога @@ -16,57 +14,28 @@ Дано Я очищаю параметры команды "oscript" в контексте И Я сохраняю значение "INFO" в переменную окружения "LOGOS_LEVEL" -Сценарий: Запуск тестирования xunit с указанием логина, пароля пользователя - - Дано файл "build/xdd_test.epf" не существует - Дано Я очищаю параметры команды "oscript" в контексте - Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os compileepf build/xdd_test build --language ru" - И Я очищаю параметры команды "oscript" в контексте - Дано файл "build/xdd_test.epf" существует + И я удаляю файл "build/xdd_test.epf" + И я удаляю файл "build/cache.json" - Когда Я создаю файл "build/env.json" с текстом - """ - { - "default": { - "--db-user":"Пользователь", - "--db-pwd":"Пароль" - } - } - """ - # "--additional": " /DisplayAllFunctions /Lru /iTaxi /TESTMANAGER /Debug /DebuggerURL tcp://localhost:1560", - - И Я сохраняю значение "DEBUG" в переменную окружения "LOGOS_LEVEL" +Сценарий: Первый - подготовка запуска тестирования xunit - Когда Я добавляю параметр "<КаталогПроекта>/src/main.os xunit" для команды "oscript" - И Я добавляю параметр "build/xdd_test.epf" для команды "oscript" - И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript" - И Я добавляю параметр "--workspace ./build" для команды "oscript" - И Я добавляю параметр "--xddConfig build/xUnitParams.json" для команды "oscript" - И Я добавляю параметр "--xddExitCodePath ./build/xddExitCodePath.txt" для команды "oscript" - И Я добавляю параметр "--testclient ::" для команды "oscript" - И Я добавляю параметр "--language ru" для команды "oscript" - - Когда Я выполняю команду "oscript" - И Я сообщаю вывод команды "oscript" - Тогда Вывод команды "oscript" содержит - | Выполняю тесты с помощью фреймворка Vanessa-ADD (Vanessa Automation Driven Development) | - | Пользователь ИБ не идентифицирован | - - И Код возврата команды "oscript" равен 1 + Допустим я подготовил репозиторий и рабочий каталог проекта + И я подготовил рабочую базу проекта "./build/ib" по умолчанию Сценарий: Запуск тестирования xunit Дано файл "build/xdd_test.epf" не существует Дано Я очищаю параметры команды "oscript" в контексте Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os compileepf build/xdd_test build --language ru" + И я показываю вывод команды И Я очищаю параметры команды "oscript" в контексте Дано файл "build/xdd_test.epf" существует И файл "build/junitreport/*.xml" не существует И файл "build/allurereport/*-result.json" не существует - И Я создаю каталог "build/junitreport" - И Я создаю каталог "build/allurereport" - И Я создаю файл "build/junitreport/dummy-for-delete.xml" - И Я создаю файл "build/allurereport/dummy-for-delete-result.json" + И Я создаю каталог "junitreport" + И Я создаю каталог "allurereport" + И Я создаю файл "junitreport/dummy-for-delete.xml" + И Я создаю файл "allurereport/dummy-for-delete-result.json" Когда Я добавляю параметр "<КаталогПроекта>/src/main.os xunit" для команды "oscript" И Я добавляю параметр "build/xdd_test.epf" для команды "oscript" @@ -78,14 +47,14 @@ | -->> тест ТестДолжен_ЧтоТоСделать | | ИНФОРМАЦИЯ - Все тесты выполнены! | | Выполнение тестов завершено | - И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\build\junitreport\xddreport.xml" - И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\build\allurereport\allure-testsuite.xml" + И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\junitreport\xddreport.xml" + И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\allurereport\allure-testsuite.xml" И Код возврата команды "oscript" равен 0 - Тогда файл "build/junitreport/*.xml" существует - И файл "build/allurereport/*-result.json" существует - И файл "build/junitreport/dummy-for-delete.xml" существует - И файл "build/allurereport/dummy-for-delete-result.json" существует + Тогда файл "junitreport/*.xml" существует + И файл "allurereport/*-result.json" существует + И файл "junitreport/dummy-for-delete.xml" существует + И файл "allurereport/dummy-for-delete-result.json" существует Сценарий: Падающий серверный тест xunit возвращает код 1 и в логе консоли видна причина падения @@ -125,7 +94,7 @@ И Код возврата команды "oscript" равен 0 И Я очищаю параметры команды "oscript" в контексте - Когда Я создаю файл "build/env.json" с текстом + Когда Я создаю файл "env.json" с текстом """ { "default": { @@ -133,12 +102,11 @@ } } """ - # "--additional": " /DisplayAllFunctions /Lru /iTaxi /TESTMANAGER /Debug /DebuggerURL tcp://localhost:1560", Когда Я добавляю параметр "<КаталогПроекта>/src/main.os xunit" для команды "oscript" И Я добавляю параметр "build/xdd_test.epf" для команды "oscript" И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript" - И Я добавляю параметр "--workspace ./build" для команды "oscript" + И Я добавляю параметр "--workspace ." для команды "oscript" И Я добавляю параметр "--xddConfig build/xUnitParams.json" для команды "oscript" И Я добавляю параметр "--xddExitCodePath ./build/xddExitCodePath.txt" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" @@ -190,7 +158,7 @@ Когда Я добавляю параметр "<КаталогПроекта>/src/main.os xunit" для команды "oscript" И Я добавляю параметр "build/xdd_test.epf" для команды "oscript" И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript" - И Я добавляю параметр "--workspace ./build" для команды "oscript" + И Я добавляю параметр "--workspace ." для команды "oscript" И Я добавляю параметр "--xddConfig build/xUnitParams.json" для команды "oscript" И Я добавляю параметр "--xddExitCodePath ./build/xddExitCodePath.txt" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" @@ -208,8 +176,6 @@ Сценарий: Проверка исключения и показа лога от 1С, когда еще не успел выполниться браузер тестов - # И Я сохраняю значение "DEBUG" в переменную окружения "LOGOS_LEVEL" - И Я копирую каталог "fixture-epf/fixture" из каталога "tests/fixtures" проекта в подкаталог "build" рабочего каталога Дано я создаю каталог "build/fixture/Тест1/Forms/Форма/Ext/Form" в рабочем каталоге @@ -238,7 +204,7 @@ Когда Я добавляю параметр "<КаталогПроекта>/src/main.os xunit" для команды "oscript" И Я добавляю параметр "build/Тест1.epf" для команды "oscript" И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript" - И Я добавляю параметр "--workspace ./build" для команды "oscript" + И Я добавляю параметр "--workspace ." для команды "oscript" И Я добавляю параметр "--pathxunit build/Тест1.epf" для команды "oscript" И Я добавляю параметр "--xddConfig build/xUnitParams.json" для команды "oscript" И Я добавляю параметр "--xddExitCodePath ./build/xddExitCodePath.txt" для команды "oscript" @@ -263,10 +229,10 @@ Дано файл "build/xdd_test.epf" существует И файл "build/junitreport/*.xml" не существует И файл "build/allurereport/*-result.json" не существует - И Я создаю каталог "build/junitreport" - И Я создаю каталог "build/allurereport" - И Я создаю файл "build/junitreport/dummy-for-delete.xml" - И Я создаю файл "build/allurereport/dummy-for-delete-result.json" + И Я создаю каталог "junitreport" + И Я создаю каталог "allurereport" + И Я создаю файл "junitreport/dummy-for-delete.xml" + И Я создаю файл "allurereport/dummy-for-delete-result.json" Когда Я добавляю параметр "<КаталогПроекта>/src/main.os xunit" для команды "oscript" И Я добавляю параметр "build/xdd_test.epf" для команды "oscript" @@ -279,11 +245,49 @@ | -->> тест ТестДолжен_ЧтоТоСделать | | ИНФОРМАЦИЯ - Все тесты выполнены! | | Выполнение тестов завершено | - И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\build\junitreport\xddreport.xml" - И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\build\allurereport\allure-testsuite.xml" + И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\junitreport\xddreport.xml" + И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\allurereport\allure-testsuite.xml" И Код возврата команды "oscript" равен 0 - И файл "build/junitreport/dummy-for-delete.xml" не существует - И файл "build/allurereport/dummy-for-delete-result.json" не существует - Тогда файл "build/junitreport/*.xml" существует - И файл "build/allurereport/*-result.json" существует + И файл "junitreport/dummy-for-delete.xml" не существует + И файл "allurereport/dummy-for-delete-result.json" не существует + Тогда файл "junitreport/*.xml" существует + И файл "allurereport/*-result.json" существует + +Сценарий: Запуск тестирования xunit с указанием логина, пароля пользователя + + Дано файл "build/xdd_test.epf" не существует + Дано Я очищаю параметры команды "oscript" в контексте + Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os compileepf build/xdd_test build --language ru" + И Я очищаю параметры команды "oscript" в контексте + Дано файл "build/xdd_test.epf" существует + + Когда Я создаю файл "env.json" с текстом + """ + { + "default": { + "--db-user":"Пользователь", + "--db-pwd":"Пароль" + } + } + """ + + И Я сохраняю значение "DEBUG" в переменную окружения "LOGOS_LEVEL" + + Когда Я добавляю параметр "<КаталогПроекта>/src/main.os xunit" для команды "oscript" + И Я добавляю параметр "build/xdd_test.epf" для команды "oscript" + И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript" + И Я добавляю параметр "--workspace ." для команды "oscript" + И Я добавляю параметр "--xddConfig build/xUnitParams.json" для команды "oscript" + И Я добавляю параметр "--xddExitCodePath ./build/xddExitCodePath.txt" для команды "oscript" + И Я добавляю параметр "--testclient ::" для команды "oscript" + И Я добавляю параметр "--language ru" для команды "oscript" + + Когда Я выполняю команду "oscript" + И Я сообщаю вывод команды "oscript" + Тогда Вывод команды "oscript" содержит + | Выполняю тесты с помощью фреймворка Vanessa-ADD (Vanessa Automation Driven Development) | + | Пользователь ИБ не идентифицирован | + + И Код возврата команды "oscript" равен 1 + From 512c4faba876d5fa856d12d9cadb0d60a6561cd0 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 21 Jun 2024 15:26:38 +0300 Subject: [PATCH 47/59] =?UTF-8?q?=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B8?= =?UTF-8?q?=D0=BB,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=A1=D1=82=D0=B5=D0=BA=D0=92?= =?UTF-8?q?=D1=8B=D0=B7=D0=BE=D0=B2=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\265\321\202\320\276\320\264\321\213.os" | 79 +++++++++---------- 1 file changed, 37 insertions(+), 42 deletions(-) diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" index 514fdbe2..20d012a0 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" @@ -328,7 +328,7 @@ Путь = ОбъединитьПути(КаталогПроекта, Путь); Лог.Отладка("Нашли абсолютный путь проекта - <%1>", Путь); КонецЕсли; - + ФайлПуть = Новый Файл(Путь); Возврат ФайлПуть.ПолноеИмя; @@ -336,21 +336,21 @@ КонецФункции // ПолныйПуть() -Функция ЭтоОтносительныйПуть(Знач Путь) +Функция ЭтоОтносительныйПуть(Знач Путь) // BSLLS:IfElseDuplicatedCodeBlock-off Если СтрНачинаетсяС(Путь, ".") Тогда Возврат Истина; - + ИначеЕсли СтрНачинаетсяС(Путь, "/") Тогда Возврат Ложь; - + ИначеЕсли Сред(Путь, 2, 1) = ":" Тогда Возврат Ложь; Иначе Возврат Истина; - + КонецЕсли; // BSLLS:IfElseDuplicatedCodeBlock-on @@ -551,47 +551,42 @@ // Получить стек вызовов методов скриптов с отступами вправо // +// Параметры: +// ИнформацияОбОшибке - ИнформацияОбОшибке +// // Возвращаемое значение: // Строка - стек вызовов кода с отступами вправо // -Функция СтекВызовов() Экспорт - - ТекстИсключения = ""; - Попытка - ВызватьИсключение ТекстИсключения; - Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); - СтекВызовов = ИнформацияОбОшибке.ПолучитьСтекВызовов(); - МассивТекстИсключения = Новый Массив; - МассивТекстИсключения.Добавить(ТекстИсключения); - МассивТекстИсключения.Добавить("Стек вызовов:"); - - Отступ = ""; - СимволОтступа = " "; - ПервыйКадр = Истина; - Для Каждого КадрСтекаВызовов Из СтекВызовов Цикл - // пропустим первый кадр стека, т.к. он ведет на служебный вызов исключения - Если ПервыйКадр Тогда - ПервыйКадр = Ложь; - Продолжить; - КонецЕсли; +Функция СтекВызовов(ИнформацияОбОшибке) Экспорт + + СтекВызовов = ИнформацияОбОшибке.ПолучитьСтекВызовов(); + МассивТекстИсключения = Новый Массив; + МассивТекстИсключения.Добавить("Стек вызовов:"); + + Отступ = ""; + СимволОтступа = " "; + ПервыйКадр = Истина; + Для Каждого КадрСтекаВызовов Из СтекВызовов Цикл + // пропустим первый кадр стека, т.к. он ведет на служебный вызов исключения + Если ПервыйКадр Тогда + ПервыйКадр = Ложь; + Продолжить; + КонецЕсли; - Отступ = Отступ + СимволОтступа; + Отступ = Отступ + СимволОтступа; - СтрокаСтекТрейса = СтрШаблон( - "%1%2 / Метод %3 / Строка %4", - Отступ, - КадрСтекаВызовов.ИмяМодуля, - КадрСтекаВызовов.Метод, - Формат(КадрСтекаВызовов.НомерСтроки, "ЧГ=") - ); - МассивТекстИсключения.Добавить(СтрокаСтекТрейса); - КонецЦикла; - ТекстИсключения = СтрСоединить(МассивТекстИсключения, Символы.ПС); - - КонецПопытки; + СтрокаСтекТрейса = СтрШаблон( + "%1%2 / Метод %3 / Строка %4", + Отступ, + КадрСтекаВызовов.ИмяМодуля, + КадрСтекаВызовов.Метод, + Формат(КадрСтекаВызовов.НомерСтроки, "ЧГ=") + ); + МассивТекстИсключения.Добавить(СтрокаСтекТрейса); + КонецЦикла; + Результат = СтрСоединить(МассивТекстИсключения, Символы.ПС); - Возврат ТекстИсключения; + Возврат Результат; КонецФункции // Подменяет значения параметров значением переменных среды. @@ -675,11 +670,11 @@ Если Не ИспользоватьIbcm Тогда Лог.Отладка("Используем конфигуратор."); Возврат НовыйМенеджерКонфигуратора(); - + ИначеЕсли ЗначениеЗаполнено(СтрокаПодключенияИБ) И Не ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключенияИБ) Тогда Лог.Информация("Серверные ИБ не поддерживаются ibcmd. Используем конфигуратор."); Возврат НовыйМенеджерКонфигуратора(); - + Иначе Лог.Отладка("Используем ibcmd."); Возврат Новый МенеджерIbcmd(); From 87dd188ed23b804e6afa6a89bc42b08dcab0493f Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 21 Jun 2024 15:27:17 +0300 Subject: [PATCH 48/59] =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0=20=D0=BA=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D1=8F,=20=D0=B5=D1=81=D0=BB=D0=B8=20=D0=B2=20=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=20=D1=80=D1=83=D1=81=D1=81=D0=BA=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B1=D1=83=D0=BA=D0=B2=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\266\320\265\320\275\320\270\321\217.os" | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index c04d9119..e6f5ffdb 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -2,7 +2,7 @@ // // Служебный модуль с набором методов работы с командами приложения // -// Структура модуля реализована в соответствии с рекомендациями +// Структура модуля реализована в соответствии с рекомендациями // oscript-app-template (C) EvilBeaver // /////////////////////////////////////////////////////////////////// @@ -21,7 +21,7 @@ Процедура ЗарегистрироватьКоманды(Знач Парсер) Экспорт РегистраторКоманд.ПриРегистрацииГлобальныхПараметровКоманд(Парсер); - + КомандыИРеализация = Новый Соответствие; РегистраторКоманд.ПриРегистрацииКомандПриложения(КомандыИРеализация); @@ -30,12 +30,12 @@ ДобавитьКоманду(КлючИЗначение.Ключ, КлючИЗначение.Значение, Парсер); КонецЦикла; - + КонецПроцедуры // ЗарегистрироватьКоманды Процедура РегистраторКоманд(Знач ОбъектРегистратор) Экспорт - - ИсполнителиКоманд = Новый Соответствие; + + ИсполнителиКоманд = Новый Соответствие; РегистраторКоманд = ОбъектРегистратор; ДополнительныеПараметры = Новый Структура; @@ -44,25 +44,25 @@ КонецПроцедуры // РегистраторКоманд Функция ПолучитьКоманду(Знач ИмяКоманды) Экспорт - + КлассРеализации = ИсполнителиКоманд[ИмяКоманды]; Если КлассРеализации = Неопределено Тогда ВызватьИсключение "Неверная операция. Команда '" + ИмяКоманды + "' не предусмотрена."; КонецЕсли; - + Возврат КлассРеализации; - + КонецФункции // ПолучитьКоманду Функция ВыполнитьКоманду(Знач ИмяКоманды, Знач ПараметрыКоманды) Экспорт - + Команда = ПолучитьКоманду(ИмяКоманды); ДополнитьЗначенияПараметров(ИмяКоманды, ПараметрыКоманды); ВключитьВыводОтладочногоЛогаВОтдельныйФайл(ПараметрыКоманды); КодВозврата = Команда.ВыполнитьКоманду(ПараметрыКоманды, ДополнительныеПараметры); - + Возврат КодВозврата; КонецФункции // ВыполнитьКоманду @@ -81,7 +81,7 @@ КонецПроцедуры // ПоказатьСправкуПоКомандам Процедура ДобавитьКоманду(Знач ИмяКоманды, Знач КлассРеализации, Знач Парсер) - + Попытка РеализацияКоманды = Новый(КлассРеализации); РеализацияКоманды.ЗарегистрироватьКоманду(ИмяКоманды, Парсер); @@ -105,7 +105,7 @@ РезультатыКоманд.Вставить("Успех", 0); РезультатыКоманд.Вставить("НеверныеПараметры", 5); РезультатыКоманд.Вставить("ОшибкаВремениВыполнения", 1); - + Возврат РезультатыКоманд; КонецФункции // РезультатыКоманд @@ -162,6 +162,7 @@ Попытка Команда = Новый Команда; Команда.УстановитьСтрокуЗапуска("git rev-parse --show-toplevel"); + Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8); Команда.УстановитьПравильныйКодВозврата(0); Команда.Исполнить(); Рез = СокрЛП(Команда.ПолучитьВывод()); From 571efcc6737c2728071715d708eb8be0b9d78a8b Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 21 Jun 2024 15:28:01 +0300 Subject: [PATCH 49/59] =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20?= =?UTF-8?q?=D1=81=20--workspace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/fixtures/feature/env.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/fixtures/feature/env.json b/tests/fixtures/feature/env.json index 8e79ebb4..7a0fefb8 100644 --- a/tests/fixtures/feature/env.json +++ b/tests/fixtures/feature/env.json @@ -2,11 +2,11 @@ "$schema": "https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/vanessa-runner-schema.json", "default": { "--ibconnection":"/F./build/ib", + "--workspace":".", "--db-user":"", "--db-pwd":"" }, "xunit":{ - "--workspace":"./build", "--ibconnection": "/Fbuild/ib", // "--db-user": "Admin", // "--db-pwd": "", @@ -18,7 +18,6 @@ }, "vanessa":{ "--vanessasettings":"./build/feature/vb-conf.json", - "--workspace":"./build", "--additional":"/DisplayAllFunctions" }, "create":{ From 84b785e3d822e56b17eccfb94e1ec18f5335e45e Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 21 Jun 2024 15:36:36 +0300 Subject: [PATCH 50/59] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=84=D0=B8=D1=87=D1=83=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=D0=BD=D0=B0=20=D1=81=D1=86=D0=B5=D0=BD=D0=B0=D1=80?= =?UTF-8?q?=D0=B8=D0=B5=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\320\265\321\201\321\201\320\260.feature" | 19 ++++++++++--------- tests/fixtures/feature/vb-conf.json | 9 ++++----- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\222\320\260\320\275\320\265\321\201\321\201\320\260.feature" "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\222\320\260\320\275\320\265\321\201\321\201\320\260.feature" index aaba8a31..56d2324f 100644 --- "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\222\320\260\320\275\320\265\321\201\321\201\320\260.feature" +++ "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217\320\222\320\260\320\275\320\265\321\201\321\201\320\260.feature" @@ -6,16 +6,18 @@ Чтобы удостовериться в качестве подготовленной конфигурации Контекст: - Дано я подготовил репозиторий и рабочий каталог проекта - И я подготовил рабочую базу проекта "./build/ib" по умолчанию + И Я копирую каталог "feature" из каталога "tests/fixtures" проекта в подкаталог "build" рабочего каталога - И Я создаю каталог "build/feature" в рабочем каталоге И Я копирую файл "vb-conf.json" из каталога "tests/fixtures/feature" проекта в подкаталог "build/" рабочего каталога И Я копирую файл "env.json" из каталога "tests/fixtures/feature" проекта в подкаталог "build/" рабочего каталога - Допустим файл "build/env.json" существует + Дано файл "build/env.json" существует И файл "build/vb-conf.json" существует И Я очищаю параметры команды "oscript" в контексте +Сценарий: Первый - подготовка базы запуска + Дано я подготовил репозиторий и рабочий каталог проекта + И я подготовил рабочую базу проекта "./build/ib" по умолчанию + Сценарий: Запуск проверки поведения с паузой И Я создаю файл "build/feature/пауза.feature" с текстом """ @@ -28,14 +30,14 @@ Когда Я добавляю параметр "<КаталогПроекта>/src/main.os vanessa" для команды "oscript" И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript" - И Я добавляю параметр "--vanessasettings ./vb-conf.json" для команды "oscript" - И Я добавляю параметр "--workspace ./build" для команды "oscript" + И Я добавляю параметр "--vanessasettings ./build/vb-conf.json" для команды "oscript" И Я добавляю параметр "--path build/feature" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" Когда Я выполняю команду "oscript" И Я сообщаю вывод команды "oscript" Тогда Вывод команды "oscript" содержит - | Сценарий: Пауза | + # TODO вернуть | Сценарий: Пауза | + # | Сценарий: Пауза | | Все фичи/сценарии выполнены! | | Тестирование поведения завершено | И Вывод команды "oscript" не содержит @@ -57,8 +59,7 @@ Когда Я добавляю параметр "<КаталогПроекта>/src/main.os vanessa" для команды "oscript" И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript" - И Я добавляю параметр "--vanessasettings ./vb-conf.json" для команды "oscript" - И Я добавляю параметр "--workspace ./build" для команды "oscript" + И Я добавляю параметр "--vanessasettings ./build/vb-conf.json" для команды "oscript" И Я добавляю параметр "--path build/feature" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" Когда Я выполняю команду "oscript" diff --git a/tests/fixtures/feature/vb-conf.json b/tests/fixtures/feature/vb-conf.json index 918e0af7..10ad7e26 100644 --- a/tests/fixtures/feature/vb-conf.json +++ b/tests/fixtures/feature/vb-conf.json @@ -6,24 +6,24 @@ "$instrumentsRoot/./features/libraries/" ], "ВыполнитьСценарии": "Истина", - "ЗавершитьРаботуСистемы": "Истина", + "ЗавершитьРаботуСистемы": true, "ЗакрытьTestClientПослеЗапускаСценариев": "Истина", "ДелатьЛогВыполненияСценариевВЖР": "Истина", "ДелатьОтчетВФорматеАллюр": "Истина", "ДелатьОтчетВФорматеjUnit": "Истина", "ДелатьОтчетВФорматеCucumberJson": "Истина", - "ДелатьЛогВыполненияСценариевВТекстовыйФайл": "Истина", + "ДелатьЛогВыполненияСценариевВТекстовыйФайл": true, + "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/vanessaonline.txt", "КаталогOutputAllureБазовый": "$workspaceRoot/allurereport", "КаталогOutputjUnit": "$workspaceRoot/junitreport", "КаталогOutputCucumberJson": "$workspaceRoot/cucumber", "СоздаватьПодкаталогВКаталогеAllureДляЭтойСборки": "Ложь", "ДелатьСкриншотПриВозникновенииОшибки": "Ложь", "КаталогOutputСкриншоты": "$workspaceRoot/allurereport/screen", - "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/vanessaonline.txt", "КомандаСделатьСкриншот": "nircmd.exe savescreenshot ", "ВыгружатьСтатусВыполненияСценариевВФайл": "Истина", - "ДобавлятьКИмениСценарияУсловияВыгрузки": "Ложь", "ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев": "$workspaceRoot/buildstatus.log", + "ДобавлятьКИмениСценарияУсловияВыгрузки": "Ложь", "СписокТеговИсключение":[ "IgnoreOnCIMainBuild", "IgnoreOn8310", @@ -37,4 +37,3 @@ "СписокТеговОтбор":[ ] } - \ No newline at end of file From b09781645e263610342d54793ed9f502d332e5b1 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 21 Jun 2024 16:04:06 +0300 Subject: [PATCH 51/59] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B8=20=D1=83=D1=81=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D1=84?= =?UTF-8?q?=D0=B8=D1=87=D0=B8=20=D0=A0=D0=B0=D0=B7=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=D0=9A=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\320\260\321\206\320\270\320\270.feature" | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git "a/features/\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.feature" "b/features/\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.feature" index f7e2ac45..4261ffe5 100644 --- "a/features/\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.feature" +++ "b/features/\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.feature" @@ -6,13 +6,16 @@ Чтобы удостовериться в автоматизации сборки конфигурации из исходников Контекст: - Допустим я подготовил репозиторий и рабочий каталог проекта - И я подготовил рабочую базу проекта "./build/ib" по умолчанию + И я удаляю каталог "build/cf" + И я удаляю файл "build/1Cv8.cf" И Я очищаю параметры команды "oscript" в контексте +Сценарий: Первый - подготовка базы запуска + Допустим я подготовил репозиторий и рабочий каталог проекта + И я подготовил рабочую базу проекта "./build/ib" по умолчанию -Сценарий: Запуск разборки конфигурации из исходников в файл cf. - Допустим Я добавляю параметр "<КаталогПроекта>/src/main.os compile" для команды "oscript" +Сценарий: Запуск разборки конфигурации из исходников в файл cf + Дано Я добавляю параметр "<КаталогПроекта>/src/main.os compile" для команды "oscript" И Я добавляю параметр "-s ./cf" для команды "oscript" И Я добавляю параметр "-o ./build/1Cv8.cf" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" @@ -21,41 +24,49 @@ Тогда Вывод команды "oscript" содержит | Сохранение конфигурации успешно завершено | И Код возврата команды "oscript" равен 0 - Допустим Я создаю каталог "build/cf" в рабочем каталоге И Я очищаю параметры команды "oscript" в контексте - Допустим Я добавляю параметр "<КаталогПроекта>/src/main.os decompile" для команды "oscript" + И файл "build/1Cv8.cf" существует + Дано Я создаю каталог "build/cf" в рабочем каталоге + + Дано Я добавляю параметр "<КаталогПроекта>/src/main.os decompile" для команды "oscript" И Я добавляю параметр "-i ./build/1Cv8.cf" для команды "oscript" И Я добавляю параметр "-o ./build/cf" для команды "oscript" И Я добавляю параметр "--ibconnection /F./build/ib" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" Когда Я выполняю команду "oscript" + И я показываю вывод команды Тогда Вывод команды "oscript" содержит | Запускаю выгрузку конфигурации в исходники | | Выгрузка в исходники завершена | И каталог "build/cf" существует И файл "build/cf/Configuration.xml" существует -Сценарий: Запуск выгрузки конфигурации из текущей конфигурации. - Допустим Я добавляю параметр "<КаталогПроекта>/src/main.os compile" для команды "oscript" +Сценарий: Запуск выгрузки конфигурации из текущей конфигурации + Дано Я добавляю параметр "<КаталогПроекта>/src/main.os compile" для команды "oscript" И Я добавляю параметр "-s ./cf" для команды "oscript" И Я добавляю параметр "-c" для команды "oscript" И Я добавляю параметр "--ibconnection /F./build/ib" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" Когда Я выполняю команду "oscript" + И я показываю вывод команды Тогда Вывод команды "oscript" содержит | Загрузка конфигурации из файлов успешно завершена | И Код возврата команды "oscript" равен 0 И Я очищаю параметры команды "oscript" в контексте - Допустим Я добавляю параметр "<КаталогПроекта>/src/main.os decompile --ibconnection /F./build/ib" для команды "oscript" + Дано Я создаю каталог "build/cf" в рабочем каталоге + + Дано Я добавляю параметр "<КаталогПроекта>/src/main.os decompile --ibconnection /F./build/ib" для команды "oscript" И Я добавляю параметр "--ibconnection /F./build/ib" для команды "oscript" + И Я добавляю параметр "-c" для команды "oscript" И Я добавляю параметр "-o ./build/cf" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" - Допустим Я создаю каталог "build/cf" в рабочем каталоге + Когда Я выполняю команду "oscript" + И я показываю вывод команды Тогда Вывод команды "oscript" содержит - | Запускаю выгрузку конфигурации в исходники | + | Запускаем разборку конфигурации текущей ИБ на исходники | | Выгрузка в исходники завершена | И каталог "build/cf" существует И файл "build/cf/Configuration.xml" существует From 0e6706a4ad5635019d84f7cfa011b11c49f75a3f Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 21 Jun 2024 16:04:25 +0300 Subject: [PATCH 52/59] =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D1=81=D0=B8=D0=BD=D1=82=D0=B0=D0=BA=D1=81?= =?UTF-8?q?-=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/Form/Module.bsl" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/epf/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 5186f11e..951edcd1 100644 --- "a/epf/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -268,7 +268,7 @@ КонецФункции -&НаСервере +&НаСервереБезКонтекста Процедура Лог(Знач Комментарий, Знач Уровень = "Ошибка") Если Не ЗначениеЗаполнено(Уровень) Тогда @@ -315,7 +315,7 @@ КонецПроцедуры -&НаСервере +&НаСервереБезКонтекста Функция КлючЖР() Возврат "VanessaRunner.СозданиеПользователей"; КонецФункции From bf895987b1586081e0fa6da9327c06b91384f6fc Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 21 Jun 2024 16:31:50 +0300 Subject: [PATCH 53/59] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B8=20=D1=83=D1=81=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D1=84?= =?UTF-8?q?=D0=B8=D1=87=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8,=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=B1=D0=BE=D1=80=D0=BA=D0=B8=20=D1=80=D0=B0=D1=81?= =?UTF-8?q?=D1=88=D0=B8=D1=80=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\320\265\320\275\320\270\320\271.feature" | 26 ++++++++++--------- ...0\320\265\320\275\320\270\320\271.feature" | 11 +++++--- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git "a/features/\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.feature" "b/features/\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.feature" index ed1440d2..52fe7c5d 100644 --- "a/features/\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.feature" +++ "b/features/\320\240\320\260\320\267\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.feature" @@ -6,6 +6,9 @@ Чтобы выполнять коллективную разработку проекта 1С Контекст: + И Я очищаю параметры команды "oscript" в контексте + +Сценарий: Первый - подготовка базы Допустим я подготовил репозиторий и рабочий каталог проекта И я подготовил рабочую базу проекта "./build/ib" по умолчанию @@ -21,19 +24,18 @@ Тогда Код возврата равен 0 И Файл "cfe-out/Configuration.xml" содержит """ - - Расширение1 - - - ru - Расширение1 - - - - Customization - Adopted + Расширение1 + + + ru + Расширение1 + + + """ - # Расш1_ + И Файл "cfe-out/Configuration.xml" содержит "Расш1_" + И Файл "cfe-out/Configuration.xml" содержит "Customization" + И Файл "cfe-out/Configuration.xml" содержит "Adopted" И Файл "cfe-out/Ext/ManagedApplicationModule.bsl" содержит 'Сообщить("Внутри Расш1_ПриНачалеРаботыСистемы");' # TODO почему-то проверкак текст файла ManagedApplicationModule.bsl ниже не проходит diff --git "a/features/\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.feature" "b/features/\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.feature" index 306f1c84..76d5fdf9 100644 --- "a/features/\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.feature" +++ "b/features/\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.feature" @@ -6,10 +6,15 @@ Чтобы выполнять коллективную разработку проекта 1С Контекст: - Допустим я подготовил репозиторий и рабочий каталог проекта - Допустим я подготовил рабочую базу проекта "./build/ib" по умолчанию + Дано Я очищаю параметры команды "oscript" в контексте И Я копирую каталог "cfe" из каталога "tests/fixtures" проекта в рабочий каталог + И я удаляю файл "*.cfe" + И я удаляю каталог "cfe-out" + +Сценарий: Первый - подготовка базы + Дано я подготовил репозиторий и рабочий каталог проекта + Дано я подготовил рабочую базу проекта "./build/ib" по умолчанию Сценарий: Сборка одного расширения с явно заданной базой @@ -47,7 +52,7 @@ # TODO Сценарий: Сборка каталога расширений с явно заданной базой Сценарий: Сборка расширения из исходников в cfe-файл с изменением номера сборки - Допустим Я добавляю параметр "<КаталогПроекта>/src/main.os compileexttocfe" для команды "oscript" + Дано Я добавляю параметр "<КаталогПроекта>/src/main.os compileexttocfe" для команды "oscript" И Я добавляю параметр "-s cfe -o РасширениеНовое1.cfe" для команды "oscript" И Я добавляю параметр "--build-number 1516" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" From a1a2fb1643f140582e451090d3a75b3a9bda07e3 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 21 Jun 2024 16:32:17 +0300 Subject: [PATCH 54/59] =?UTF-8?q?=D0=BC=D0=B5=D0=BB=D0=BA=D0=BE=D0=B5=20?= =?UTF-8?q?=D1=83=D1=81=D0=BA=D0=BE=D1=80=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=84?= =?UTF-8?q?=D0=B8=D1=87=D0=B8=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BE=D0=BA=D1=80=D1=83=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\321\203\320\266\320\265\320\275\320\270\321\217.feature" | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git "a/features/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.feature" "b/features/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.feature" index 10238bac..ac6e97ba 100644 --- "a/features/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.feature" +++ "b/features/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.feature" @@ -20,10 +20,9 @@ И Я установил рабочий каталог как текущий каталог -Сценарий: Проверка репозитория git +Сценарий: Инициализация рабочей базы по умолчанию в ./build/ib Тогда В рабочем каталоге существует каталог ".git" -Сценарий: Инициализация рабочей базы по умолчанию в ./build/ib Когда Я сохраняю каталог проекта в контекст # Тогда Я показываю каталог проекта # И Я показываю рабочий каталог @@ -104,7 +103,6 @@ Сценарий: Разрядность x64 - Инициализация рабочей базы по умолчанию в ./build/ib Когда Я сохраняю каталог проекта в контекст - # Допустим я включаю отладку лога с именем "oscript.app.vanessa-runner" Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os init-dev --src ./cf --nocacheuse --language ru --locale ru --bitness x64" И Я сообщаю вывод команды "oscript" From 3f4e38d2b2b24fb8a1db1020b2ea785088b21a21 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 27 Jun 2024 16:10:16 +0300 Subject: [PATCH 55/59] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D0=B4=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=81=D1=86=D0=B5=D0=BD=D0=B0=D1=80=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - падала инкрементальная загрузка - добавлены отладочные логи --- ...6\320\265\320\275\320\270\321\217.feature" | 38 ++++++++++++------- ...20\266\320\265\320\275\320\270\321\217.os" | 31 ++++++++++----- 2 files changed, 46 insertions(+), 23 deletions(-) diff --git "a/features/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.feature" "b/features/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.feature" index 19eae3e3..2cf15e47 100644 --- "a/features/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.feature" +++ "b/features/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.feature" @@ -6,19 +6,19 @@ Чтобы выполнять коллективную разработку проекта 1С Контекст: Подготовка репозитория и рабочего каталога проекта 1С - Допустим я включаю отладку лога с именем "oscript.app.vanessa-runner" + Дано я включаю отладку лога с именем "oscript.app.vanessa-runner" И Я очищаю параметры команды "oscript" в контексте - Допустим Я создаю временный каталог и сохраняю его в контекст + Дано Я создаю временный каталог и сохраняю его в контекст И Я устанавливаю временный каталог как рабочий каталог И Я инициализирую репозиторий git в рабочем каталоге - Допустим Я создаю каталог "build/out" в рабочем каталоге + Дано Я создаю каталог "build/out" в рабочем каталоге И Я копирую каталог "cf" из каталога "tests/fixtures" проекта в рабочий каталог И Я установил рабочий каталог как текущий каталог + Когда Я сохраняю каталог проекта в контекст Сценарий: Инициализация и обновление рабочей базы по умолчанию в ./build/ib - Когда Я сохраняю каталог проекта в контекст Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os init-dev --src ./cf --nocacheuse --language ru" И Я очищаю параметры команды "oscript" в контексте @@ -28,7 +28,6 @@ И Код возврата команды "oscript" равен 0 Сценарий: Инициализация и обновление рабочей базы на сервере в режиме реструктуризации -v2 - Когда Я сохраняю каталог проекта в контекст Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os init-dev --src ./cf --nocacheuse --language ru" И Я очищаю параметры команды "oscript" в контексте @@ -39,37 +38,50 @@ Сценарий: Инициализация и обновление с инкрементальной загрузкой по логу GIT Когда Я выполняю команду "git" с параметрами "init" + И я показываю вывод команды И Я очищаю параметры команды "git" в контексте - Когда Я выполняю команду "echo" с параметрами "lastUploadedCommit.txt >> .gitignore" - И Я очищаю параметры команды "echo" в контексте + Когда Я создаю файл ".gitignore" с текстом + """ + lastUploadedCommit.txt + build/ib/ + """ Когда Я выполняю команду "git" с параметрами "add -A" + И я показываю вывод команды И Я очищаю параметры команды "git" в контексте Когда Я выполняю команду "git" с параметрами 'commit -m "first commit"' + И я показываю вывод команды И Я очищаю параметры команды "git" в контексте + + Дано я включаю отладку лога с именем "oscript.app.vanessa-runner" + Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os init-dev --src ./cf --nocacheuse --language ru" + И я показываю вывод команды + И Я очищаю параметры команды "oscript" в контексте + Когда Я выполняю команду "git" с параметрами "rev-parse --short HEAD >> ./cf/lastUploadedCommit.txt" + И я показываю вывод команды И Я очищаю параметры команды "git" в контексте Тогда Файл "./cf/lastUploadedCommit.txt" существует - - Когда Я сохраняю каталог проекта в контекст - Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os init-dev --src ./cf --nocacheuse --language ru" - И Я очищаю параметры команды "oscript" в контексте + # И я показываю текст файла "./cf/lastUploadedCommit.txt" Когда Я выполняю команду "echo" с параметрами 'Сообщить("Управляемое приложение"); A=1; >> ./cf/Ext/ManagedApplicationModule.bsl' Когда Я выполняю команду "git" с параметрами "status" + И я показываю вывод команды Тогда Вывод команды "git" содержит "modified: cf/Ext/ManagedApplicationModule.bsl" И Я очищаю параметры команды "git" в контексте Когда Я выполняю команду "git" с параметрами "add -A" + И я показываю вывод команды И Я очищаю параметры команды "git" в контексте Когда Я выполняю команду "git" с параметрами 'commit -m "second commit"' + И я показываю вывод команды И Я очищаю параметры команды "git" в контексте - Когда Я сохраняю каталог проекта в контекст Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os update-dev --src ./cf --nocacheuse --git-increment --language ru" + И я показываю вывод команды Тогда Вывод команды "oscript" содержит "Будет выполнена инкрементальная загрузка" И Вывод команды "oscript" содержит "Измененные файлы:" И Вывод команды "oscript" содержит "ManagedApplicationModule.bsl" И Вывод команды "oscript" содержит "Обновление конфигурации базы данных успешно завершено" - И Код возврата команды "oscript" равен 0 + И Код возврата команды "oscript" равен 0 # TODO Сценарий: Инициализация сервисной базы по умолчанию в ./build/ibservice # TODO Сценарий: Инициализация рабочей базы в отдельном каталоге diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index fd3204b2..4a7dee8b 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -47,7 +47,7 @@ "Снимает конфигурации с поддержки перед загрузкой исходников"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--git-increment", - СтрШаблон("Инкрменальная загрузка по git diff + СтрШаблон("Инкременальная загрузка по git diff | Схема работы | При загрузке в каталоге исходников (--src) ищется файл | %1 (необходимо добавить в .gitignore). @@ -129,7 +129,7 @@ КонецЕсли; СтрокаПодключения = ДанныеПодключения.ПутьБазы; - + Лог.Отладка("ИнициализироватьБазуДанных СтрокаПодключения:" + СтрокаПодключения); Если ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключения) Тогда @@ -161,13 +161,17 @@ Хэш = ПолучитьХэшПоследнегоЗагруженногоКоммита(ПутьИсходников); Если ПустаяСтрока(Хэш) Тогда + Лог.Отладка("Не найден хэш последнего загруженного коммита для инкрементальной загрузки"); Возврат ""; КонецЕсли; ТекущийКаталог = КорневойПутьПроекта; + Лог.Отладка("ТекущийКаталог %1", ТекущийКаталог); + ОтносительныйПутьИсходников = ФС.ОтносительныйПуть(КорневойПутьПроекта, ПутьИсходников, "/"); КоманднаяСтрока = СтрШаблон("git diff --name-only %1 HEAD", Хэш); + Лог.Отладка("Запускаю команду git получить измененные файлы %1", КоманднаяСтрока); Процесс = СоздатьПроцесс(КоманднаяСтрока, ТекущийКаталог, Истина, , КодировкаТекста.UTF8); Процесс.Запустить(); @@ -178,6 +182,7 @@ Пока Процесс.ПотокВывода.ЕстьДанные Цикл СтрокаВывода = Процесс.ПотокВывода.ПрочитатьСтроку(); + Лог.Отладка(" Строка вывода команды: %1", СтрокаВывода); Если СтрНачинаетсяС(СтрокаВывода, ОтносительныйПутьИсходников) И Не ФайлВСпискеИсключений(СтрокаВывода) Тогда @@ -196,6 +201,8 @@ КонецЕсли; КонецЦикла; + Лог.Отладка("Ошибки от процесса + |%1", Процесс.ПотокОшибок.Прочитать()); Если ЗначениеЗаполнено(СтрокаИзмененныхФайлов) Тогда СтрокаИзмененныхФайлов = Лев(СтрокаИзмененныхФайлов, СтрДлина(СтрокаИзмененныхФайлов) - 1); @@ -206,6 +213,8 @@ |%1", ИзменныеФайлыЛог ); + Иначе + Лог.Отладка("Не получена строка измененных файлов для инкрементальной загрузки"); КонецЕсли; Возврат СтрокаИзмененныхФайлов; @@ -215,8 +224,10 @@ Функция ПолучитьХэшПоследнегоЗагруженногоКоммита(Знач ПутьИсходников) ИмяФайла = ФайлПредыдущегоГитКоммита(ПутьИсходников).ПолноеИмя; + Лог.Отладка("Путь файла предыдущего коммита git %1", ИмяФайла); Если Не ФС.ФайлСуществует(ИмяФайла) Тогда + Лог.Отладка("Не существует файл предыдущего коммита git %1", ИмяФайла); Возврат ""; КонецЕсли; @@ -289,7 +300,7 @@ Возврат "lastUploadedCommit.txt"; КонецФункции -Функция НовыйМенеджерСборки(ПараметрыКоманды) +Функция НовыйМенеджерСборки(ПараметрыКоманды) Если ПараметрыХранилища.РежимОбновления Тогда Возврат ОбщиеМетоды.НовыйМенеджерКонфигуратора(); @@ -299,7 +310,7 @@ КонецФункции -Функция СоздатьДанныеПодключения(ДанныеПодключения) +Функция СоздатьДанныеПодключения(ДанныеПодключения) _ДанныеПодключения = Новый Структура(ДанныеПодключения); ЗаполнитьЗначенияСвойств(_ДанныеПодключения, ДанныеПодключения); @@ -307,13 +318,13 @@ Файл = Новый Файл(КаталогБазы); _ДанныеПодключения.ПутьБазы = "/F""" + Файл.ПолноеИмя + """"; _ДанныеПодключения.СтрокаПодключения = "/F""" + Файл.ПолноеИмя + """"; - + Возврат _ДанныеПодключения; КонецФункции -Процедура ЗагрузкаИзИсходников(МенеджерСборки) - +Процедура ЗагрузкаИзИсходников(МенеджерСборки) + Лог.Информация("Запускаем обновление конфигурации из исходников..."); Если ИнкрементальнаяЗагрузкаGit Тогда СписокФайлов = ПолучитьСтрокуИзмененныхФайлов(ПутьКИсходникам); @@ -333,7 +344,7 @@ КонецЕсли; Лог.Информация("Информационная база обновлена из исходников."); - + КонецПроцедуры Процедура ЗагрузкаИзФайлаВыгрузки(МенеджерСборки) @@ -358,13 +369,13 @@ ПараметрыХранилища.Версия); Исключение МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение; + ВызватьИсключение; КонецПопытки; КонецПроцедуры Процедура ОбновитьКонфигурациюБД(МенеджерСборки) - + Попытка Если РежимРазработчика = Ложь Или РежимыРеструктуризации.Первый Или РежимыРеструктуризации.Второй Тогда ОбщиеМетоды.ОбновитьКонфигурациюБД(МенеджерСборки, From 5313c3a348d02312cc77c4587a3d962a96ef500b Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 27 Jun 2024 16:29:14 +0300 Subject: [PATCH 56/59] =?UTF-8?q?=D0=B2=20=D1=81=D0=BB=D1=83=D1=87=D0=B0?= =?UTF-8?q?=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=82=D0=B0?= =?UTF-8?q?=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit исправлено падение фичи --- .../Ext/Form/Module.bsl" | 12 ++++++------ ...\321\202\320\265\320\273\320\265\320\271.feature" | 11 +++-------- ...1\200\320\260\321\202\320\276\321\200\320\260.os" | 11 ++++++----- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git "a/epf/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 951edcd1..9e701284 100644 --- "a/epf/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -242,7 +242,7 @@ Функция СоздатьПервогоАдминистратораПриНеобходимости(Имя) Если ПользователиИнформационнойБазы.ПолучитьПользователей().Количество() > 0 Тогда - Лог("Уже существуют пользователь. Пользователь-администратор не создан!"); + Лог("Уже существуют пользователи. Пользователь-администратор не создан!"); Возврат Ложь; КонецЕсли; @@ -251,7 +251,7 @@ Администратор.АутентификацияСтандартная = Истина; Администратор.ПоказыватьВСпискеВыбора = Истина; Администратор.ПолноеИмя = Имя; - + СнятьЗащитуОтОпасныхДействий(Администратор); ДобавитьРольПользователю(Администратор, "ПолныеПрава"); @@ -294,7 +294,7 @@ Процедура СнятьЗащитуОтОпасныхДействий(ПользовательИБ) Попытка - + ОписаниеЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий; ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь; @@ -308,11 +308,11 @@ &НаСервереБезКонтекста Процедура ДобавитьРольПользователю(ПользовательИБ, ИмяРоли) - + Если Метаданные.Роли.Найти(ИмяРоли) <> Неопределено Тогда ПользовательИБ.Роли.Добавить(Метаданные.Роли[ИмяРоли]); КонецЕсли; - + КонецПроцедуры &НаСервереБезКонтекста @@ -320,4 +320,4 @@ Возврат "VanessaRunner.СозданиеПользователей"; КонецФункции -#КонецОбласти \ No newline at end of file +#КонецОбласти diff --git "a/features/\320\222\320\275\320\265\321\210\320\275\320\270\320\265 \320\276\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.feature" "b/features/\320\222\320\275\320\265\321\210\320\275\320\270\320\265 \320\276\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.feature" index 700df31f..8797f1a3 100644 --- "a/features/\320\222\320\275\320\265\321\210\320\275\320\270\320\265 \320\276\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.feature" +++ "b/features/\320\222\320\275\320\265\321\210\320\275\320\270\320\265 \320\276\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271.feature" @@ -30,13 +30,10 @@ И Я добавляю параметр "--command" для команды "oscript" И Я добавляю параметр "СоздатьАдминистратора;Имя=Администратор;ЗавершитьРаботуСистемы" для команды "oscript" И Я добавляю параметр "--execute СоздатьПользователей.epf" для команды "oscript" - # И Я добавляю параметр "--execute $runnerRoot\epf\СоздатьПользователей.epf" для команды "oscript" И Я добавляю параметр " --ibconnection /Fbuild/ib" для команды "oscript" И Я добавляю параметр "--language ru" для команды "oscript" Когда Я выполняю команду "oscript" - # И Я сообщаю вывод команды "oscript" - Тогда Вывод команды "oscript" содержит | ИНФОРМАЦИЯ - Выполняю команду/действие в режиме 1С:Предприятие | | Информация: Пользователь-администратор с именем Администратор создан! | @@ -60,10 +57,9 @@ Тогда Вывод команды "oscript" содержит | ИНФОРМАЦИЯ - Выполняю команду/действие в режиме 1С:Предприятие | | Пользователь ИБ не идентифицирован | - | ИНФОРМАЦИЯ - Выполнение команды/действия в режиме 1С:Предприятие завершено. | Тогда Вывод команды "oscript" не содержит | Ошибка: Неудача при обработке параметров запуска | - И Код возврата команды "oscript" равен 0 + И Код возврата команды "oscript" равен 1 Сценарий: Неудача создания первого пользователя-администратора, если пользователи существуют @@ -80,8 +76,7 @@ Тогда Вывод команды "oscript" содержит | ИНФОРМАЦИЯ - Выполняю команду/действие в режиме 1С:Предприятие | - | Ошибка: Уже существуют пользователь. Пользователь-администратор не создан! | - | ИНФОРМАЦИЯ - Выполнение команды/действия в режиме 1С:Предприятие завершено. | + | Ошибка: Уже существуют пользователи. Пользователь-администратор не создан! | Тогда Вывод команды "oscript" не содержит | Ошибка: Неудача при обработке параметров запуска | - И Код возврата команды "oscript" равен 0 + И Код возврата команды "oscript" равен 1 diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" index dbec98e9..46882677 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" @@ -103,7 +103,7 @@ УправлениеКонфигуратором.ПутьКПлатформе1С(ПутьКПредприятию); КонецЕсли; Лог.Информация("Используется версия платформы %1", ТекущаяВерсияПлатформы()); - + Если Не ПустаяСтрока(КлючРазрешенияЗапуска) Тогда УправлениеКонфигуратором.УстановитьКлючРазрешенияЗапуска(КлючРазрешенияЗапуска); КонецЕсли; @@ -194,7 +194,7 @@ КонецПроцедуры Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", Знач ИмяБазыВСписке = "") Экспорт - + Попытка УправлениеКонфигуратором.СоздатьФайловуюБазу(КаталогБазы, ПутьКШаблону, ИмяБазыВСписке); Текст = УправлениеКонфигуратором.ВыводКоманды(); @@ -211,7 +211,7 @@ ИЛИ СтрНайти(Текст, "completed successfully") = 0) Тогда ВызватьИсключение "Результат работы не успешен"; - + КонецЕсли; КонецПроцедуры @@ -899,14 +899,14 @@ // ФайлВерсии - Строка - Путь к файлу версии // ТолькоИзмененные - Булево - Выгружать только измененные файлы для ускорения выгрузки // -Процедура РазобратьРасширениеНаИсходники(КаталогВыгрузки, ИмяРасширения, +Процедура РазобратьРасширениеНаИсходники(КаталогВыгрузки, ИмяРасширения, Знач ФайлВерсии = "", Знач ТолькоИзмененные = Истина) Экспорт ФС.ОбеспечитьКаталог(КаталогВыгрузки); Синхронизировать = ТолькоИзмененные И ФС.ФайлСуществует(ФайлВерсии); ФорматВыгрузки = ""; // Всегда иерархический - УправлениеКонфигуратором.ВыгрузитьРасширениеВФайлы(КаталогВыгрузки, ИмяРасширения, ФорматВыгрузки, + УправлениеКонфигуратором.ВыгрузитьРасширениеВФайлы(КаталогВыгрузки, ИмяРасширения, ФорматВыгрузки, Синхронизировать, ФайлВерсии); КонецПроцедуры @@ -1673,6 +1673,7 @@ Функция ИзвестныеНормализованныеОшибки() Ошибки = Новый Массив; Ошибки.Добавить("Пользователь ИБ не идентифицирован"); + Ошибки.Добавить("Уже существуют пользователи. Пользователь-администратор не создан"); Результат = Новый Массив; Для каждого Ошибка Из Ошибки Цикл From 1033693a8cb382f2534a0ac47fce8b328d889e83 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 27 Jun 2024 16:56:19 +0300 Subject: [PATCH 57/59] =?UTF-8?q?=D0=9E=D0=B1=D1=80=D0=B5=D0=B7=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F=20=D0=B8=D0=BC=D1=8F=20=D0=98=D0=91=20?= =?UTF-8?q?=D0=B2=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B5=20=D0=B5=D1=81?= =?UTF-8?q?=D0=BB=D0=B8=20=D0=9A=D0=BE=D1=80=D0=BD=D0=B5=D0=B2=D0=BE=D0=B9?= =?UTF-8?q?=20=D0=BF=D1=83=D1=82=D1=8C=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B0=20=D1=81=D0=BE=D0=B4=D0=B5=D1=80=D0=B6=D0=B8=D1=82?= =?UTF-8?q?=20=D1=82=D0=BE=D1=87=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes #610 --- ...20\266\320\265\320\275\320\270\321\217.os" | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index e08b5436..e045796d 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -93,7 +93,7 @@ ПутьКФайлуВыгрузки = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--dt"]); ПутьКФайлуКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--cf"]); РежимРазработчика = ПараметрыКоманды["--dev"]; - + ИнициализироватьБазуДанных(ПараметрыКоманды["--v8version"], ПараметрыКоманды["--nocacheuse"], ПараметрыКоманды); @@ -123,13 +123,13 @@ МенеджерСборки.Конструктор(ДанныеПодключения, ПараметрыКоманды); Лог.Отладка("ИнициализироватьБазуДанных СтрокаПодключения:" + СтрокаПодключения); - + Если ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключения) Тогда - + ОбеспечитьФайловуюБазу(МенеджерСборки, СтрокаПодключения); БазуСоздавали = Истина; Лог.Информация("Создали базу данных для " + СтрокаПодключения); - + КонецЕсли; // Базу создали, пользователей еще нет. @@ -142,8 +142,8 @@ КонецЕсли; Если ЗначениеЗаполнено(ПутьКИсходникам) Тогда - ЗагрузкаИзИсходников(МенеджерСборки); - + ЗагрузкаИзИсходников(МенеджерСборки); + ИначеЕсли ЗначениеЗаполнено(ПутьКФайлуВыгрузки) Тогда ЗагрузкаИзФайлаВыгрузки(МенеджерСборки); @@ -152,14 +152,14 @@ ИначеЕсли ПараметрыХранилища.РежимОбновления Тогда ЗагрузкаИзХранилища(МенеджерСборки, ПараметрыХранилища); - + Иначе Лог.Информация("Создана пустая база данных."); - + КонецЕсли; ОбновитьКонфигурациюБД(МенеджерСборки); - + МенеджерСборки.Деструктор(); ДобавитьБазуВСписокБаз(НеДобавлятьВСписокБаз, ВерсияПлатформы, СтрокаПодключения); @@ -168,19 +168,19 @@ КонецПроцедуры -Процедура ОбеспечитьФайловуюБазу(МенеджерСборки, СтрокаПодключения) - +Процедура ОбеспечитьФайловуюБазу(МенеджерСборки, СтрокаПодключения) + МенеджерСборки.УстановитьКонтекст(СтрокаПодключения, "", ""); КаталогБазы = ОбщиеМетоды.КаталогФайловойИБ(СтрокаПодключения); Лог.Отладка("Нашли каталог базы для удаления <%1> ", КаталогБазы); Попытка - МенеджерСборки.СоздатьФайловуюБазу(КаталогБазы); + МенеджерСборки.СоздатьФайловуюБазу(КаталогБазы); Исключение МенеджерСборки.Деструктор(); ВызватьИсключение; КонецПопытки; - + КонецПроцедуры Процедура ЗагрузкаИзФайлаКонфигурации(МенеджерСборки) @@ -200,8 +200,8 @@ КонецПроцедуры -Процедура ЗагрузкаИзИсходников(МенеджерСборки) - +Процедура ЗагрузкаИзИсходников(МенеджерСборки) + Лог.Информация("Запускаем загрузку конфигурации из исходников..."); Попытка СписокФайлов = ""; @@ -211,7 +211,7 @@ ВызватьИсключение; КонецПопытки; Лог.Информация("Создана информационная база из исходников."); - + КонецПроцедуры Процедура ЗагрузкаИзФайлаВыгрузки(МенеджерСборки) @@ -236,13 +236,13 @@ ПараметрыХранилища.Версия); Исключение МенеджерКонфигуратора.Деструктор(); - ВызватьИсключение; + ВызватьИсключение; КонецПопытки; КонецПроцедуры Процедура ОбновитьКонфигурациюБД(МенеджерСборки) - + Попытка Если РежимРазработчика = Ложь Или РежимыРеструктуризации.Первый Или РежимыРеструктуризации.Второй Тогда ОбщиеМетоды.ОбновитьКонфигурациюБД(МенеджерСборки, @@ -256,7 +256,7 @@ КонецПроцедуры Процедура ДобавитьБазуВСписокБаз(НеДобавлятьВСписокБаз, ВерсияПлатформы, СтрокаПодключения) - + Если НеДобавлятьВСписокБаз Тогда Возврат; КонецЕсли; @@ -268,7 +268,7 @@ ДопДанныеСпискаБаз.Вставить("Version", ВерсияПлатформы); КонецЕсли; МенеджерСпискаБаз.ДобавитьБазуВСписокБаз(СтрокаПодключения, - Новый Файл(КорневойПутьПроекта).ИмяБезРасширения, + Новый Файл(КорневойПутьПроекта).Имя, ДопДанныеСпискаБаз); Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); @@ -277,7 +277,7 @@ КонецПроцедуры -Функция НовыйМенеджерСборки(ПараметрыКоманды) +Функция НовыйМенеджерСборки(ПараметрыКоманды) Если ПараметрыХранилища.РежимОбновления Тогда Возврат ОбщиеМетоды.НовыйМенеджерКонфигуратора(); @@ -287,7 +287,7 @@ КонецФункции -Функция СоздатьДанныеПодключения(ДанныеПодключения) +Функция СоздатьДанныеПодключения(ДанныеПодключения) _ДанныеПодключения = Новый Структура(ДанныеПодключения); КаталогБазы = ОбъединитьПути(КорневойПутьПроекта, ?(РежимРазработчика = Истина, "./build/ibservice", "./build/ib")); @@ -296,7 +296,7 @@ _ДанныеПодключения.СтрокаПодключения = "/F""" + Файл.ПолноеИмя + """"; _ДанныеПодключения.Пользователь = ""; _ДанныеПодключения.Пароль = ""; - + Возврат _ДанныеПодключения; КонецФункции From f5f9857fbd208afe5c264a36320365d6d4462239 Mon Sep 17 00:00:00 2001 From: Egor Ivanov Date: Fri, 21 Jun 2024 17:23:09 +0300 Subject: [PATCH 58/59] =?UTF-8?q?=D0=94=D0=BE=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D0=BD=D0=B8=D0=BC=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=BE=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/Form/Module.bsl" | 46 +++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git "a/epf/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 61f7956a..1f660910 100644 --- "a/epf/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217/\320\227\320\260\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\265\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -45,12 +45,18 @@ ПараметрыКоманднойСтроки); ИспользоватьОсновныеРолиДляВсехПользователей = ЗначениеПараметраБулево("ИспользоватьОсновныеРолиДляВсехПользователей", ПараметрыКоманднойСтроки, Истина); + ПроверитьПрименимость = ЗначениеПараметраБулево("ПроверитьПрименимость", ПараметрыКоманднойСтроки, Ложь); + ЗагружатьРасширениеПриНаличииПроблемПрименимости = ЗначениеПараметраБулево("ЗагружатьРасширениеПриНаличииПроблемПрименимости", ПараметрыКоманднойСтроки, Ложь); ПараметрыРасширения = Новый Структура; ПараметрыРасширения.Вставить("БезопасныйРежим", БезопасныйРежимРасширения); ПараметрыРасширения.Вставить("ЗащитаОтОпасныхДействий", ЗащитаОтОпасныхДействийРасширения); ПараметрыРасширения.Вставить("ИспользоватьОсновныеРолиДляВсехПользователей", - ИспользоватьОсновныеРолиДляВсехПользователей); + ИспользоватьОсновныеРолиДляВсехПользователей); + ПараметрыРасширения.Вставить("ПроверитьПрименимость", + ПроверитьПрименимость); + ПараметрыРасширения.Вставить("ЗагружатьРасширениеПриНаличииПроблемПрименимости", + ЗагружатьРасширениеПриНаличииПроблемПрименимости); Исключение ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); @@ -68,7 +74,6 @@ КонецПопытки; Попытка - ЗагрузитьРасширения(ПутьРасширения, ИмяРасширения, Перезаписывать, ПараметрыРасширения, ЗавершитьРаботуСистемы, ОтключитьЛогикуНачалаРаботыСистемы); @@ -108,6 +113,8 @@ |Если параметр Перезаписывать указан, если соответствующие расширение будет переустановлено. | Если параметр Перезаписывать не указан, будет выдана ошибка, если расширение с таким именем уже установлено!. |Если указано ЗавершитьРаботуСистемы=Ложь, работа 1С:Предприятия не будет завершена. + |Если параметр ПроверитьПрименимость указан, перед загрузкой расширения будет выполнена проверка на наличие проблем применимости расширения. + | Если, несмотря на наличие проблем применимости, нужно загрузить расширение - необходимо указать параметр ЗагружатьРасширениеПриНаличииПроблемПрименимости | |По умолчанию простой режим запуска Путь=Путь загружает расширение из файла, отключая безопасный режим и защиту от опасных действий. |Для платформы 8.3.15 и выше по умолчанию расширение загружается с использованим основных ролей расширения для всех пользователей. @@ -199,6 +206,9 @@ ОписаниеЗащиты = Новый("ОписаниеЗащитыОтОпасныхДействий"); ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = ПараметрыРасширения.ЗащитаОтОпасныхДействий; + + ПроверитьПрименимость = ПараметрыРасширения.ПроверитьПрименимость; + ЗагружатьРасширениеПриНаличииПроблемПрименимости = ПараметрыРасширения.ЗагружатьРасширениеПриНаличииПроблемПрименимости; Расширение = РасширенияКонфигурации.Создать(); Расширение.БезопасныйРежим = ПараметрыРасширения.БезопасныйРежим; @@ -208,7 +218,17 @@ Расширение.ИспользоватьОсновныеРолиДляВсехПользователей = ПараметрыРасширения.ИспользоватьОсновныеРолиДляВсехПользователей; КонецЕсли; - + + Если ПроверитьПрименимость и не ПовторнаяУстановка Тогда + МассивПроблемПрименимости = Расширение.ПроверитьВозможностьПрименения(ДвоичныеДанныеРасширения, Истина); + ВывестиДанныеОПроблемахПрименимости(МассивПроблемПрименимости, Имя); + Если МассивПроблемПрименимости.Количество() > 0 И НЕ ЗагружатьРасширениеПриНаличииПроблемПрименимости Тогда + ЛогСервер("Расширение не удалось установить. Обнаружены ошибки применимости! + | Если вы хотите загрузить расширение не смотря на ошибки применимости, то используйте параметр <ЗагружатьРасширениеПриНаличииПроблемПрименимости;>"); + ВызватьИсключение "Установка не удалась"; + КонецЕсли; + КонецЕсли; + Попытка Расширение.Записать(ДвоичныеДанныеРасширения); Исключение @@ -331,6 +351,26 @@ КонецПроцедуры +&НаСервере +Процедура ВывестиДанныеОПроблемахПрименимости(МассивПроблемПрименимости, ИмяНовогоРасширения) + СтрокаОшибокПрименимости = ""; + Шаблон = "В расширении <%1> обнаружена проблема с важностью <%2>: + |%3"; + + Для Каждого Проблема Из МассивПроблемПрименимости Цикл + СтрокаОшибокПрименимости = СтрокаОшибокПрименимости+Символы.ПС+СтрШаблон(Шаблон, + ?(ЗначениеЗаполнено(Проблема.Расширение.Имя), Проблема.Расширение.Имя, ИмяНовогоРасширения), + Строка(Проблема.Важность), + Проблема.Описание); + КонецЦикла; + + Если НЕ СтрокаОшибокПрименимости = "" Тогда + ЛогСервер("При проверке применимости расширения обнаружены следующие проблемы: + | + |" + СтрокаОшибокПрименимости, "Информация"); + КонецЕсли; +КонецПроцедуры + #КонецОбласти #Область БиблиотекаЗапускаВанессаРаннер From eee2e20641af3f5942453ebf5b8895005595b6c9 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 17 May 2023 20:33:32 +0200 Subject: [PATCH 59/59] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D1=8E?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D0=BD=D0=B5=D0=BE=D0=B1=D1=85=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BC=D1=8B=D0=B5=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BE=D1=82?= =?UTF-8?q?=D1=87=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\200\320\276\320\265\320\272\321\202\320\260EDT.os" | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\276\320\265\320\272\321\202\320\260EDT.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\276\320\265\320\272\321\202\320\260EDT.os" index 39e839ef..9d16da5f 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\276\320\265\320\272\321\202\320\260EDT.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\276\320\265\320\272\321\202\320\260EDT.os" @@ -81,6 +81,11 @@ ПутьОтчетаВФорматеJUnitxml = ПараметрыКоманды["--junitpath"]; Если ПутьОтчетаВФорматеJUnitxml = Неопределено Тогда ПутьОтчетаВФорматеJUnitxml = ""; + Иначе + СообщениеОшибки = "Генерация отчетов тестирования JUnit невозможна, т.к. не существуют каталоги:"; + МассивПутей = Новый Массив; + МассивПутей.Добавить(ПутьОтчетаВФорматеJUnitxml); + ОбщиеМетоды.ОбеспечитьСуществованиеРодительскихКаталоговДляПутей(МассивПутей, СообщениеОшибки); КонецЕсли; ПутьОтчетаВФорматеAllure = ПараметрыКоманды["--allure-results"]; @@ -88,6 +93,8 @@ ПутьОтчетаВФорматеAllure = ""; ИначеЕсли ОчищатьКаталогОтчетов Тогда ФС.ОбеспечитьПустойКаталог(ПутьОтчетаВФорматеAllure); + Иначе + ФС.ОбеспечитьКаталог(ПутьОтчетаВФорматеAllure); КонецЕсли; ПутьОтчетаВФорматеAllure2 = ПараметрыКоманды["--allure-results2"]; @@ -95,6 +102,8 @@ ПутьОтчетаВФорматеAllure2 = ""; ИначеЕсли ОчищатьКаталогОтчетов Тогда ФС.ОбеспечитьПустойКаталог(ПутьОтчетаВФорматеAllure2); + Иначе + ФС.ОбеспечитьКаталог(ПутьОтчетаВФорматеAllure2); КонецЕсли; СохранятьОтчетВФайл = ЗначениеЗаполнено(ПутьОтчетаВФорматеJUnitxml)