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\260\321\202\320\260\320\273\320\276\320\263\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\260\321\202\320\260\320\273\320\276\320\263\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 158c846..9a019f6 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\260\321\202\320\260\320\273\320\276\320\263\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\260\321\202\320\260\320\273\320\276\320\263\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" @@ -21,7 +21,8 @@ Перем ИмяАвтора; // Строка - имя автора коммита в git Перем ПочтаАвтора; // Строка - почта автора коммита в git Перем КонвертироватьВФорматЕДТ; // Булево - конвертацировать в формат ЕДТ -Перем ВерсияЕДТ; // Строка - верия среды 1С:Enterprise development tools для конвертации +Перем ВерсияЕДТ; // Строка - версия среды 1С:Enterprise development tools для конвертации +Перем ПутьКЕДТ; // Строка - каталог к установленной ЕДТ, актуально для релизов равной или выше 2024.1. При явном указании значение параметра версии ЕДТ будет проигнорировано Перем СнятьСПоддержки; // Булево - снять конфигурацию с поддержки Перем ОтносительныйПуть; // Строка - относительный путь к исходникам внутри репозитория Перем База_СтрокаСоединения; // Строка - строка соединения служебной базы 1С @@ -132,6 +133,13 @@ "", "версия среды 1С:Enterprise development tools"); + ДобавитьОписаниеПараметра(Параметры, + "ПутьКЕДТ", + "Строка", + Ложь, + "", + "каталог к установленной ЕДТ, актуально для релизов равной или выше 2024.1. При явном указании значение параметра версии ЕДТ будет проигнорировано"); + ДобавитьОписаниеПараметра(Параметры, "СнятьСПоддержки", "Булево", @@ -231,6 +239,7 @@ УстановитьПараметрОбработкиДанныхИзСтруктуры("База_СтрокаСоединения" , ПараметрыОбработки); УстановитьПараметрОбработкиДанныхИзСтруктуры("КонвертироватьВФорматЕДТ" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("ВерсияЕДТ" , ПараметрыОбработки, Неопределено); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ПутьКЕДТ" , ПараметрыОбработки, ""); УстановитьПараметрОбработкиДанныхИзСтруктуры("СнятьСПоддержки" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("ОтносительныйПуть" , ПараметрыОбработки); @@ -407,6 +416,7 @@ Выгрузка.УстановитьПараметрОбработкиДанных("База_СтрокаСоединения" , База_СтрокаСоединения); Выгрузка.УстановитьПараметрОбработкиДанных("КонвертироватьВФорматЕДТ", КонвертироватьВФорматЕДТ); Выгрузка.УстановитьПараметрОбработкиДанных("ВерсияЕДТ" , ВерсияЕДТ); + Выгрузка.УстановитьПараметрОбработкиДанных("ПутьКЕДТ" , ПутьКЕДТ); Выгрузка.УстановитьПараметрОбработкиДанных("СнятьСПоддержки" , СнятьСПоддержки); Выгрузка.УстановитьПараметрОбработкиДанных("ОтносительныйПуть" , ОтносительныйПуть); Выгрузка.ОбработатьДанные(); @@ -497,7 +507,11 @@ Команда.Опция("edt convert-to-edt", Ложь, "конвертировать в едт") .Флаг(); - Команда.Опция("ev edt-version", "", "верия среды 1С:Enterprise development tools для конвертации") + Команда.Опция("edtp edt-path", "", "путь к установленной EDT, при указании параметр версии EDT игнорируется") + .ТСтрока() + .ВОкружении("YARD_EDT_PATH"); + + Команда.Опция("ev edt-version", "", "верcия среды 1С:Enterprise development tools для конвертации") .ТСтрока() .ВОкружении("YARD_EDT_VERSION"); 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 77a156e..309b8f2 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" @@ -31,6 +31,7 @@ Перем КонвертироватьВФорматЕДТ; // Булево - конвертацировать в формат 1С:Enterprise development tools Перем СнятьСПоддержки; // Булево - снять конфигурацию с поддержки Перем ВерсияЕДТ; // Строка - верcия среды 1С:Enterprise development tools для конвертации +Перем ПутьКЕДТ; // Строка - каталог к установленной ЕДТ, актуально для релизов равной или выше 2024.1. При явном указании значение параметра версии ЕДТ будет проигнорировано Перем ОтносительныйПуть; // Строка - относительный путь к исходникам внутри репозитория // для выполнения выгрузки @@ -152,6 +153,13 @@ "", "версия среды 1С:Enterprise development tools"); + ДобавитьОписаниеПараметра(Параметры, + "ПутьКЕДТ", + "Строка", + Ложь, + "", + "каталог к установленной ЕДТ, актуально для релизов равной или выше 2024.1. При явном указании значение параметра версии ЕДТ будет проигнорировано"); + ДобавитьОписаниеПараметра(Параметры, "СнятьСПоддержки", "Булево", @@ -245,6 +253,7 @@ УстановитьПараметрОбработкиДанныхИзСтруктуры("База_СтрокаСоединения" , ПараметрыОбработки); УстановитьПараметрОбработкиДанныхИзСтруктуры("КонвертироватьВФорматЕДТ" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("ВерсияЕДТ" , ПараметрыОбработки, Неопределено); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ПутьКЕДТ" , ПараметрыОбработки, ""); УстановитьПараметрОбработкиДанныхИзСтруктуры("СнятьСПоддержки" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("ОтносительныйПуть" , ПараметрыОбработки); @@ -349,6 +358,10 @@ КаталогВыгрузки = ОбъединитьПути(РепозитарийГит, ОтносительныйПуть); КонецЕсли; + Если КонвертироватьВФорматЕДТ И Не ЗначениеЗаполнено(ВерсияЕДТ) Тогда + ВызватьИсключение "Требуется указать версию ЕДТ для конвертации в параметрах запуска"; + КонецЕсли; + ВремФайл = Новый Файл(КаталогВыгрузки); НастройкиПроектаEDTСохранены = Ложь; Если ВремФайл.Существует() Тогда @@ -542,9 +555,13 @@ Команда.Опция("edt convert-to-edt", Ложь, "конвертацировать в формат 1С:Enterprise development tools") .Флаг(); - Команда.Опция("ev edt-version", "", "верия среды 1С:Enterprise development tools для конвертации") + Команда.Опция("ev edt-version", "", "верия среды 1С:Enterprise development tools для конвертации, при указании параметра пути к EDT значение игнорируется") .ТСтрока() .ВОкружении("YARD_EDT_VERSION"); + + Команда.Опция("edtp edt-path", "", "путь к установленной EDT") + .ТСтрока() + .ВОкружении("YARD_EDT_PATH"); Команда.Опция("rs remove-support", Ложь, "снять конфигруцию с поддержки") .Флаг(); @@ -578,6 +595,7 @@ УстановитьПараметрОбработкиДанных("КонвертироватьВФорматЕДТ", Команда.ЗначениеОпции("convert-to-edt")); УстановитьПараметрОбработкиДанных("СнятьСПоддержки" , Команда.ЗначениеОпции("remove-support")); УстановитьПараметрОбработкиДанных("ВерсияЕДТ" , Команда.ЗначениеОпции("edt-version")); + УстановитьПараметрОбработкиДанных("ПутьКЕДТ" , Команда.ЗначениеОпции("edt-path")); УстановитьПараметрОбработкиДанных("ОтносительныйПуть" , Команда.ЗначениеОпции("src-relative-path")); ОбработатьДанные(); @@ -706,7 +724,7 @@ // в формате 1С:Enterprise development tools // ВерсияЕДТ - Строка - верия среды 1С:Enterprise development tools для конвертации // -Процедура СконвертироватьВФорматЕДТ(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ = Неопределено) +Процедура СконвертироватьВФорматЕДТ(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ = Неопределено, ПутьКЕДТ = Неопределено) Лог.Информация("[%1]: Начало конвертации в формат ЕДТ", ТипЗнч(ЭтотОбъект)); @@ -716,7 +734,7 @@ КонецЕсли; Если ИспользоватьНовуюВерсиюCLI Тогда - КонвертироватьВФорматЕДТ_НоваяВерсияCLI(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ); + КонвертироватьВФорматЕДТ_НоваяВерсияCLI(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ); Иначе КонвертироватьВФорматЕДТ_СтараяВерсияCLI(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ); КонецЕсли; @@ -758,45 +776,28 @@ КонецПроцедуры -Процедура КонвертироватьВФорматЕДТ_НоваяВерсияCLI(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ, ВерсияЕДТ) +Процедура КонвертироватьВФорматЕДТ_НоваяВерсияCLI(КаталогВФорматеКонфигуратора, КаталогВФорматеЕДТ) МенеджерВР = Новый МенеджерВременныхФайлов(); ВоркСпейсЕДТ = МенеджерВР.СоздатьКаталог("edt-ws"); // Получаем путь к исполняемым файлам едт - КомандаЕДТ = "edt"; - Если ЗначениеЗаполнено(ВерсияЕДТ) Тогда - КомандаЕДТ = СтрШаблон("%1@%2", КомандаЕДТ, ВерсияЕДТ); - КонецЕсли; - Команда = Новый Команда(); - ПараметрыЗапускаЕДТ = Новый Массив(); - ПараметрыЗапускаЕДТ.Добавить(КомандаЕДТ); - ПараметрыЗапускаЕДТ.Добавить("locations list"); - Команда = Новый Команда(); - Команда.УстановитьКоманду("ring"); - Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8); - Команда.ДобавитьПараметры(ПараметрыЗапускаЕДТ); - КодВозврата = Команда.Исполнить(); - Вывод = СокрЛП(Команда.ПолучитьВывод()); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение Вывод; - КонецЕсли; - - Если Не ЗначениеЗаполнено(Вывод) Тогда - ВызватьИсключение "Не удалось найти установленного дистрибутива EDT"; - КонецЕсли; - Лог.Информация("[%1]: Найдена установленная версия ЕДТ: %2", ТипЗнч(ЭтотОбъект), Вывод); + КаталогУстановкиЕДТ = ?( + ЗначениеЗаполнено(ПутьКЕДТ), + ПутьКЕДТ, + НайтиКаталогУстановкиЕДТ() + ); // Выполняем конвертацию ИмяФайлаСкрипта = ?(ПараметрыПриложения.ЭтоWindows(), "1cedtcli.exe", " 1cedtcli"); Команда = Новый Команда(); - ИтоговыйПуть = ОбъединитьПути(Вывод, ИмяФайлаСкрипта); + ИтоговыйПуть = ОбъединитьПути(КаталогУстановкиЕДТ, ИмяФайлаСкрипта); Команда.УстановитьКоманду(ИтоговыйПуть); Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8); ПараметрыЗапускаЕДТ = Новый Массив(); ПараметрыЗапускаЕДТ.Добавить("-data"); ПараметрыЗапускаЕДТ.Добавить(ВоркСпейсЕДТ); + ПараметрыЗапускаЕДТ.Добавить("-timeout 3600"); ПараметрыЗапускаЕДТ.Добавить("-vmargs"); ПараметрыЗапускаЕДТ.Добавить("-Xmx8g -Dfile.encoding=UTF-8 -Dosgi.nl=ru -Duser.language=ru"); ПараметрыЗапускаЕДТ.Добавить("-command"); @@ -815,6 +816,40 @@ КонецПроцедуры +Функция НайтиКаталогУстановкиЕДТ() + КаталогиПоУмолчанию = КаталогиУстановкиЕДТПоУмолчанию(); + Для каждого Каталог Из КаталогиПоУмолчанию Цикл + НайденныеКаталоги = НайтиФайлы(Каталог, СтрШаблон("*%1*", ВерсияЕДТ)); + Если ЗначениеЗаполнено(НайденныеКаталоги) Тогда + МаскаФайлаЗапуска = ?(ПараметрыПриложения.ЭтоWindows(), "**edtcli.exe", "**edtcli"); + ФайлыЗапуска = НайтиФайлы(НайденныеКаталоги[0].ПолноеИмя, МаскаФайлаЗапуска, Истина); + Если ЗначениеЗаполнено(ФайлыЗапуска) Тогда + Лог.Информация("[%1]: Найдена установленная версия ЕДТ: %2", ТипЗнч(ЭтотОбъект), ФайлыЗапуска[0].Путь); + Возврат ФайлыЗапуска[0].Путь; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + ВызватьИсключение "Не найден каталог установки EDT, укажите путь явно через параметры запуска"; +КонецФункции + +Функция КаталогиУстановкиЕДТПоУмолчанию() + + СистемнаяИнформация = Новый СистемнаяИнформация(); + Массив = Новый Массив(); + Если ПараметрыПриложения.ЭтоWindows() Тогда + + Массив.Добавить(ОбъединитьПути(СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений), "1C\1cedtstart\installations")); + Массив.Добавить("C:\Program Files\1C\1CE\components"); + Иначе + Массив.Добавить("~/.local/share/1C/1cedtstart/installations"); + Массив.Добавить("/opt/1C/1CE/components"); + КонецЕсли; + + Возврат Массив; + +КонецФункции + // Процедура - Проверяет существование указанной ветки в репозитарии GIT // @@ -859,6 +894,16 @@ КонецЕсли; КопироватьФайл(ФайлПроекта, ОбъединитьПути(КаталогСНастройками, ".project")); + + // В формате едт в каждом из метаданных могут находится файлы для подавления проверок валидации, их надо сохранить + ФайлыПодавленияПроверок = НайтиФайлы(КаталогВыгрузки, "*.suppress", Истина); + Для каждого ФайлПодавления Из ФайлыПодавленияПроверок Цикл + ОтносительныйПутьФайла = ФС.ОтносительныйПуть(КаталогВыгрузки, ФайлПодавления.Путь); + КаталогКСохранению = ОбъединитьПути(КаталогСНастройками, ОтносительныйПутьФайла); + ФС.ОбеспечитьКаталог(КаталогКСохранению); + НовыйПутьФайла = ОбъединитьПути(КаталогКСохранению, ФайлПодавления.Имя); + КопироватьФайл(ФайлПодавления.ПолноеИмя, НовыйПутьФайла); + КонецЦикла; Возврат Истина; @@ -872,23 +917,7 @@ // Процедура ВосстановитьСлужебныеДанныеЕДТ(КаталогВыгрузки, КаталогСНастройками = "") - КаталогНастроекПроекта = ОбъединитьПути(КаталогВыгрузки, ".settings"); - - ВремФайл = Новый Файл(КаталогНастроекПроекта); - Если ВремФайл.Существует() Тогда - УдалитьФайлы(КаталогНастроекПроекта, "*"); - КонецЕсли; - - ФС.КопироватьСодержимоеКаталога(ОбъединитьПути(КаталогСНастройками, ".settings"), КаталогНастроекПроекта); - - ФайлПроекта = ОбъединитьПути(КаталогВыгрузки, ".project"); - - ВремФайл = Новый Файл(ФайлПроекта); - Если ВремФайл.Существует() Тогда - УдалитьФайлы(ФайлПроекта); - КонецЕсли; - - КопироватьФайл(ОбъединитьПути(КаталогСНастройками, ".project"), ФайлПроекта); + ФС.КопироватьСодержимоеКаталога(КаталогСНастройками, КаталогВыгрузки); КонецПроцедуры // ВосстановитьСлужебныеДанныеЕДТ()