Skip to content

Commit 9ae973a

Browse files
committed
feat: Использование ibcmd для выгрузки конфигурации в файлы.
1 parent 82a13fb commit 9ae973a

File tree

4 files changed

+99
-39
lines changed

4 files changed

+99
-39
lines changed

packagedef

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
.ЗависитОт("cli")
77
.ЗависитОт("semver")
88
.ЗависитОт("v8runner")
9+
.ЗависитОт("ibcmdrunner")
910
.ЗависитОт("gitrunner")
1011
.ЗависитОт("tempfiles")
1112
.ЗависитОт("fs")

src/Классы/ВыгрузкаКонфигурацииВГит.os

Lines changed: 92 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// ----------------------------------------------------------
99

1010
#Использовать v8runner
11+
#Использовать ibcmdrunner
1112
#Использовать gitrunner
1213
#Использовать tempfiles
1314
#Использовать fs
@@ -21,6 +22,7 @@
2122

2223
Перем ВерсияПлатформы; // Строка - маска версии платформы 1С (8.3, 8.3.6 и т.п.)
2324
Перем ПутьККонфигурации; // Строка - путь к файлу конфигурации (CF) для выгрузки
25+
Перем ИнструментВыгрузки // Строка - инструмент выгрузки конфигурации в файлы (Конфигуратор или УтилитаIBCMD)
2426
Перем РепозитарийГит; // Строка - путь к репозитарию git
2527
Перем ИмяВеткиГит; // Строка - имя ветки git в которую будет выполняться выгрузка
2628
Перем ИмяАвтора; // Строка - имя автора коммита в git
@@ -91,6 +93,13 @@
9193
"",
9294
"путь к файлу конфигурации (CF) для выгрузки");
9395

96+
ДобавитьОписаниеПараметра(Параметры,
97+
"ИнструментВыгрузки",
98+
"Строка",
99+
Ложь,
100+
Перечисления.ИнструментыВыгрузкиКонфигурацииВФайлы.Конфигуратор,
101+
"инструмент выгрузки конфигурации в файлы (designer или icmd)");
102+
94103
ДобавитьОписаниеПараметра(Параметры,
95104
"РепозитарийГит",
96105
"Строка",
@@ -251,6 +260,7 @@
251260

252261
УстановитьПараметрОбработкиДанныхИзСтруктуры("ВерсияПлатформы" , ПараметрыОбработки, "8.3");
253262
УстановитьПараметрОбработкиДанныхИзСтруктуры("ПутьККонфигурации" , ПараметрыОбработки);
263+
УстановитьПараметрОбработкиДанныхИзСтруктуры("ИнструментВыгрузки" , ПараметрыОбработки, Перечисления.ИнструментыВыгрузкиКонфигурацииВФайлы.Конфигуратор);
254264
УстановитьПараметрОбработкиДанныхИзСтруктуры("РепозитарийГит" , ПараметрыОбработки);
255265
УстановитьПараметрОбработкиДанныхИзСтруктуры("ИмяВеткиГит" , ПараметрыОбработки, "base1c");
256266
УстановитьПараметрОбработкиДанныхИзСтруктуры("ИмяАвтора" , ПараметрыОбработки, "1c");
@@ -379,11 +389,7 @@
379389
НастройкиПроектаEDTСохранены = СохранитьСлужебныеДанныеЕДТ(КаталогВыгрузки, ВременныйКаталогСНастройками);
380390
КонецЕсли;
381391

382-
ФайлОписания = Новый Файл(ОбъединитьПути(РепозитарийГит, "description.json"));
383-
ОписаниеВерсии = Новый Структура("Имя, Версия, Дата");
384-
Если ФайлОписания.Существует() Тогда
385-
ОписаниеВерсии = Служебный.ОписаниеРелиза(ФайлОписания.ПолноеИмя);
386-
КонецЕсли;
392+
ОписаниеВерсии = ОписаниеВерсииВКаталоге(РепозитарийГит);
387393

388394
Если НЕ НовыйРепозитарий Тогда
389395
Лог.Информация("[%1]: Начало удаления файлов версии %2 (%3) конфигурации ""%4"" из репозитария ""%5""",
@@ -398,43 +404,15 @@
398404

399405
Распаковщик.ОбеспечитьКаталог(КаталогВыгрузки);
400406

401-
ФайлКонфигурации = Новый Файл(ПутьККонфигурации);
402-
ФайлОписания = Новый Файл(ОбъединитьПути(ФайлКонфигурации.Путь, "description.json"));
403-
ОписаниеВерсии = Новый Структура("Имя, Версия, Дата");
404-
Если ФайлОписания.Существует() Тогда
405-
ОписаниеВерсии = Служебный.ОписаниеРелиза(ФайлОписания.ПолноеИмя);
406-
КонецЕсли;
407-
408-
Лог.Информация("[%1]: Начало загрузки версии %2 (%3) конфигурации ""%4"" из файла ""%5""",
409-
ТипЗнч(ЭтотОбъект),
410-
ОписаниеВерсии.Версия,
411-
Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"),
412-
ОписаниеВерсии.Имя,
413-
ПутьККонфигурации);
414-
415-
Конфигуратор = Новый УправлениеКонфигуратором();
416-
Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы);
417-
Конфигуратор.УстановитьКонтекст(База_СтрокаСоединения, "", "");
418-
419-
Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ПутьККонфигурации);
420-
421407
МенеджерВР = Новый МенеджерВременныхФайлов();
422408

