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 e45f48a7..ff39f101 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" @@ -14,6 +14,9 @@ Перем Лог; Перем КорневойПутьПроекта; +// Параметры команды +Перем ПутьКФайлуКонфигурации; + /////////////////////////////////////////////////////////////////////////////////////////////////// // Прикладной интерфейс @@ -31,6 +34,9 @@ | указываем версию платформы, которую хотим использовать, | и получаем по пути build\ib готовую базу для тестирования."); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--dt", "Путь к файлу с dt выгрузкой"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--cf", "Путь к cf-файлу конфигурации + | В пути файла можно указать шаблонную переменную $version для подстановки в нее версии конфигурации + | Пример: 1Cv8_$version.cf выгрузит файл вида 1Cv8_1.2.3.4.cf"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--dev", "Признак dev режима, создаем и загружаем автоматом структуру конфигурации"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--storage", "Признак обновления из хранилища"); @@ -73,6 +79,8 @@ РежимыРеструктуризации.Вставить("Первый", ПараметрыКоманды["--v1"]); РежимыРеструктуризации.Вставить("Второй", ПараметрыКоманды["--v2"]); + ПутьКФайлуКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--cf"]); + ИнициализироватьБазуДанных(РежимыРеструктуризации, ПараметрыКоманды["--src"], ПараметрыКоманды["--dt"], ДанныеПодключения, ПараметрыКоманды["--uccode"], ПараметрыКоманды["--v8version"], ПараметрыКоманды["--dev"], @@ -199,6 +207,10 @@ ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); КонецПопытки; + Если ЗначениеЗаполнено(ПутьКФайлуКонфигурации) Тогда + ЗагрузкаИзФайлаКонфигурации(МенеджерКонфигуратора); + КонецЕсли; + МенеджерКонфигуратора.Деструктор(); Если НЕ НеДобавлятьВСписокБаз Тогда @@ -272,3 +284,19 @@ КонецЕсли; КонецПроцедуры + +Процедура ЗагрузкаИзФайлаКонфигурации(МенеджерКонфигуратора) + + Лог.Информация("Запускаем загрузку конфигурации из cf-файла"); + МенеджерВерсий = Новый МенеджерВерсийФайлов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\222\320\265\321\200\321\201\320\270\320\271\320\244\320\260\320\271\320\273\320\276\320\2621\320\241.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\222\320\265\321\200\321\201\320\270\320\271\320\244\320\260\320\271\320\273\320\276\320\2621\320\241.os" index 4b3d7962..165ddec3 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\222\320\265\321\200\321\201\320\270\320\271\320\244\320\260\320\271\320\273\320\276\320\2621\320\241.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\222\320\265\321\200\321\201\320\270\320\271\320\244\320\260\320\271\320\273\320\276\320\2621\320\241.os" @@ -87,6 +87,65 @@ КонецФункции +// Поиск файла подходящего под шаблон номера версии. +// +// Параметры: +// ПутьКФайлуКонфигурации - Строка - Файл с шаблоном номера версии. Например: 1cv8_$version.cf +// +// Возвращаемое значение: +// Строка - Имя файла подходящего под шаблон версии. Например: 1cv8_1.2.3.4.cf +// +Функция НайтиФайлСВерсией(Знач ПутьКФайлуКонфигурации) Экспорт + + ШаблонВерсии = "$version"; + + Если СтрНайти(ПутьКФайлуКонфигурации, ШаблонВерсии) = 0 Тогда + Возврат ПутьКФайлуКонфигурации; + КонецЕсли; + + Файл = Новый Файл(ПутьКФайлуКонфигурации); + Путь = Файл.Путь; + + ПутьКФайлу = ""; + РегулярноеВыражение = Новый РегулярноеВыражение("(\d+\.\d+\.\d+\.\d+|\d+\.\d+\.\d+)"); + + Если ПустаяСтрока(Файл.Расширение) Тогда + МаскаПоиска = ПолучитьМаскуВсеФайлы(); + Иначе + МаскаПоиска = "*" + Файл.Расширение; + КонецЕсли; + + Лог.Отладка("Используем каталог поиска: %1", Путь); + Лог.Отладка("Используем маску поиска: %1", МаскаПоиска); + + НайденныеФайлы = НайтиФайлы(Путь, МаскаПоиска); + Для каждого НайденныйФайл Из НайденныеФайлы Цикл + + Лог.Отладка("Ищем номер версии в имени файла: %1", НайденныйФайл.Имя); + Совпадения = РегулярноеВыражение.НайтиСовпадения(НайденныйФайл.Имя); + Если Совпадения.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + ВерсияФайла = Совпадения[0].Группы[1].Значение; + Лог.Отладка("Нашли номер версии: %1", ВерсияФайла); + ИмяФайлаСВерсией = СтрЗаменить(Файл.Имя, ШаблонВерсии, ВерсияФайла); + Если ИмяФайлаСВерсией = НайденныйФайл.Имя Тогда + ПутьКФайлу = НайденныйФайл.ПолноеИмя; + Лог.Информация("Используем файл с версией " + ПутьКФайлу); + Прервать; + КонецЕсли; + + КонецЦикла; + + Если ПустаяСтрока(ПутьКФайлу) Тогда + ВызватьИсключение "Не найден файл с шаблоном версии " + ПутьКФайлуКонфигурации; + КонецЕсли; + + Возврат ПутьКФайлу; + +КонецФункции + // Подставляет номер версии в строку с шаблонной переменной $version // // Параметры: @@ -141,7 +200,7 @@ Функция ВерсияКонфигурацииПоХМЛ(Знач ХМЛСтрокаФайлаКонфигурации) - РегулярноеВыражение = Новый РегулярноеВыражение("(\d+.\d+.\d+.\d+|\d+.\d+.\d+)<\/Version>"); + РегулярноеВыражение = Новый РегулярноеВыражение("(\d+\.\d+\.\d+\.\d+|\d+\.\d+\.\d+)<\/Version>"); РегулярноеВыражение.ИгнорироватьРегистр = Истина; Совпадения = РегулярноеВыражение.НайтиСовпадения(ХМЛСтрокаФайлаКонфигурации); @@ -181,7 +240,7 @@ Функция НоваяРегуляркаДляВерсииМодуля() - РегулярноеВыражение = Новый РегулярноеВыражение("^\s*Версия\s*=\s*""(\d+.\d+.\d+.\d+|\d+.\d+.\d+)"";\s*$"); + РегулярноеВыражение = Новый РегулярноеВыражение("^\s*Версия\s*=\s*""(\d+\.\d+\.\d+\.\d+|\d+\.\d+\.\d+)"";\s*$"); РегулярноеВыражение.ИгнорироватьРегистр = Истина; Возврат РегулярноеВыражение; КонецФункции @@ -220,7 +279,7 @@ Процедура ИзменитьНомерВерсииХМЛ(ПутьФайлаКонфигурации, СтрокаXML, НомерВерсии) ШаблонПодстановки = СтрШаблон("%1", НомерВерсии); - РегулярноеВыражение = Новый РегулярноеВыражение("(\d+.\d+.\d+.\d+<\/Version>)|(\d+.\d+.\d+<\/Version>)"); + РегулярноеВыражение = Новый РегулярноеВыражение("(\d+\.\d+\.\d+\.\d+<\/Version>)|(\d+\.\d+\.\d+<\/Version>)"); РегулярноеВыражение.ИгнорироватьРегистр = Истина; НоваяСтрокаXML = РегулярноеВыражение.Заменить(СтрокаXML, ШаблонПодстановки); @@ -250,7 +309,7 @@ Функция ВерсияСоСборкой(Знач НомерВерсии, Знач НомерСборки) ШаблонПодстановки = СтрШаблон("$1.%1", НомерСборки); - РегулярноеВыражение = Новый РегулярноеВыражение("(\d+.\d+.\d+).(\d+)|(\d+.\d+).(\d+)"); + РегулярноеВыражение = Новый РегулярноеВыражение("(\d+\.\d+\.\d+)\.(\d+)|(\d+\.\d+)\.(\d+)"); Возврат РегулярноеВыражение.Заменить(НомерВерсии, ШаблонПодстановки); КонецФункции