From 63bbecd1dd93364e3cd9763cd6ea9ccb94f003bc Mon Sep 17 00:00:00 2001 From: Knyazkov Alexey Date: Mon, 8 Apr 2019 09:14:04 +0300 Subject: [PATCH] #ONECICD-120 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Корректировка "битых" форм, исправлены Id элементов форм --- src/Модули/ТипыФайлов.os | 40 ++++++++++++++ src/Модули/ФайловыеОперации.os | 2 +- src/СценарииОбработки/КорректировкаXMLФорм.os | 54 ++++++++++--------- 3 files changed, 71 insertions(+), 25 deletions(-) diff --git a/src/Модули/ТипыФайлов.os b/src/Модули/ТипыФайлов.os index bdecc27..6f10044 100644 --- a/src/Модули/ТипыФайлов.os +++ b/src/Модули/ТипыФайлов.os @@ -65,3 +65,43 @@ Возврат СтрСравнить(Файл.Имя, "Configuration.mdo") = 0; КонецФункции + +// ЭтоФайлОписанияКонфигурации +// Возвращает истину, если файл является файлом описания формы +// Параметры: +// Файл - Строка - Полный путь к файлу +// +// Возвращаемое значение: +// Булево - Признак +// +Функция ЭтоФайлОписанияФормы(Файл) Экспорт + + Если ПустаяСтрока(Файл.Расширение) Тогда + + Возврат Ложь; + + КонецЕсли; + + Возврат СтрСравнить(Файл.Имя, "Form.xml") = 0; + +КонецФункции + +// ЭтоФайлОписанияКонфигурации +// Возвращает истину, если файл является файлом описания формы в формате EDT +// Параметры: +// Файл - Строка - Полный путь к файлу +// +// Возвращаемое значение: +// Булево - Признак +// +Функция ЭтоФайлОписанияФормыEDT(Файл) Экспорт + + Если ПустаяСтрока(Файл.Расширение) Тогда + + Возврат Ложь; + + КонецЕсли; + + Возврат СтрСравнить(Файл.Имя, "Form.form") = 0; + +КонецФункции diff --git a/src/Модули/ФайловыеОперации.os b/src/Модули/ФайловыеОперации.os index 598d63f..56a78b7 100644 --- a/src/Модули/ФайловыеОперации.os +++ b/src/Модули/ФайловыеОперации.os @@ -80,4 +80,4 @@ Возврат ?(ЕстьBOM, КодировкаТекста.UTF8, КодировкаТекста.UTF8NoBOM); -КонецФункции //ОпределитьКодировку \ No newline at end of file +КонецФункции // ОпределитьКодировку \ No newline at end of file diff --git a/src/СценарииОбработки/КорректировкаXMLФорм.os b/src/СценарииОбработки/КорректировкаXMLФорм.os index 74e26b5..920731f 100644 --- a/src/СценарииОбработки/КорректировкаXMLФорм.os +++ b/src/СценарииОбработки/КорректировкаXMLФорм.os @@ -36,17 +36,33 @@ Лог = ДополнительныеПараметры.Лог; НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария()); - Если АнализируемыйФайл.Существует() И ЭтоФайлОписанияФормы(АнализируемыйФайл) Тогда - - Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария()); - - Если ОбновитьИндексыЭлементовВФорме(АнализируемыйФайл.ПолноеИмя) Тогда + Если АнализируемыйФайл.Существует() Тогда - ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя); + Если ТипыФайлов.ЭтоФайлОписанияФормы(АнализируемыйФайл) Тогда + + Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария()); + + Если ОбновитьИндексыЭлементовВФорме(АнализируемыйФайл.ПолноеИмя) Тогда + + ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя); + + КонецЕсли; + + Возврат ИСТИНА; + + ИначеЕсли ТипыФайлов.ЭтоФайлОписанияФормыEDT(АнализируемыйФайл) Тогда + + Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария()); + + Если ОбновитьИндексыЭлементовВФорме(АнализируемыйФайл.ПолноеИмя, Истина) Тогда + + ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя); + + КонецЕсли; + + Возврат ИСТИНА; КонецЕсли; - - Возврат ИСТИНА; КонецЕсли; @@ -54,23 +70,13 @@ КонецФункции // ОбработатьФайл() -Функция ЭтоФайлОписанияФормы(Файл) - - Если ПустаяСтрока(Файл.Расширение) Тогда - - Возврат Ложь; - - КонецЕсли; - - Возврат СтрСравнить(Файл.Имя, "Form.xml") = 0; - -КонецФункции - -Функция ОбновитьИндексыЭлементовВФорме(Знач ИмяФайла) +Функция ОбновитьИндексыЭлементовВФорме(Знач ИмяФайла, EDT = Ложь) СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла); - Регексп = Новый РегулярноеВыражение("id=\""([0-9-]+)\""\/*>"); + ПаттернID = ?(EDT, "([0-9-]+)<\/id>", "id=\""([0-9-]+)\""\/*>"); + + Регексп = Новый РегулярноеВыражение(ПаттернID); Регексп.ИгнорироватьРегистр = ИСТИНА; Регексп.Многострочный = ИСТИНА; ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла); @@ -111,9 +117,9 @@ Пока СтрокаТЧ.Количество > 1 Цикл - ИсходнаяСтрока = "id=""" + СтрокаТЧ.Значение + """"; + ИсходнаяСтрока = ?(EDT, "" + СтрокаТЧ.Значение + "<", "id=""" + СтрокаТЧ.Значение + """"); ПоследнийНомер = ПоследнийНомер + 1; - СтрокаЗамены = "id=""" + ПоследнийНомер + """"; + СтрокаЗамены = ?(EDT, "" + ПоследнийНомер + "<", "id=""" + ПоследнийНомер + """"); Поз = СтрНайти(СодержимоеФайла, ИсходнаяСтрока);