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

feat: Поддержка новой версии EDT CLI #39

Merged
merged 2 commits into from
Jun 19, 2024
Merged
Changes from all 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 @@ -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
Loading