Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
Перем Лог;
Перем КорневойПутьПроекта;

// Параметры команды
Перем ПутьКФайлуКонфигурации;

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

Expand All @@ -31,6 +34,9 @@
| указываем версию платформы, которую хотим использовать,
| и получаем по пути build\ib готовую базу для тестирования.");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--dt", "Путь к файлу с dt выгрузкой");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--cf", "Путь к cf-файлу конфигурации
| В пути файла можно указать шаблонную переменную $version для подстановки в нее версии конфигурации
| Пример: 1Cv8_$version.cf выгрузит файл вида 1Cv8_1.2.3.4.cf");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--dev",
"Признак dev режима, создаем и загружаем автоматом структуру конфигурации");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--storage", "Признак обновления из хранилища");
Expand Down Expand Up @@ -73,6 +79,8 @@
РежимыРеструктуризации.Вставить("Первый", ПараметрыКоманды["--v1"]);
РежимыРеструктуризации.Вставить("Второй", ПараметрыКоманды["--v2"]);

ПутьКФайлуКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--cf"]);

ИнициализироватьБазуДанных(РежимыРеструктуризации, ПараметрыКоманды["--src"], ПараметрыКоманды["--dt"],
ДанныеПодключения, ПараметрыКоманды["--uccode"],
ПараметрыКоманды["--v8version"], ПараметрыКоманды["--dev"],
Expand Down Expand Up @@ -199,6 +207,10 @@
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;

Если ЗначениеЗаполнено(ПутьКФайлуКонфигурации) Тогда
ЗагрузкаИзФайлаКонфигурации(МенеджерКонфигуратора);
КонецЕсли;

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

Если НЕ НеДобавлятьВСписокБаз Тогда
Expand Down Expand Up @@ -272,3 +284,19 @@
КонецЕсли;

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

Процедура ЗагрузкаИзФайлаКонфигурации(МенеджерКонфигуратора)

Лог.Информация("Запускаем загрузку конфигурации из cf-файла");
МенеджерВерсий = Новый МенеджерВерсийФайлов1С();
ПутьКФайлуСВерсией = МенеджерВерсий.НайтиФайлСВерсией(ПутьКФайлуКонфигурации);

Попытка
МенеджерКонфигуратора.ЗагрузитьФайлКонфигурации(ПутьКФайлуСВерсией, Ложь);
МенеджерКонфигуратора.ОбновитьКонфигурациюБазыДанных(Ложь);
Исключение
МенеджерКонфигуратора.Деструктор();
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;

КонецПроцедуры
51 changes: 51 additions & 0 deletions src/Классы/МенеджерВерсийФайлов1С.os
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,57 @@

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

// Поиск файла подходящего под шаблон номера версии.
//
// Параметры:
// ПутьКФайлуКонфигурации - Строка - Файл с шаблоном номера версии. Например: 1cv8_$version.cf
//
// Возвращаемое значение:
// Строка - Имя файла подходящего под шаблон версии. Например: 1cv8_1.2.3.4.cf
//
Функция НайтиФайлСВерсией(Знач ПутьКФайлуКонфигурации) Экспорт

ШаблонВерсии = "$version";

Если СтрНайти(ПутьКФайлуКонфигурации, ШаблонВерсии) = 0 Тогда
Возврат ПутьКФайлуКонфигурации;
КонецЕсли;

Файл = Новый Файл(ПутьКФайлуКонфигурации);
Путь = Файл.Путь;

ПутьКФайлу = "";
ШаблонПоиска = СтрЗаменить(Файл.Имя, ШаблонВерсии, "(\d+.\d+.\d+.\d+|\d+.\d+.\d+)");
РегулярноеВыражение = Новый РегулярноеВыражение(ШаблонПоиска);

Если ПустаяСтрока(Файл.Расширение) Тогда
МаскаПоиска = ПолучитьМаскуВсеФайлы();
Иначе
МаскаПоиска = "*" + Файл.Расширение;
КонецЕсли;

Лог.Отладка("Используем каталог поиска: %1", Путь);
Лог.Отладка("Используем маску поиска: %1", МаскаПоиска);

НайденныеФайлы = НайтиФайлы(Путь, МаскаПоиска);
Для каждого НайденныйФайл Из НайденныеФайлы Цикл

Если РегулярноеВыражение.Совпадает(НайденныйФайл.Имя) Тогда
ПутьКФайлу = НайденныйФайл.ПолноеИмя;
Лог.Информация("Используем файл с версией " + ПутьКФайлу);
Прервать;
КонецЕсли;

КонецЦикла;

Если ПустаяСтрока(ПутьКФайлу) Тогда
ВызватьИсключение "Не найден файл с шаблоном версии " + ПутьКФайлуКонфигурации;
КонецЕсли;

Возврат ПутьКФайлу;

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции
Expand Down