diff --git a/v8files-extractor.os b/v8files-extractor.os index e0fddd9..d5bec6e 100644 --- a/v8files-extractor.os +++ b/v8files-extractor.os @@ -807,7 +807,11 @@ Если Рекурсивно Тогда СобратьКаталог(ПутьКИсходникам, КаталогВыгрузки); Иначе - СобратьФайл(ПутьКИсходникам, КаталогВыгрузки); + Если ЭтоПутьКИсходнымКодамРасширения(ПапкаИсходников) Тогда + СобратьРасширение(ПутьКИсходникам, КаталогВыгрузки); + Иначе + СобратьФайл(ПутьКИсходникам, КаталогВыгрузки); + КонецЕсли; КонецЕсли; КонецПроцедуры @@ -826,7 +830,9 @@ Продолжить; КонецЕсли; - Если ЭтоПутьКИсходнымКодамОбработок(Файл) Тогда + Если ЭтоПутьКИсходнымКодамРасширения(Файл) Тогда + СобратьРасширение(Файл.ПолноеИмя, КаталогВыгрузки); + ИначеЕсли ЭтоПутьКИсходнымКодамОбработок(Файл) Тогда СобратьФайл(Файл.ПолноеИмя, КаталогВыгрузки); Иначе НовыйПутьВыгрузки = ОбъединитьПути(КаталогВыгрузки, Файл.Имя); @@ -892,6 +898,51 @@ КонецФункции +Функция СобратьРасширение(Знач ПутьКИсходникам, Знач КаталогВыгрузки) + + ПапкаИсходников = Новый Файл(ПутьКИсходникам); + ИмяПапки = ПапкаИсходников.Имя; + + Лог.Информация("Собираю исходники <%1>", ПутьКИсходникам); + + Конфигуратор = Новый УправлениеКонфигуратором(); + Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда + Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы); + КонецЕсли; + Если КонтекстКонфигуратора = Неопределено Тогда + КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); + Конфигуратор.КаталогСборки(КаталогВременнойИБ); + Иначе + Конфигуратор.ИспользоватьКонтекст(КонтекстКонфигуратора); + КонецЕсли; + + УстановитьУровеньЛогаКонфигуратораРавнымУровнюПродукта(); + + ИмяРасширения = ИмяПапки; + ИмяФайлаОбъекта = ОбъединитьПути(ТекущийКаталог(), КаталогВыгрузки, ИмяПапки + ".cfe"); + + // Удалить расширения + Параметры = Конфигуратор.ПолучитьПараметрыЗапуска(); + Параметры.Добавить("/DeleteCfg"); + Параметры.Добавить("-AllExtensions"); + Конфигуратор.ВыполнитьКоманду(Параметры); + + // Загрузить из файлов + Параметры = Конфигуратор.ПолучитьПараметрыЗапуска(); + Параметры.Добавить("/LoadConfigFromFiles """ + ПутьКИсходникам + """"); + Параметры.Добавить("-Extension """ + ИмяРасширения + """"); + Конфигуратор.ВыполнитьКоманду(Параметры); + + // Сохранить в файл + Параметры = Конфигуратор.ПолучитьПараметрыЗапуска(); + Параметры.Добавить("/DumpCfg """ + ИмяФайлаОбъекта + """"); + Параметры.Добавить("-Extension """ + ИмяРасширения + """"); + Конфигуратор.ВыполнитьКоманду(Параметры); + + Лог.Информация("Успешно собрано расширение "+ИмяРасширения); + +КонецФункции + Функция ЭтоПутьКИсходнымКодамОбработок(ПапкаИсходников) Если ИспользоватьКонфигуратор Тогда @@ -904,6 +955,19 @@ КонецФункции +Функция ЭтоПутьКИсходнымКодамРасширения(ПапкаИсходников) + + ПутьКФайлуКонфиг = ОбъединитьПути(ПапкаИсходников.ПолноеИмя, "Configuration.xml") + ПутьКФайлуДампИнфо = ОбъединитьПути(ПапкаИсходников.ПолноеИмя, "ConfigDumpInfo.xml") + + ФайлРасширение = Новый Файл(ПутьКФайлуКонфиг); + ФайлРасширение2 = Новый Файл(ПутьКФайлуДампИнфо); + ЭтоРасширение = ФайлРасширение.Существует() И ФайлРасширение2.Существует(); + + Возврат ЭтоРасширение; + +КонецФункции + Функция ЭтоПутьКТолстойФорме(ПутьКПапке) ФайлМодуля = Новый Файл(ОбъединитьПути(ПутьКПапке, "module.bsl"));