423409
КаталогВыгрузкиИсходников = ?(КонвертироватьВФорматЕДТ, МенеджерВР.СоздатьКаталог("config-src"), КаталогВыгрузки);
424410

425-
Лог.Информация("[%1]: Начало выгрузки в файлы версии %2 (%3) конфигурации ""%4"" %5 ""%6""",
426-
ТипЗнч(ЭтотОбъект),
427-
ОписаниеВерсии.Версия,
428-
Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"),
429-
ОписаниеВерсии.Имя,
430-
?(КонвертироватьВФорматЕДТ, "во временный каталог", "в репозитарий"),
431-
КаталогВыгрузкиИсходников);
432-
433-
Конфигуратор.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузкиИсходников,
434-
, // ФорматВыгрузки = ""
435-
, // ТолькоИзмененные = Ложь
436-
, // ПутьКФайлуВерсийДляСравнения = ""
437-
ПутьКСпискуОбъектов); // ПутьКСпискуОбъектовВыгрузки = ""
411+
Если ИнструментВыгрузки = Перечисления.ИнструментыВыгрузкиКонфигурацииВФайлы.УтилитаIBCMD Тогда
412+
ВыгрузитьКонфигурациюВФайлыIBCMD(КаталогВыгрузкиИсходников);
413+
Иначе
414+
ВыгрузитьКонфигурациюВФайлыКонфигуратор(КаталогВыгрузкиИсходников);
415+
КонецЕсли;
438416

439417
Если ФайлОписания.Существует() Тогда
440418
НовыйФайлОписания = ОбъединитьПути(РепозитарийГит, "description.json");
@@ -490,6 +468,81 @@
490468

491469
КонецПроцедуры // ОбработатьДанные()
492470

