diff --git a/v8files-extractor.os b/v8files-extractor.os index a2dd617..d377e86 100644 --- a/v8files-extractor.os +++ b/v8files-extractor.os @@ -1,4 +1,4 @@ -// Copyright 2016 xDrivenDevelopment +// Copyright 2016 xDrivenDevelopment // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -344,6 +344,76 @@ КонецПроцедуры +Функция ОбновитьИндексыЭлементовВФорме(Знач ИмяФайла) + + Текст = Новый ТекстовыйДокумент; + Текст.Прочитать(ИмяФайла); + СодержимоеФайла = Текст.ПолучитьТекст(); + + Регексп = Новый РегулярноеВыражение("id=\""([0-9-]+)\""\/*>"); + Регексп.ИгнорироватьРегистр = ИСТИНА; + Регексп.Многострочный = ИСТИНА; + ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла); + Если ГруппыИндексов.Количество() = 0 Тогда + + Возврат ЛОЖЬ; + + КонецЕсли; + + ТЧ = Новый ТаблицаЗначений; + ТЧ.Колонки.Добавить("Значение"); + ТЧ.Колонки.Добавить("Количество"); + + СтрокиФайла = Новый Соответствие; + Для Каждого ГруппаИндексов Из ГруппыИндексов Цикл + + СтрокаТЧ = ТЧ.ДОбавить(); + СтрокаТЧ.Значение = Число(ГруппаИндексов.Группы[1].Значение); + СтрокаТЧ.Количество = 1; + + СтрокиФайла.Вставить(СтрокаТЧ.Значение, ГруппаИндексов.Группы[1].Индекс); + + КонецЦикла; + + ТЧ.Свернуть("Значение", "Количество"); + Если ТЧ.Количество() <> ГруппыИндексов.Количество() Тогда + + ТЧ.Сортировать("Значение УБЫВ"); + ПоследнийНомер = ТЧ[0].Значение; + ТЧ.Сортировать("Количество УБЫВ"); + + Для каждого СтрокаТЧ Из ТЧ Цикл + + Если СтрокаТЧ.Количество = 1 Тогда + + Прервать; + + КонецЕсли; + + ИсходнаяСтрока = "id=""" + СтрокаТЧ.Значение + """"; + ПоследнийНомер = ПоследнийНомер + 1; + СтрокаЗамены = "id=""" + ПоследнийНомер + """"; + + Поз = СтрНайти(СодержимоеФайла, ИсходнаяСтрока); + + НоваяСтрока = Лев(СодержимоеФайла, Поз - 1) + СтрокаЗамены; + СодержимоеФайла = НоваяСтрока + Сред(СодержимоеФайла, Поз + СтрДлина(ИсходнаяСтрока)); + + КонецЦикла; + + Иначе + + Возврат ЛОЖЬ; + + КонецЕсли; + + Текст.УстановитьТекст(СодержимоеФайла); + Текст.Записать(ИмяФайла); + + Возврат ИСТИНА; + +КонецФункции + Процедура УстановитьУровеньЛогаКонфигуратораРавнымУровнюПродукта() ЛогКонфигуратора = Логирование.ПолучитьЛог("oscript.lib.v8runner"); ЛогКонфигуратора.УстановитьУровень(Лог.Уровень()); @@ -461,7 +531,18 @@ Если УдалятьФайлыИзИндексаГит Тогда УдалитьФайлИзИндексаГит(ПолныйПуть); КонецЕсли; + + ИначеЕсли СтрСравнить(Файл.Имя, "Form.xml") = 0 Тогда + + Лог.Отладка("Обновление индексов в файле формы " + Файл.ПолноеИмя); + Если ОбновитьИндексыЭлементовВФорме(Файл.ПолноеИмя) Тогда + + СписокНовыхКаталогов.Добавить(Файл.ПолноеИмя); + + КонецЕсли; + КонецЕсли; + КонецЦикла; ДобавитьИсходникиВГит(СписокНовыхКаталогов);