mirror of
https://github.com/1C-Company/GitConverter.git
synced 2025-03-29 21:47:04 +02:00
Поддержка конвертации в EDT с частичной выгрузкой
This commit is contained in:
parent
5c9570134d
commit
96f3ca1665
@ -1282,19 +1282,38 @@
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
|
||||
Если Параметры.ВыгружатьИзменения Тогда
|
||||
ФайлИзменений = Новый ТекстовыйДокумент();
|
||||
ФайлИзменений.Прочитать(Параметры.ФайлИзменений);
|
||||
|
||||
Параметры.Вставить("ВыгрузкаИзменений", Ложь);
|
||||
ТекстИзменений = ФайлИзменений.ПолучитьТекст();
|
||||
Если НРег(СокрЛП(ТекстИзменений)) <> "fulldump" Тогда
|
||||
ВерсияОбъект = ВерсияХранилища.ПолучитьОбъект();
|
||||
ВерсияОбъект.ВыгрузкаИзменений = Истина;
|
||||
ВерсияОбъект.Записать();
|
||||
Параметры.Вставить("ВыгрузкаИзменений", Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Если Параметры.КонвертироватьВФорматEDT И Параметры.ВыгрузкаИзменений Тогда
|
||||
ДлительныеОперации.СообщитьПрогресс(50, "Анализ частичной выгрузки для конвертации в EDT");
|
||||
ОбъектыДовыгрузки = ПолучитьСписокОбъектовДовыгрузки(ФайлИзменений, ИмяФайлаПриемника);
|
||||
Если ОбъектыДовыгрузки.Количество() > 0 Тогда
|
||||
ДлительныеОперации.СообщитьПрогресс(55, "Подготовка частичной выгрузки для конвертации в EDT");
|
||||
Параметры.ВыгружатьИзменения = Ложь;
|
||||
Параметры.Вставить("ФайлСпискаВыгрузки", Параметры.КаталогВременныхФайлов + "dumplist.txt");
|
||||
Параметры.Вставить("ВыгружатьПоСписку", Истина);
|
||||
ФайлОбъектовВыгрузки = Новый ТекстовыйДокумент();
|
||||
Для Каждого ОбъектВыгрузки Из ОбъектыДовыгрузки Цикл
|
||||
ФайлОбъектовВыгрузки.ДобавитьСтроку(ОбъектВыгрузки);
|
||||
КонецЦикла;
|
||||
ФайлОбъектовВыгрузки.Записать(Параметры.ФайлСпискаВыгрузки, КодировкаТекста.UTF8);
|
||||
|
||||
ДлительныеОперации.СообщитьПрогресс(60, "Довыгрузка объектов для конвертации в EDT");
|
||||
ВыгрузитьКонфигурациюВФайлы(Параметры);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если Параметры.УдалятьКонфигурацииПоставщиков Тогда
|
||||
ДлительныеОперации.СообщитьПрогресс(90, "Удаление конфигураций поставщиков");
|
||||
@ -1660,13 +1679,14 @@
|
||||
Прервать;
|
||||
ИначеЕсли Пути.Количество() > 2 И КвалифицированныеИмена.Получить(Пути[Пути.ВГраница()]) <> Неопределено Тогда
|
||||
ИмяДочернегоОбъекта = Путь;
|
||||
ТипДочернегоОбъекта = КвалифицированныеИмена.Получить(Пути[Пути.ВГраница()]);
|
||||
СегментПутиДочернегоОбъекта = Пути[Пути.ВГраница()];
|
||||
ТипДочернегоОбъекта = КвалифицированныеИмена.Получить(СегментПутиДочернегоОбъекта);
|
||||
Пути.Удалить(Пути.ВГраница());
|
||||
Пути.Добавить(Пути[Пути.ВГраница()] + ".mdo");
|
||||
ПолноеИмяРодителя = СтрСоединить(Пути, ПолучитьРазделительПути());
|
||||
Уровень = Пути.Количество();
|
||||
Пути.Удалить(Пути.ВГраница());
|
||||
Пути.Добавить(ТипДочернегоОбъекта);
|
||||
Пути.Добавить(СегментПутиДочернегоОбъекта);
|
||||
Пути.Добавить(ИмяДочернегоОбъекта);
|
||||
Прервать;
|
||||
ИначеЕсли Пути[0] = "Subsystems" И Пути[Пути.ВГраница()-1] = "Subsystems" Тогда
|
||||
@ -2760,7 +2780,7 @@
|
||||
Пока ЧтениеXML.Прочитать()
|
||||
И ЧтениеXML.ТипУзла <> ТипУзлаXML.КонецЭлемента Цикл
|
||||
|
||||
Если ЧтениеXML.Имя = "Name" Тогда
|
||||
Если ЧтениеXML.Имя = "name" Тогда
|
||||
|
||||
ЧтениеXML.Прочитать();
|
||||
ПодчиненныйОбъект.Вставить("Имя", ЧтениеXML.Значение);
|
||||
@ -2877,6 +2897,117 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Составляет список объектов дополнительных объектов для выгрузки
|
||||
//
|
||||
// Параметры:
|
||||
// ФайлИзменений - ТекстовыйДокумент - Файл с описанием измененений
|
||||
// ИмяФайлаДампа - Строка - Имя файл информации дампа
|
||||
// Возвращаемое значение:
|
||||
// Массив - список объектов которые необходимо выгрузить дополнительно
|
||||
Функция ПолучитьСписокОбъектовДовыгрузки(ФайлИзменений, ИмяФайлаДампа)
|
||||
|
||||
СписокОбъектов = Новый Массив;
|
||||
|
||||
ВыгруженныеИзменения = Новый Соответствие();
|
||||
|
||||
Для индекс = 1 По ФайлИзменений.КоличествоСтрок() Цикл
|
||||
СтрокаИзменений = ФайлИзменений.ПолучитьСтроку(индекс);
|
||||
СтрокаИзменений = СтрЗаменить(СтрокаИзменений, "New:", "");
|
||||
СтрокаИзменений = СтрЗаменить(СтрокаИзменений, "Modified:", "");
|
||||
СтрокаИзменений = СокрЛП(СтрокаИзменений);
|
||||
Если ПустаяСтрока(СтрокаИзменений) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Сегменты = СтрРазделить(СтрокаИзменений, ".");
|
||||
Если Сегменты.Количество() > 0 И (Сегменты[0] = "Language" ИЛИ Сегменты[0] = "Configuration") Тогда
|
||||
Родитель = Сегменты[0];
|
||||
ИначеЕсли Сегменты.Количество() > 1 Тогда
|
||||
Родитель = Сегменты[0] + "." + Сегменты[1];
|
||||
Иначе
|
||||
Родитель = СтрокаИзменений;
|
||||
КонецЕсли;
|
||||
Изменения = ВыгруженныеИзменения.Получить(Родитель);
|
||||
Если Изменения = Неопределено Тогда
|
||||
Изменения = Новый Массив;
|
||||
КонецЕсли;
|
||||
Если Изменения.Найти(СтрокаИзменений) = Неопределено Тогда
|
||||
Изменения.Добавить(СтрокаИзменений);
|
||||
КонецЕсли;
|
||||
ВыгруженныеИзменения.Вставить(Родитель, Изменения);
|
||||
|
||||
// Добавляем для корня конфигурации - языки, а для языков - корень конфигурации
|
||||
Если Сегменты.Количество() > 0 И (Сегменты[0] = "Language" ИЛИ Сегменты[0] = "Configuration") Тогда
|
||||
Если Сегменты[0] = "Configuration" Тогда
|
||||
Родитель = "Language";
|
||||
Иначе
|
||||
Родитель = "Configuration";
|
||||
КонецЕсли;
|
||||
Изменения = ВыгруженныеИзменения.Получить(Родитель);
|
||||
Если Изменения = Неопределено Тогда
|
||||
Изменения = Новый Массив;
|
||||
ВыгруженныеИзменения.Вставить(Родитель, Изменения);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
ДочерниеОбъекты = Новый Массив;
|
||||
ДочерниеОбъекты.Добавить("Form");
|
||||
ДочерниеОбъекты.Добавить("Template");
|
||||
ДочерниеОбъекты.Добавить("Recalculation");
|
||||
ДочерниеОбъекты.Добавить("Subsystem");
|
||||
|
||||
Попытка
|
||||
|
||||
ЧтениеXML = Новый ЧтениеXML;
|
||||
ЧтениеXML.ОткрытьФайл(ИмяФайлаДампа);
|
||||
|
||||
Если ЧтениеXML.Прочитать() И ЧтениеXML.Имя = "ConfigDumpInfo" И ЧтениеXML.Прочитать() И ЧтениеXML.Имя = "ConfigVersions" Тогда
|
||||
Пока ЧтениеXML.Прочитать() И ЧтениеXML.Имя = "Metadata" Цикл
|
||||
Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяОбъекта = "";
|
||||
Если ЧтениеXML.КоличествоАтрибутов() > 0 Тогда
|
||||
Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
|
||||
Если ЧтениеXML.Имя = "name" Тогда
|
||||
|
||||
ИмяОбъекта = ЧтениеXML.Значение;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(ИмяОбъекта) Тогда
|
||||
Сегменты = СтрРазделить(ИмяОбъекта, ".");
|
||||
Если Сегменты.Количество() > 0 И (Сегменты[0] = "Language" ИЛИ Сегменты[0] = "Configuration") Тогда
|
||||
Родитель = Сегменты[0];
|
||||
ИначеЕсли Сегменты.Количество() > 1 Тогда
|
||||
Родитель = Сегменты[0] + "." + Сегменты[1];
|
||||
Иначе
|
||||
Родитель = ИмяОбъекта;
|
||||
КонецЕсли;
|
||||
|
||||
Если Сегменты.Количество() > 2 И ДочерниеОбъекты.Найти(Сегменты[2]) = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Изменения = ВыгруженныеИзменения.Получить(Родитель);
|
||||
Если Изменения <> Неопределено И Изменения.Найти(ИмяОбъекта) = Неопределено Тогда
|
||||
СписокОбъектов.Добавить(ИмяОбъекта);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
ЧтениеXML.Закрыть();
|
||||
|
||||
Исключение
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
Возврат СписокОбъектов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Формирует файлы коммита и записывает в зависимости от ОС
|
||||
//
|
||||
|
@ -21,7 +21,7 @@
|
||||
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
|
||||
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
|
||||
<vendor>Фирма "1С"</vendor>
|
||||
<version>1.0.5.2</version>
|
||||
<version>1.0.5.3</version>
|
||||
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<help>
|
||||
|
Loading…
x
Reference in New Issue
Block a user