Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Исправление индексов в form.xml #112

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 82 additions & 1 deletion v8files-extractor.os
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -344,6 +344,76 @@

КонецПроцедуры

Функция ОбновитьИндексыЭлементовВФорме(Знач ИмяФайла)

Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ИмяФайла);
СодержимоеФайла = Текст.ПолучитьТекст();

Регексп = Новый РегулярноеВыражение("id=\""([0-9-]+)\""\/*>");
Регексп.ИгнорироватьРегистр = ИСТИНА;
Регексп.Многострочный = ИСТИНА;
ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла);
Если ГруппыИндексов.Количество() = 0 Тогда

Возврат ЛОЖЬ;

КонецЕсли;

ТЧ = Новый ТаблицаЗначений;
ТЧ.Колонки.Добавить("Значение");
ТЧ.Колонки.Добавить("Количество");

СтрокиФайла = Новый Соответствие;
Для Каждого ГруппаИндексов Из ГруппыИндексов Цикл

СтрокаТЧ = ТЧ.ДОбавить();
СтрокаТЧ.Значение = Число(ГруппаИндексов.Группы[1].Значение);
СтрокаТЧ.Количество = 1;

СтрокиФайла.Вставить(СтрокаТЧ.Значение, ГруппаИндексов.Группы[1].Индекс);

КонецЦикла;

ТЧ.Свернуть("Значение", "Количество");
Если ТЧ.Количество() <> ГруппыИндексов.Количество() Тогда

ТЧ.Сортировать("Значение УБЫВ");
ПоследнийНомер = ТЧ[0].Значение;
ТЧ.Сортировать("Количество УБЫВ");

Для каждого СтрокаТЧ Из ТЧ Цикл

Если СтрокаТЧ.Количество = 1 Тогда

Прервать;

КонецЕсли;

ИсходнаяСтрока = "id=""" + СтрокаТЧ.Значение + """";
ПоследнийНомер = ПоследнийНомер + 1;
СтрокаЗамены = "id=""" + ПоследнийНомер + """";

Поз = СтрНайти(СодержимоеФайла, ИсходнаяСтрока);

НоваяСтрока = Лев(СодержимоеФайла, Поз - 1) + СтрокаЗамены;
СодержимоеФайла = НоваяСтрока + Сред(СодержимоеФайла, Поз + СтрДлина(ИсходнаяСтрока));

КонецЦикла;

Иначе

Возврат ЛОЖЬ;

КонецЕсли;

Текст.УстановитьТекст(СодержимоеФайла);
Текст.Записать(ИмяФайла);

Возврат ИСТИНА;

КонецФункции

Процедура УстановитьУровеньЛогаКонфигуратораРавнымУровнюПродукта()
ЛогКонфигуратора = Логирование.ПолучитьЛог("oscript.lib.v8runner");
ЛогКонфигуратора.УстановитьУровень(Лог.Уровень());
Expand Down Expand Up @@ -461,7 +531,18 @@
Если УдалятьФайлыИзИндексаГит Тогда
УдалитьФайлИзИндексаГит(ПолныйПуть);
КонецЕсли;

ИначеЕсли СтрСравнить(Файл.Имя, "Form.xml") = 0 Тогда

Лог.Отладка("Обновление индексов в файле формы " + Файл.ПолноеИмя);
Если ОбновитьИндексыЭлементовВФорме(Файл.ПолноеИмя) Тогда

СписокНовыхКаталогов.Добавить(Файл.ПолноеИмя);

КонецЕсли;

КонецЕсли;

КонецЦикла;

ДобавитьИсходникиВГит(СписокНовыхКаталогов);
Expand Down