Уважаемые коллеги! Приведенный ниже пример просто как некая игра ума не более. Однако в некоторых случаях это работает. Удаление лидирующих нулей слева без циклов.
Функция УбратьЛидирующиеНулиСлева(НомерСтрокой)
ПорядокНомера = СтрЗаменить(НомерСтрокой,"1","0");
ПорядокНомера = СтрЗаменить(ПорядокНомера ,"2","0");
ПорядокНомера = СтрЗаменить(ПорядокНомера ,"3","0");
ПорядокНомера = СтрЗаменить(ПорядокНомера ,"4","0");
ПорядокНомера = СтрЗаменить(ПорядокНомера ,"5","0");
ПорядокНомера = СтрЗаменить(ПорядокНомера ,"6","0");
ПорядокНомера = СтрЗаменить(ПорядокНомера ,"7","0");
ПорядокНомера = СтрЗаменить(ПорядокНомера ,"8","0");
ПорядокНомера = СтрЗаменить(ПорядокНомера ,"9","0");
ПорядокНомера = ЧИСЛО("1" + ПорядокНомера );
НомерЧисло = ЧИСЛО("1" + НомерСтрокой);
НомерБезЛидирующихНулей = СтрЗаменить(Строка(НомерЧисло - ПорядокНомера),Символы.НПП,"");
Возврат НомерБезЛидирующихНулей;
КонецФункции
Показать
Подход очень простой. Комбинация методов работы со строкой и с числом.
1. входящая строка приводится к числу:
- конкатенация входящий строки и символа "1" слева;
- преобразование результата конкатенации в число.
2. вычисление порядка:
- все числовые символы входящей строки заменяются символом "0";
- конкатенация результата замены и символа "1" слева.
- преобразование результата конкатенации в число.
3. вычисление разницы между первым и вторым.
4. преобразование разницы строку. Искомый результат.
Более комментировать вроде нечего. Может кому-то поможет.