Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавлен режим формирования файлов поставки из исходников. #563

Merged
merged 4 commits into from
Apr 27, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@
#Использовать v8runner

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

// Параметры команды
Перем ИмяФайлаПоставки;
Перем КаталогИсходников;
Перем НомерСборки;
Перем ЗагружатьВТекущую;

///////////////////////////////////////////////////////////////////////////////////////////////////
// Прикладной интерфейс
Expand All @@ -26,7 +34,14 @@
ТекстОписания);

Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "cfpath",
"Путь к результату - выгружаемому файлу поставки конфигурации (*.cf)");
"Путь к результату - выгружаемому файлу поставки конфигурации (*.cf)
|В пути файла можно указать шаблонную переменную $version для подстановки в нее версии конфигурации
|Пример: 1Cv8_$version.cf выгрузит файл вида 1Cv8_1.2.3.4.cf");

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--src", "Каталог с исходниками конфигурации");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--build-number", "Номер сборки");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--current", "Флаг загрузки в указанную базу или -с");
artbear marked this conversation as resolved.
Show resolved Hide resolved
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-c", "Флаг загрузки в указанную базу, краткая форма от --current");

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

Expand All @@ -44,13 +59,22 @@

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

ИмяФайлаПоставки = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["cfpath"]);
КаталогИсходников = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--src"]);
НомерСборки = ПараметрыКоманды["--build-number"];
ЗагружатьВТекущую = ОбщиеМетоды.ПолучитьПараметры(ПараметрыКоманды, "-c", "--current");

МенеджерКонфигуратора = Новый МенеджерКонфигуратора;
МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды);
МенеджерВерсий = Новый МенеджерВерсийФайлов1С;

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

Попытка
МенеджерКонфигуратора.СоздатьФайлПоставки(
ПараметрыКоманды["cfpath"]
);
СоздатьФайлПоставки();
Исключение
МенеджерКонфигуратора.Деструктор();
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Expand All @@ -59,4 +83,39 @@
МенеджерКонфигуратора.Деструктор();

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

КонецФункции // ВыполнитьКоманду

Процедура СоздатьФайлПоставки()

Если ЗначениеЗаполнено(КаталогИсходников) Тогда
СобратьИзИсходниковТекущуюКонфигурацию();
КонецЕсли;

ИмяФайлаПоставкиСВерсией = МенеджерВерсий.ПодставитьНомерВерсии(КаталогИсходников, ИмяФайлаПоставки);
МенеджерКонфигуратора.СоздатьФайлПоставки(ИмяФайлаПоставкиСВерсией);

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

Процедура СобратьИзИсходниковТекущуюКонфигурацию()

Если ЗначениеЗаполнено(НомерСборки) Тогда
ИзменитьНомерСборкиВИсходникахКонфигурации();
КонецЕсли;

МенеджерКонфигуратора.СобратьИзИсходниковТекущуюКонфигурацию(КаталогИсходников, "", Ложь, Ложь);
МенеджерКонфигуратора.ОбновитьКонфигурациюБазыДанных(Ложь);

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

Процедура ИзменитьНомерСборкиВИсходникахКонфигурации()

Лог.Информация("Изменяю номер сборки в исходниках конфигурации 1С на %1", НомерСборки);

СтарыеВерсии = МенеджерВерсий.УстановитьНомерСборкиДляКонфигурации(КаталогИсходников, НомерСборки);

Для каждого КлючЗначение Из СтарыеВерсии Цикл
Лог.Информация(" Старая версия %1, файл - %2", КлючЗначение.Значение, КлючЗначение.Ключ);
КонецЦикла;

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

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

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

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

Если СтрНайти(СтрокаДляПодстановки, ШаблонВерсии) = 0 Тогда
Возврат СтрокаДляПодстановки;
Иначе
ВерсияКонфигурации = ВерсияФайлаКонфигурации(ПутьИсходников);
Лог.Информация("Используем для подстановки в %1 версию %2", СтрокаДляПодстановки, ВерсияКонфигурации);
Возврат СтрЗаменить(СтрокаДляПодстановки, ШаблонВерсии, ВерсияКонфигурации);
КонецЕсли;

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

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

#Область СлужебныеПроцедурыИФункции
Expand Down Expand Up @@ -132,6 +155,19 @@

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

Функция ВерсияФайлаКонфигурации(Знач ПутьПроектаКонфигурации)
artbear marked this conversation as resolved.
Show resolved Hide resolved

ФайлыКонфигураций = ФайлыКонфигураций(ПутьПроектаКонфигурации, Ложь);
Если ФайлыКонфигураций.Количество() = 0 Тогда
ВызватьИсключение "Не найден файл конфигурации в каталоге " + ПутьПроектаКонфигурации;
КонецЕсли;

ФайлКонфигурации = ФайлыКонфигураций[0];
СтрокаXML = ПрочитатьФайл(ФайлКонфигурации.ПолноеИмя);
Возврат ВерсияКонфигурацииПоХМЛ(СтрокаXML);

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

Функция ВерсияМодуля(Знач ТекстФайла)

Совпадения = НоваяРегуляркаДляВерсииМодуля().НайтиСовпадения(ТекстФайла);
Expand Down