mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-01-03 22:52:10 +02:00
оптимизация нумерации
This commit is contained in:
parent
4129d90c16
commit
5792c0bc2b
@ -61,7 +61,7 @@
|
|||||||
|
|
||||||
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
|
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
|
||||||
|
|
||||||
ПаттернID = ?(EDT, "<id>([0-9-]+)<\/id>", "id=\""([0-9-]+)\""\/*>");
|
ПаттернID = ?(EDT, "<id>([0-9]+)<\/id>", "id=\""([0-9]+)\""\/*>");
|
||||||
|
|
||||||
Регексп = Новый РегулярноеВыражение(ПаттернID);
|
Регексп = Новый РегулярноеВыражение(ПаттернID);
|
||||||
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||||
@ -100,6 +100,16 @@
|
|||||||
ТЧ.Сортировать("Значение УБЫВ");
|
ТЧ.Сортировать("Значение УБЫВ");
|
||||||
ПоследнийНомер = ТЧ[0].Значение;
|
ПоследнийНомер = ТЧ[0].Значение;
|
||||||
ТЧ.Сортировать("Количество УБЫВ");
|
ТЧ.Сортировать("Количество УБЫВ");
|
||||||
|
Если ТЧ[0].Количество = 1 Тогда
|
||||||
|
|
||||||
|
Возврат Истина;
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
СвободныеИдентификаторы = ВычислитьСвободныеИдентификаторы(ТЧ);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Для каждого СтрокаТЧ Из ТЧ Цикл
|
Для каждого СтрокаТЧ Из ТЧ Цикл
|
||||||
|
|
||||||
Если СтрокаТЧ.Количество = 1 Тогда
|
Если СтрокаТЧ.Количество = 1 Тогда
|
||||||
@ -111,8 +121,8 @@
|
|||||||
Пока СтрокаТЧ.Количество > 1 Цикл
|
Пока СтрокаТЧ.Количество > 1 Цикл
|
||||||
|
|
||||||
ИсходнаяСтрока = ?(EDT, "<id>" + СтрокаТЧ.Значение + "<", "id=""" + СтрокаТЧ.Значение + """");
|
ИсходнаяСтрока = ?(EDT, "<id>" + СтрокаТЧ.Значение + "<", "id=""" + СтрокаТЧ.Значение + """");
|
||||||
ПоследнийНомер = ПоследнийНомер + 1;
|
СвободныйИдентификатор = ПолучитьСвободныйИдентификатор(СвободныеИдентификаторы, ПоследнийНомер);
|
||||||
СтрокаЗамены = ?(EDT, "<id>" + ПоследнийНомер + "<", "id=""" + ПоследнийНомер + """");
|
СтрокаЗамены = ?(EDT, "<id>" + СвободныйИдентификатор + "<", "id=""" + СвободныйИдентификатор + """");
|
||||||
|
|
||||||
Поз = СтрНайти(СодержимоеФайла, ИсходнаяСтрока);
|
Поз = СтрНайти(СодержимоеФайла, ИсходнаяСтрока);
|
||||||
|
|
||||||
@ -129,4 +139,33 @@
|
|||||||
|
|
||||||
Возврат Истина;
|
Возврат Истина;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ВычислитьСвободныеИдентификаторы(ТЧ)
|
||||||
|
СписокЗначений = Новый СписокЗначений();
|
||||||
|
СписокЗначений.ЗагрузитьЗначения(ТЧ.ВыгрузитьКолонку("Значение"));
|
||||||
|
СписокЗначений.СортироватьПоЗначению();
|
||||||
|
|
||||||
|
СвободныеИдентификаторы = Новый Массив;
|
||||||
|
Для Ит = 0 По СписокЗначений.Количество() - 2 Цикл
|
||||||
|
Если СписокЗначений[Ит].Значение = СписокЗначений[Ит + 1].Значение Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
Для Ид = СписокЗначений[Ит].Значение + 1 По СписокЗначений[Ит + 1].Значение - 1 Цикл
|
||||||
|
СвободныеИдентификаторы.Добавить(Ид);
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Возврат СвободныеИдентификаторы;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ПолучитьСвободныйИдентификатор(СвободныеИдентификаторы, ПоследнийНомер)
|
||||||
|
Если СвободныеИдентификаторы.Количество() Тогда
|
||||||
|
СвободныйИдентификатор = СвободныеИдентификаторы[0];
|
||||||
|
СвободныеИдентификаторы.Удалить(0);
|
||||||
|
Возврат СвободныйИдентификатор;
|
||||||
|
Иначе
|
||||||
|
ПоследнийНомер = ПоследнийНомер + 1;
|
||||||
|
Возврат ПоследнийНомер;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецФункции
|
||||||
|
Loading…
Reference in New Issue
Block a user