diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" index 3bc5cd0..55b6150 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" @@ -30,7 +30,7 @@ Перем База_СтрокаСоединения; // Строка - строка соединения служебной базы 1С Перем КонвертироватьВФорматЕДТ; // Булево - конвертацировать в формат 1С:Enterprise development tools Перем СнятьСПоддержки; // Булево - снять конфигурацию с поддержки -Перем ВерсияЕДТ; // Строка - верия среды 1С:Enterprise development tools для конвертации +Перем ВерсияЕДТ; // Строка - верcия среды 1С:Enterprise development tools для конвертации Перем ОтносительныйПуть; // Строка - относительный путь к исходникам внутри репозитория // для выполнения выгрузки @@ -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"); @@ -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 // // Параметры: