Убрать префикс и лидирующие нули

tech_log 10 2

Префиксация объектов

Функция ПолучитьНомер(Строка) 
	
	RegExp = Новый COMОбъект("VBScript.RegExp");
	RegExp.MultiLine = Истина;
	RegExp.Global = Истина;
	RegExp.IgnoreCase = Истина;
	
	Шаблон = "№ 0*(\d+)";
	
	RegExp.Pattern = Шаблон;
	Matches=RegExp.Execute(Строка);	
	
	Возврат Matches;
	
КонецФункции
7

Комментарии

Сахипов Данил
#1, 04 августа 2023 12:43

И эта вся ерунда будет работать только на виндовс.
Есть же нормальное 1с решение. Зачем изобретать велосипед?

Функция УдалитьЛидирующиеНулиИзНомераОбъекта(Знач НомерОбъекта) Экспорт
	
	ПользовательскийПрефикс = ПользовательскийПрефикс(НомерОбъекта);
	
	Если НомерСодержитСтандартныйПрефикс(НомерОбъекта) Тогда
		
		Если НомерСодержитПятизначныйПрефикс(НомерОбъекта) Тогда
			Префикс = Лев(НомерОбъекта, 5);
			Номер = Сред(НомерОбъекта, 6 + СтрДлина(ПользовательскийПрефикс));
		Иначе
			Префикс = Лев(НомерОбъекта, 3);
			Номер = Сред(НомерОбъекта, 4 + СтрДлина(ПользовательскийПрефикс));
		КонецЕсли;
		
	Иначе
		
		Префикс = "";
		Номер = Сред(НомерОбъекта, 1 + СтрДлина(ПользовательскийПрефикс));
		
	КонецЕсли;
	
	// Удаляем лидирующие нули слева в номере.
	Номер = СтроковыеФункцииКлиентСервер.УдалитьПовторяющиесяСимволы(Номер, "0");
	
	Возврат Префикс + ПользовательскийПрефикс + Номер;
КонецФункции


tech_log
#2, 16 августа 2023 09:36

(1) Сахипов Данил, Я понимаю что вы открыли для себя БСП и все остальное вам кажется "ерундой", но протестируйте на больших данных, в файловой базе, оба метода.


SerjGreat
#3, 30 августа 2023 22:06

(2) tech_log, код должен не зависеть от ОС. И это в данном случае важнее, чем скорость. Завтра вы переносите ваше решение на Линукс и куча функционала отвалится.


tech_log
#4, 31 августа 2023 09:38

(3) SerjGreat, Это просто шаблончик для регулярки, это не реально работающий код. Знаете сколько у меня внешних сервисов завязано на винде... При переносе на линукс, префиксация это последнее, что меня будет беспокоить)).


Razlagutt
#5, 08 ноября 2023 09:35

(2) tech_log, а как это Вы умудрились в одном предложении соединить "большие данные" с "файловая база" и, как следствие, ставить это в пику бсп-шной функции?


tech_log
#6, 14 февраля 2024 22:30

(5) Razlagutt, ИП Торгует на вайлберис книгами 300к номенклатуры в файловой. Это не я умудряюсь, это обстоятельства. Надо было убрать в наименовании текст "Книга". БСП за ночь не смогла А регулярка смогла.


Razlagutt
#7, 15 февраля 2024 15:51

(6) tech_log, сочувствую.


См. также

Как удалить префикс и лидирующие нули?

Сократить лидирующие нули

Удалить префикс, лидирующие нули

Номер без префикса и лидирующих нулей

Удалить префикс объекта и лидирующие нули (ЗУП 3)

НомерНаПечать (БСП)

Получает номер документа для вывода на печать; из номера удаляются префиксы и лидирующие нули

УдалитьЛидирующиеНулиИзНомераОбъекта (БСП)

ПользовательскоеПредставлениеНомераВерсии (БСП)

Модератору