Skip to content

Commit

Permalink
feat: Поддержка новой версии EDT CLI (#39)
Browse files Browse the repository at this point in the history
* feat: Поддержка новой версии EDT CLI

* фикс под 2023.3.5
  • Loading branch information
Daabramov authored Jun 19, 2024
1 parent 45bb133 commit ae3e298
Showing 1 changed file with 76 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
Перем База_СтрокаСоединения; // Строка - строка соединения служебной базы 1С
Перем КонвертироватьВФорматЕДТ; // Булево - конвертацировать в формат 1С:Enterprise development tools
Перем СнятьСПоддержки; // Булево - снять конфигурацию с поддержки
Перем ВерсияЕДТ; // Строка - верия среды 1С:Enterprise development tools для конвертации
Перем ВерсияЕДТ; // Строка - верcия среды 1С:Enterprise development tools для конвертации
Перем ОтносительныйПуть; // Строка - относительный путь к исходникам внутри репозитория
// для выполнения выгрузки

Expand Down Expand Up @@ -709,18 +709,32 @@
Процедура СконвертироватьВФорматЕДТ(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ = Неопределено)

Лог.Информация("[%1]: Начало конвертации в формат ЕДТ", ТипЗнч(ЭтотОбъект));

ИспользоватьНовуюВерсиюCLI = Ложь;
Если ЗначениеЗаполнено(ВерсияЕДТ) Тогда
ИспользоватьНовуюВерсиюCLI = Версии.СравнитьВерсии("2023.3.5", ВерсияЕДТ) <= 0;
КонецЕсли;

Если ИспользоватьНовуюВерсиюCLI Тогда
КонвертироватьВФорматЕДТ_НоваяВерсияCLI(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ);
Иначе
КонвертироватьВФорматЕДТ_СтараяВерсияCLI(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ);
КонецЕсли;

Лог.Информация("[%1]: Завершена конвертация в формат ЕДТ", ТипЗнч(ЭтотОбъект));

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

Процедура КонвертироватьВФорматЕДТ_СтараяВерсияCLI(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ)
ПараметрыЕНВ = Новый Соответствие();
ПараметрыЕНВ.Вставить("RING_OPTS", "-Xmx6g -Dfile.encoding=UTF-8 -Dosgi.nl=ru -Duser.language=ru");
МенеджерВР = Новый МенеджерВременныхФайлов();
ВоркСпейсЕДТ = МенеджерВР.СоздатьКаталог("edt-ws");

ПараметрыЕНВ = Новый Соответствие();
ПараметрыЕНВ.Вставить("RING_OPTS", "-Dfile.encoding=UTF-8 -Dosgi.nl=ru -Duser.language=ru");

КомандаЕДТ = "edt";
Если ЗначениеЗаполнено(ВерсияЕДТ) Тогда
КомандаЕДТ = СтрШаблон("%1@%2", КомандаЕДТ, ВерсияЕДТ);
КонецЕсли;

ПараметрыЗапускаЕДТ = Новый Массив();
ПараметрыЗапускаЕДТ.Добавить(КомандаЕДТ);
ПараметрыЗапускаЕДТ.Добавить("workspace import");
Expand All @@ -737,17 +751,71 @@
Команда.ДобавитьПараметры(ПараметрыЗапускаЕДТ);

КодВозврата = Команда.Исполнить();

МенеджерВР.Удалить();
Если КодВозврата <> 0 Тогда
ВызватьИсключение Команда.ПолучитьВывод();
КонецЕсли;

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

Процедура КонвертироватьВФорматЕДТ_НоваяВерсияCLI(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ)
МенеджерВР = Новый МенеджерВременныхФайлов();
ВоркСпейсЕДТ = МенеджерВР.СоздатьКаталог("edt-ws");

// Получаем путь к исполняемым файлам едт
КомандаЕДТ = "edt";
Если ЗначениеЗаполнено(ВерсияЕДТ) Тогда
КомандаЕДТ = СтрШаблон("%1@%2", КомандаЕДТ, ВерсияЕДТ);
КонецЕсли;
Команда = Новый Команда();
ПараметрыЗапускаЕДТ = Новый Массив();
ПараметрыЗапускаЕДТ.Добавить(КомандаЕДТ);
ПараметрыЗапускаЕДТ.Добавить("locations list");
Команда = Новый Команда();
Команда.УстановитьКоманду("ring");
Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8);
Команда.ДобавитьПараметры(ПараметрыЗапускаЕДТ);
КодВозврата = Команда.Исполнить();
Вывод = СокрЛП(Команда.ПолучитьВывод());

Если КодВозврата <> 0 Тогда
ВызватьИсключение Вывод;
КонецЕсли;

Если Не ЗначениеЗаполнено(Вывод) Тогда
ВызватьИсключение "Не удалось найти установленного дистрибутива EDT";
КонецЕсли;
Лог.Информация("[%1]: Найдена установленная версия ЕДТ: %2", ТипЗнч(ЭтотОбъект), Вывод);

// Выполняем конвертацию
ИмяФайлаСкрипта = ?(ПараметрыПриложения.ЭтоWindows(), "1cedtcli.exe", " 1cedtcli");
Команда = Новый Команда();
ИтоговыйПуть = ОбъединитьПути(Вывод, ИмяФайлаСкрипта);
Команда.УстановитьКоманду(ИтоговыйПуть);
Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8);

ПараметрыЗапускаЕДТ = Новый Массив();
ПараметрыЗапускаЕДТ.Добавить("-data");
ПараметрыЗапускаЕДТ.Добавить(ВоркСпейсЕДТ);
ПараметрыЗапускаЕДТ.Добавить("-vmargs");
ПараметрыЗапускаЕДТ.Добавить("-Xmx8g -Dfile.encoding=UTF-8 -Dosgi.nl=ru -Duser.language=ru");
ПараметрыЗапускаЕДТ.Добавить("-command");
ПараметрыЗапускаЕДТ.Добавить("import");
ПараметрыЗапускаЕДТ.Добавить("--configuration-files");
ПараметрыЗапускаЕДТ.Добавить(КаталогВФорматеКонфигуратора);
ПараметрыЗапускаЕДТ.Добавить("--project");
ПараметрыЗапускаЕДТ.Добавить(КаталогВФорматеЕДТ);
Команда.ДобавитьПараметры(ПараметрыЗапускаЕДТ);

КодВозврата = Команда.Исполнить();
МенеджерВР.Удалить();

Лог.Информация("[%1]: Завершена конвертация в формат ЕДТ", ТипЗнч(ЭтотОбъект));
Если КодВозврата <> 0 Тогда
ВызватьИсключение Команда.ПолучитьВывод();
КонецЕсли;

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


// Процедура - Проверяет существование указанной ветки в репозитарии GIT
//
// Параметры:
Expand Down

0 comments on commit ae3e298

Please sign in to comment.