From 7b8c1a156df21b2626527b1e77a6e97439473f82 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Tue, 3 Nov 2020 16:26:12 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=B8=D0=BD=D0=BA=D1=80=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=BD=D0=BE=D0=B9=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=82=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B2=20=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D0=B0=D1=82=20EDT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edtExport.os" | 290 ++++++++++++++---- .../increment.os" | 27 +- 2 files changed, 258 insertions(+), 59 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" index c3b3574..b8f74c3 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" @@ -12,6 +12,9 @@ Перем ИмяРасширения; Перем ИмяБазовогоПроекта; +Перем ИмяФайлаДампаКонфигурации; +Перем ИмяФайлаИзменений; + #Область Интерфейс_плагина // Возвращает версию плагина @@ -38,11 +41,11 @@ // Строка - описание функциональности плагина // Функция Описание() Экспорт - Возврат "Плагин добавляет возможность выгрузки в формате EDT." - + " Важно: Для работы плагина необходимы установленные EDT и Ring"; + Возврат "Плагин добавляет возможность выгрузки в формате EDT." + + " Важно: Для работы плагина необходимы установленные EDT и Ring"; КонецФункции -// Возвращает подробную справку к плагину +// Возвращает подробную справку к плагину // // Возвращаемое значение: // Строка - подробная справка для плагина @@ -58,7 +61,7 @@ // Функция Имя() Экспорт Возврат "edtExport"; -КонецФункции +КонецФункции // Возвращает имя лога плагина // @@ -74,101 +77,112 @@ #Область Подписки_на_события Процедура ПриАктивизации(СтандартныйОбработчик) Экспорт - + Обработчик = СтандартныйОбработчик; - + КонецПроцедуры // BSLLS:UnusedParameters-off Процедура ПередНачаломВыполнения(ПутьКХранилищу, КаталогРабочейКопии) Экспорт -// BSLLS:UnusedParameters-on - + // BSLLS:UnusedParameters-on + ИмяРасширения = Обработчик.ПолучитьИмяРасширения(); - + КонецПроцедуры Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации) Экспорт - + Лог.Отладка("Ищу команду <%1> в списке поддерживаемых", ИмяКоманды); Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда Возврат; КонецЕсли; - + Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды); КлассРеализации.Опция("P project-name", "", "[*edtExport] Имя проекта") - .ТСтрока() - .ВОкружении("GITSYNC_PROJECT_NAME"); - + .ТСтрока() + .ВОкружении("GITSYNC_PROJECT_NAME"); + КлассРеализации.Опция("W workspace-location", "", "[*edtExport] расположение рабочей области") - .ТСтрока() - .ВОкружении("GITSYNC_WORKSPACE_LOCATION"); - + .ТСтрока() + .ВОкружении("GITSYNC_WORKSPACE_LOCATION"); + КлассРеализации.Опция( - "B base-project-name", - "", + "B base-project-name", + "", "[*edtExport] имя базового проекта в рабочей области (для расширений))") - .ТСтрока() - .ВОкружении("GITSYNC_BASE_PROJECT_NAME"); - + .ТСтрока() + .ВОкружении("GITSYNC_BASE_PROJECT_NAME"); + КонецПроцедуры Процедура ПриПолученииПараметров(ПараметрыКоманды) Экспорт - ИмяПроекта = ПараметрыКоманды.Параметр("project-name"); + ИмяПроекта = ПараметрыКоманды.Параметр("project-name"); РабочееПространство = ПараметрыКоманды.Параметр("workspace-location"); - ИмяБазовогоПроекта = ПараметрыКоманды.Параметр("base-project-name"); - - Если Не ПустаяСтрока(ИмяРасширения) + ИмяБазовогоПроекта = ПараметрыКоманды.Параметр("base-project-name"); + + Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) И ПустаяСтрока(РабочееПространство) Тогда - - ВызватьИсключение "При конвертации расширений с указанием базового проекта, - |параметр workspace-location обязателен"; - + + ВызватьИсключение "При конвертации расширений с указанием базового проекта, + |параметр workspace-location обязателен"; + КонецЕсли; - + Если ПустаяСтрока(ИмяПроекта) Тогда ВызватьИсключение "Не заполнено имя проекта"; КонецЕсли; - + КонецПроцедуры // BSLLS:UnusedParameters-off Процедура ПередПеремещениемВКаталогРабочейКопии( - Конфигуратор, - КаталогРабочейКопии, - КаталогВыгрузки, - ПутьКХранилищу, + Конфигуратор, + КаталогРабочейКопии, + КаталогВыгрузки, + ПутьКХранилищу, НомерВерсии) Экспорт -// BSLLS:UnusedParameters-on - + // BSLLS:UnusedParameters-on + Лог.Отладка("Начинаю выгрузку EDT"); Лог.Отладка("Имя проекта: %1", ИмяПроекта); - + + ПутьКФайлуИзменений = ОбъединитьПути(КаталогВыгрузки, ИмяФайлаИзменений); + Если ФС.ФайлСуществует(ПутьКФайлуИзменений) Тогда + + Лог.Отладка("Используем инкрементный импорт проекта в EDT"); + + ДополнитьИнкрементнуюВыгрузкуПроекта(Конфигуратор, КаталогВыгрузки); + + Иначе + Лог.Отладка("Используем полный импорт проекта в EDT"); + КонецЕсли; + ВременноеРабочееПространство = ВременныеФайлы.СоздатьКаталог(); Если Не ПустаяСтрока(РабочееПространство) Тогда ФС.КопироватьСодержимоеКаталога(РабочееПространство, ВременноеРабочееПространство); КонецЕсли; - + Лог.Отладка("Рабочее пространство EDT: %1", ВременноеРабочееПространство); КаталогПроекта = ОбъединитьПути(ВременноеРабочееПространство, ИмяПроекта); - + Лог.Отладка("Каталог проекта EDT: %1", КаталогПроекта); ФС.ОбеспечитьПустойКаталог(КаталогПроекта); - + Команда = Новый Команда; Параметры = Новый Массив(); Параметры.Добавить(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки)); - Параметры.Добавить(СтрШаблон("--workspace-location ""%1""", ВременноеРабочееПространство)); - Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта)); + Параметры.Добавить(СтрШаблон("--workspace-location ""%1""", ВременноеРабочееПространство)); + Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта)); Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда Параметры.Добавить(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта)); КонецЕсли; - + Команда.УстановитьСтрокуЗапуска("ring edt workspace import"); Команда.УстановитьКодировкуВывода(КодировкаТекста.ANSI); Команда.ДобавитьЛогВыводаКоманды("oscript.lib.gitsync.plugins.edtExport"); @@ -177,30 +191,198 @@ Команда.ПоказыватьВыводНемедленно(Ложь); Команда.УстановитьПравильныйКодВозврата(0); КодВозврата = Команда.Исполнить(); - + Лог.Отладка("Код возврата EDT: %1", КодВозврата); - + + ТекущийФайлВерсийМетаданных = Новый Файл(ОбъединитьПути(КаталогВыгрузки, ИмяФайлаДампаКонфигурации)); + Если ТекущийФайлВерсийМетаданных.Существует() Тогда + + ТекущийФайлВерсийМетаданных2 = ОбъединитьПути(КаталогПроекта, ИмяФайлаДампаКонфигурации); + КопироватьФайл(ТекущийФайлВерсийМетаданных.ПолноеИмя, + ТекущийФайлВерсийМетаданных2); + + КонецЕсли; + Лог.Отладка("Очищаю каталог выгрузки"); УдалитьФайлы(КаталогВыгрузки, "*"); - + Лог.Отладка("Копирую каталог проекта EDT в каталог выгрузки"); ФС.КопироватьСодержимоеКаталога(КаталогПроекта, КаталогВыгрузки); - + КонецПроцедуры #КонецОбласти -Процедура Инициализация() +#Область Вспомогательные_процедуры_и_функции + +Процедура ДополнитьИнкрементнуюВыгрузкуПроекта(Конфигуратор, КаталогВыгрузки) + + ПутьКФайлуДополнительнойВыгрузки = ВременныеФайлы.НовоеИмяФайла(); + + СформироватьСписокДополнительныхОбъектов(КаталогВыгрузки, ПутьКФайлуДополнительнойВыгрузки); + + Если ФС.ФайлСуществует(ПутьКФайлуДополнительнойВыгрузки) Тогда + + Параметры = Конфигуратор.ПолучитьПараметрыЗапуска(); + + Параметры.Добавить(СтрШаблон("/DumpConfigToFiles ""%1""", КаталогВыгрузки)); + Параметры.Добавить(СтрШаблон("-listFile ""%1""", ПутьКФайлуДополнительнойВыгрузки)); + + Конфигуратор.ВыполнитьКоманду(Параметры); + + ВременныеФайлы.УдалитьФайл(ПутьКФайлуДополнительнойВыгрузки); + + КонецЕсли; + +КонецПроцедуры + +// Возращает имя родительского объекта меданных +// +// Параметры: +// ПолноеИмяОбъекта - Строка - Полное имя объекта метаданных. +// +// Возвращаемое значение: +// Строка - имя родительского объекта +// +Функция РодительОбъекта(ПолноеИмяОбъекта) + + ЧастиИмени = СтрРазделить(ПолноеИмяОбъекта, "."); + + Если ЧастиИмени.Количество() > 1 Тогда + + ТипОбъектаМетаданных = ЧастиИмени[0]; + ИмяОбъектаМетаданных = ЧастиИмени[1]; + + Иначе + Возврат ПолноеИмяОбъекта; + КонецЕсли; + + Если СтрНайти("Configuration,Language", ТипОбъектаМетаданных) > 0 Тогда + Возврат ТипОбъектаМетаданных; + Иначе + Возврат СтрШаблон("%1.%2", ТипОбъектаМетаданных, ИмяОбъектаМетаданных); + КонецЕсли; + +КонецФункции + +Функция ИзмененныеОбъектыМетаданных(ПутьКФайлуИзменений) + + РегулярноеВыражение = Новый РегулярноеВыражение("^(?>New|Modified):(\S+)\s*$"); + + ЧтениеФайла = Новый ЧтениеТекста(ПутьКФайлуИзменений); + Совпадения = РегулярноеВыражение.НайтиСовпадения(ЧтениеФайла.Прочитать()); + ЧтениеФайла.Закрыть(); + + ИзмененныеОбъекты = Новый Соответствие; + ИзмененныеОбъекты.Вставить("Configuration", Новый Массив); + ИзмененныеОбъекты.Вставить("Language", Новый Массив); + + Для Каждого Совпадение Из Совпадения Цикл + + ИмяОбъектаМетаданных = Совпадение.Группы[1].Значение; + Родитель = РодительОбъекта(ИмяОбъектаМетаданных); + + ПодчиненныеОбъекты = ИзмененныеОбъекты.Получить(Родитель); + Если ПодчиненныеОбъекты = Неопределено Тогда + ПодчиненныеОбъекты = Новый Массив; + ИзмененныеОбъекты.Вставить(Родитель, ПодчиненныеОбъекты); + КонецЕсли; + + ПодчиненныеОбъекты.Добавить(ИмяОбъектаМетаданных); + + КонецЦикла; + + Возврат ИзмененныеОбъекты; + +КонецФункции +Функция ДополнительныеОбъектыКВыгрузке(ВыгруженныеИзменения, ИмяФайлаДампа) + + СписокОбъектов = Новый Массив; + + ДочерниеОбъекты = Новый Массив; + ДочерниеОбъекты.Добавить("Form"); + ДочерниеОбъекты.Добавить("Template"); + ДочерниеОбъекты.Добавить("Recalculation"); + ДочерниеОбъекты.Добавить("Subsystem"); + + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.ОткрытьФайл(ИмяФайлаДампа); + + ЧтениеXML.ПерейтиКСодержимому(); // ConfigDumpInfo + ЧтениеXML.Прочитать(); // ConfigVersions + ЧтениеXML.Прочитать(); // Metadata + + Пока ЧтениеXML.Имя = "Metadata" Цикл + + ИмяОбъекта = ЧтениеXML.ЗначениеАтрибута("name"); + + Родитель = РодительОбъекта(ИмяОбъекта); + + Сегменты = СтрРазделить(ИмяОбъекта, "."); + + Если Сегменты.Количество() > 2 И ДочерниеОбъекты.Найти(Сегменты[2]) = Неопределено Тогда + Продолжить; + КонецЕсли; + Изменения = ВыгруженныеИзменения.Получить(Родитель); + Если Изменения <> Неопределено Тогда + + Если Изменения.Найти(ИмяОбъекта) = Неопределено Или Родитель = "Configuration" Тогда + СписокОбъектов.Добавить(ИмяОбъекта); + КонецЕсли; + + КонецЕсли; + + Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда + ЧтениеXML.Пропустить(); + КонецЕсли; + + ЧтениеXML.Прочитать(); + + КонецЦикла; + + ЧтениеXML.Закрыть(); + + Возврат СписокОбъектов; + +КонецФункции + +Процедура СформироватьСписокДополнительныхОбъектов(КаталогВыгрузки, ПутьКФайлуДополнительнойВыгрузки) + + ПутьКФайлуИзменений = ОбъединитьПути(КаталогВыгрузки, ИмяФайлаИзменений); + ПутьКФайлуВерсийМетаданных = ОбъединитьПути(КаталогВыгрузки, ИмяФайлаДампаКонфигурации); + + ИзмененныеОбъекты = ИзмененныеОбъектыМетаданных(ПутьКФайлуИзменений); + ДополнительныеОбъектыКВыгрузке = ДополнительныеОбъектыКВыгрузке(ИзмененныеОбъекты, ПутьКФайлуВерсийМетаданных); + + Если ДополнительныеОбъектыКВыгрузке.Количество() > 0 Тогда + + ФайлОбъектовВыгрузки = Новый ТекстовыйДокумент(); + Для Каждого ДополнительныйОбъект Из ДополнительныеОбъектыКВыгрузке Цикл + ФайлОбъектовВыгрузки.ДобавитьСтроку(ДополнительныйОбъект); + КонецЦикла; + ФайлОбъектовВыгрузки.Записать(ПутьКФайлуДополнительнойВыгрузки, КодировкаТекста.UTF8); + + КонецЕсли; + +КонецПроцедуры + +Процедура Инициализация() + ВерсияПлагина = "1.2.0"; Лог = Логирование.ПолучитьЛог(ИмяЛога()); КомандыПлагина = Новый Массив; КомандыПлагина.Добавить("sync"); - ИмяРасширения = ""; + ИмяРасширения = ""; РабочееПространство = ""; - ИмяБазовогоПроекта = ""; - + ИмяБазовогоПроекта = ""; + + ИмяФайлаДампаКонфигурации = "ConfigDumpInfo.xml"; + ИмяФайлаИзменений = "dumplist.txt"; + КонецПроцедуры -Инициализация(); +#КонецОбласти + +Инициализация(); \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/increment.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/increment.os" index c662d62..5f29d83 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/increment.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/increment.os" @@ -1,6 +1,7 @@ #Использовать logos #Использовать gitrunner +#Использовать fs Перем Лог; @@ -12,6 +13,9 @@ Перем ВыгрузкаИзмененийВозможна; Перем ИмяРасширения; +Перем ИмяФайлаИзменений; +Перем ПутьКФайлуИзменений; + #Область Интерфейс_плагина // Возвращает версию плагина @@ -133,7 +137,7 @@ Если ВыгрузкаИзмененийВозможна Тогда - СтандартнаяОбработка = ложь; + СтандартнаяОбработка = Ложь; Параметры = Конфигуратор.ПолучитьПараметрыЗапуска(); Параметры.Добавить(СтрШаблон("/DumpConfigToFiles %1", ОбернутьВКавычки(КаталогВыгрузки))); @@ -141,21 +145,29 @@ Параметры.Добавить("-update"); Параметры.Добавить(СтрШаблон("-configDumpInfoForChanges %1", ОбернутьВКавычки(ПутьКФайлуВерсийМетаданных))); - + Если ЗначениеЗаполнено(ИмяРасширения) Тогда Параметры.Добавить(СтрШаблон("-Extension %1", ИмяРасширения)); КонецЕсли; Конфигуратор.ВыполнитьКоманду(Параметры); + Если ФС.ФайлСуществует(ПутьКФайлуИзменений) Тогда + ПереместитьФайл(ПутьКФайлуИзменений, ОбъединитьПути(КаталогВыгрузки, ИмяФайлаИзменений)); + КонецЕсли; + КонецЕсли; - + КонецПроцедуры Процедура ПриОчисткеКаталогаРабочейКопии(КаталогРабочейКопии, СоответствиеИменФайловДляПропуска, СтандартнаяОбработка) Экспорт Если ВыгрузкаИзмененийВозможна Тогда + СтандартнаяОбработка = Ложь; + + ВременныеФайлы.УдалитьФайл(ПутьКФайлуИзменений); + КонецЕсли; КонецПроцедуры @@ -219,11 +231,14 @@ КонецЕсли; ЧтениеФайла.Закрыть(); - - ВременныеФайлы.УдалитьФайл(ПутьКФайлуИзменений); + КонецЕсли; ВременныеФайлы.УдалитьФайл(КаталогПроверки); + + Если НЕ ОбновлениеВозможно Тогда + ВременныеФайлы.УдалитьФайл(ПутьКФайлуИзменений); + КонецЕсли; Возврат ОбновлениеВозможно; @@ -236,7 +251,9 @@ Лог = Логирование.ПолучитьЛог(ИмяЛога()); ПутьКФайлуВерсийМетаданных = ""; + ПутьКФайлуИзменений = ""; ИмяФайлаДампаКонфигурации = "ConfigDumpInfo.xml"; + ИмяФайлаИзменений = "dumplist.txt"; ВыгрузкаИзмененийВозможна = Ложь; ИмяРасширения = ""; From 5dff72bf81111dde4ec018a9fd53561213d6b056 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Tue, 3 Nov 2020 18:43:10 +0200 Subject: [PATCH 2/3] =?UTF-8?q?=D0=A3=D0=BF=D0=BE=D1=80=D1=8F=D0=B4=D0=BE?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=20=D0=BA=D0=BE=D0=B4=20=D0=B2=D1=8B=D0=B3?= =?UTF-8?q?=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D1=85=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edtExport.os" | 45 +++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" index b8f74c3..9e338a1 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" @@ -257,7 +257,7 @@ Возврат ПолноеИмяОбъекта; КонецЕсли; - Если СтрНайти("Configuration,Language", ТипОбъектаМетаданных) > 0 Тогда + Если ЭтоРодительВерхнегоУровня(ТипОбъектаМетаданных) Тогда Возврат ТипОбъектаМетаданных; Иначе Возврат СтрШаблон("%1.%2", ТипОбъектаМетаданных, ИмяОбъектаМетаданных); @@ -265,6 +265,27 @@ КонецФункции +Функция ЭтоВложенныйОбъект(ПолноеИмяОбъекта) + + ИндексВложенногоТипа = 2; + + ЧастиИмени = СтрРазделить(ПолноеИмяОбъекта, "."); + Если ЧастиИмени.Количество() > ИндексВложенногоТипа Тогда + ТипВложенногоОбъекта = ЧастиИмени[ИндексВложенногоТипа]; + Иначе + Возврат Ложь; + КонецЕсли; + + Возврат (СтрНайти("Form,Template,Recalculation,Subsystem", ТипВложенногоОбъекта) > 0); + +КонецФункции + +Функция ЭтоРодительВерхнегоУровня(Родитель) + + Возврат (СтрНайти("Configuration,Language", Родитель) > 0); + +КонецФункции + Функция ИзмененныеОбъектыМетаданных(ПутьКФайлуИзменений) РегулярноеВыражение = Новый РегулярноеВыражение("^(?>New|Modified):(\S+)\s*$"); @@ -296,16 +317,10 @@ КонецФункции -Функция ДополнительныеОбъектыКВыгрузке(ВыгруженныеИзменения, ИмяФайлаДампа) +Функция ДополнительныеОбъектыКВыгрузке(ИзмененныеОбъекты, ИмяФайлаДампа) СписокОбъектов = Новый Массив; - ДочерниеОбъекты = Новый Массив; - ДочерниеОбъекты.Добавить("Form"); - ДочерниеОбъекты.Добавить("Template"); - ДочерниеОбъекты.Добавить("Recalculation"); - ДочерниеОбъекты.Добавить("Subsystem"); - ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяФайлаДампа); @@ -316,21 +331,15 @@ Пока ЧтениеXML.Имя = "Metadata" Цикл ИмяОбъекта = ЧтениеXML.ЗначениеАтрибута("name"); - Родитель = РодительОбъекта(ИмяОбъекта); - Сегменты = СтрРазделить(ИмяОбъекта, "."); + Если ЭтоВложенныйОбъект(ИмяОбъекта) ИЛИ ЭтоРодительВерхнегоУровня(Родитель) Тогда - Если Сегменты.Количество() > 2 И ДочерниеОбъекты.Найти(Сегменты[2]) = Неопределено Тогда - Продолжить; - КонецЕсли; - Изменения = ВыгруженныеИзменения.Получить(Родитель); - Если Изменения <> Неопределено Тогда - - Если Изменения.Найти(ИмяОбъекта) = Неопределено Или Родитель = "Configuration" Тогда + Изменения = ИзмененныеОбъекты.Получить(Родитель); + Если Изменения <> Неопределено И Изменения.Найти(ИмяОбъекта) = Неопределено Тогда СписокОбъектов.Добавить(ИмяОбъекта); КонецЕсли; - + КонецЕсли; Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда From 58f776e515b33b1f67a40df0d450e6d04c445c11 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 4 Nov 2020 08:45:01 +0200 Subject: [PATCH 3/3] =?UTF-8?q?=D0=92=20=D0=B2=D1=8B=D0=B3=D1=80=D1=83?= =?UTF-8?q?=D0=B7=D0=BA=D1=83=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D1=8E=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B8=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D1=8B=20?= =?UTF-8?q?"=D1=80=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D0=B8"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edtExport.os" | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" index 9e338a1..9ed59bb 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" @@ -317,12 +317,12 @@ КонецФункции -Функция ДополнительныеОбъектыКВыгрузке(ИзмененныеОбъекты, ИмяФайлаДампа) +Функция ДополнительныеОбъектыКВыгрузке(ИзмененныеОбъекты, ПутьКФайлуВерсийМетаданных) СписокОбъектов = Новый Массив; ЧтениеXML = Новый ЧтениеXML; - ЧтениеXML.ОткрытьФайл(ИмяФайлаДампа); + ЧтениеXML.ОткрытьФайл(ПутьКФайлуВерсийМетаданных); ЧтениеXML.ПерейтиКСодержимому(); // ConfigDumpInfo ЧтениеXML.Прочитать(); // ConfigVersions @@ -333,7 +333,9 @@ ИмяОбъекта = ЧтениеXML.ЗначениеАтрибута("name"); Родитель = РодительОбъекта(ИмяОбъекта); - Если ЭтоВложенныйОбъект(ИмяОбъекта) ИЛИ ЭтоРодительВерхнегоУровня(Родитель) Тогда + Если ЭтоВложенныйОбъект(ИмяОбъекта) + ИЛИ ИмяОбъекта = Родитель + ИЛИ ЭтоРодительВерхнегоУровня(Родитель) Тогда Изменения = ИзмененныеОбъекты.Получить(Родитель); Если Изменения <> Неопределено И Изменения.Найти(ИмяОбъекта) = Неопределено Тогда @@ -342,10 +344,7 @@ КонецЕсли; - Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда - ЧтениеXML.Пропустить(); - КонецЕсли; - + ЧтениеXML.Пропустить(); ЧтениеXML.Прочитать(); КонецЦикла;