mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2024-12-30 21:19:59 +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);
|
||||
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||
@ -100,6 +100,16 @@
|
||||
ТЧ.Сортировать("Значение УБЫВ");
|
||||
ПоследнийНомер = ТЧ[0].Значение;
|
||||
ТЧ.Сортировать("Количество УБЫВ");
|
||||
Если ТЧ[0].Количество = 1 Тогда
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
Иначе
|
||||
|
||||
СвободныеИдентификаторы = ВычислитьСвободныеИдентификаторы(ТЧ);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Для каждого СтрокаТЧ Из ТЧ Цикл
|
||||
|
||||
Если СтрокаТЧ.Количество = 1 Тогда
|
||||
@ -111,8 +121,8 @@
|
||||
Пока СтрокаТЧ.Количество > 1 Цикл
|
||||
|
||||
ИсходнаяСтрока = ?(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