471+
Функция ОписаниеВерсииВКаталоге(Знач ПутьККаталогу)
472+
473+
ФайлОписания = Новый Файл(ОбъединитьПути(ПутьККаталогу, "description.json"));
474+
ОписаниеВерсии = Новый Структура("Имя, Версия, Дата");
475+
Если ФайлОписания.Существует() Тогда
476+
ОписаниеВерсии = Служебный.ОписаниеРелиза(ФайлОписания.ПолноеИмя);
477+
КонецЕсли;
478+
479+
Возврат ОписаниеВерсии;
480+
481+
КонецФункции // ОписаниеВерсииВКаталоге()
482+
483+
Процедура ВыгрузитьКонфигурациюВФайлыIBCMD(Знач КаталогВыгрузки)
484+
485+
ФайлКонфигурации = Новый Файл(ПутьККонфигурации);
486+
ОписаниеВерсии = ОписаниеВерсииВКаталоге(ФайлКонфигурации.Путь);
487+
488+
Лог.Информация("[%1]: Начало загрузки версии %2 (%3) конфигурации ""%4"" из файла ""%5""",
489+
ТипЗнч(ЭтотОбъект),
490+
ОписаниеВерсии.Версия,
491+
Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"),
492+
ОписаниеВерсии.Имя,
493+
ПутьККонфигурации);
494+
495+
ПутьКБазе = База_СтрокаСоединения;
496+
Если Лев(ВРег(ПутьКБазе), 2) = "/F" Тогда
497+
ПутьКБазе = Сред(ПутьКБазе, 3);
498+
КонецЕсли;
499+
500+
УтилитаIBCMD = Новый УправлениеИБ(ВерсияПлатформы);
501+
УтилитаIBCMD.УстановитьПараметрыФайловойИБ(ПутьКБазе);
502+
УтилитаIBCMD.ЗагрузитьКонфигурацию(ПутьККонфигурации);
503+
504+
Лог.Информация("[%1]: Начало выгрузки в файлы версии %2 (%3) конфигурации ""%4"" %5 ""%6""",
505+
ТипЗнч(ЭтотОбъект),
506+
ОписаниеВерсии.Версия,
507+
Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"),
508+
ОписаниеВерсии.Имя,
509+
?(КонвертироватьВФорматЕДТ, "во временный каталог", "в репозитарий"),
510+
КаталогВыгрузкиИсходников);
511+
512+
УтилитаIBCMD.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузкиИсходников);
513+
514+
КонецПроцедуры // ВыгрузитьКонфигурациюВФайлыIBCMD()
515+
516+
Процедура ВыгрузитьКонфигурациюВФайлыКонфигуратор(Знач КаталогВыгрузки)
517+
518+
ФайлКонфигурации = Новый Файл(ПутьККонфигурации);
519+
ОписаниеВерсии = ОписаниеВерсииВКаталоге(ФайлКонфигурации.Путь);
520+
521+
Лог.Информация("[%1]: Начало загрузки версии %2 (%3) конфигурации ""%4"" из файла ""%5""",
522+
ТипЗнч(ЭтотОбъект),
523+
ОписаниеВерсии.Версия,
524+
Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"),
525+
ОписаниеВерсии.Имя,
526+
ПутьККонфигурации);
527+
528+
Конфигуратор = Новый УправлениеКонфигуратором();
529+
Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы);
530+
Конфигуратор.УстановитьКонтекст(База_СтрокаСоединения, "", "");
531+
532+
Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ПутьККонфигурации);
533+
534+
Лог.Информация("[%1]: Начало выгрузки в файлы версии %2 (%3) конфигурации ""%4"" %5 ""%6""",
535+
ТипЗнч(ЭтотОбъект),
536+
ОписаниеВерсии.Версия,
537+
Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"),
538+
ОписаниеВерсии.Имя,
539+
?(КонвертироватьВФорматЕДТ, "во временный каталог", "в репозитарий"),
540+
КаталогВыгрузкиИсходников);
541+
542+
Конфигуратор.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузкиИсходников);
543+
544+
КонецПроцедуры // ВыгрузитьКонфигурациюВФайлыКонфигуратор()
545+
493546
Функция РезультатОбработки() Экспорт
494547

495548
Возврат НакопленныеДанные;
@@ -606,6 +659,7 @@
606659

607660
УстановитьПараметрОбработкиДанных("ВерсияПлатформы" , Команда.ЗначениеОпции("v8version"));
608661
УстановитьПараметрОбработкиДанных("ПутьККонфигурации" , Команда.ЗначениеОпции("cf-path"));
662+
УстановитьПараметрОбработкиДанных("ИнструментВыгрузки" , Команда.ЗначениеОпции("export-tool"));
609663
УстановитьПараметрОбработкиДанных("РепозитарийГит" , Команда.ЗначениеОпции("git-path"));
610664
УстановитьПараметрОбработкиДанных("ИмяВеткиГит" , Команда.ЗначениеОпции("git-branch"));
611665
УстановитьПараметрОбработкиДанных("ИмяАвтора" , Команда.ЗначениеОпции("git-author"));

src/Макеты/Перечисления.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,9 @@
33
"ВсеКаталоги" : "full-path",
44
"БезОбщихКаталогов" : "no-common-path",
55
"БезКаталогов" : "no-path"
6+
},
7+
"ИнструментыВыгрузкиКонфигурацииВФайлы":{
8+
"Конфигуратор" : "designer",
9+
"УтилитаIBCMD" : "ibcmd"
610
}
711
}

src/Модули/Перечисления.os

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99

1010
#Использовать "../Макеты"
1111

12-
Перем ВариантыРаспаковкиКаталогов Экспорт; // Структура - перечисление вариантов распаковки каталога
12+
Перем ВариантыРаспаковкиКаталогов Экспорт; // Структура - перечисление вариантов распаковки каталога
13+
Перем ИнструментыВыгрузкиКонфигурацииВФайлы Экспорт; // Структура - перечисление возможных инструментов выгрузки конфигурации в файлы
1314

1415
// Функция - возвращает значение перечисления по полному текстовому представлению
1516
// вида: <имя перечисления>.<значение перечисления>

0 commit comments

Comments
 (0)