HelpF.pro

Как убрать лидирующие нули в номере Документа

Часто при разработке печатных форм или отчетов, нужно номера документов вида 000001 преобразовать в 1 - убрав лидирующие нули. в этой статье я приведу несколько способов, а какой выбрать - решайте сами:

Код 1C v 8.х
 Функция УбратьЛидирующиеНули(НомерДокумента)
    Пока Найти(НомерДокумента, "0") > 0 Цикл
        УбратьЛидирующиеНули(Прав(НомерДокумента, СтрДлина(НомерДокумента)-1));
    КонецЦикла;
    Возврат    НомерДокумента;
КонецФункции
Код 1C v 8.х
 Функция УбратьЛидирующиеНули(НомерДокумента)
    
    Попытка
        НомерДокумента = Формат(Число(НомерДокумента), "ЧГ=");
    Исключение
        НомерДокумента = СтрЗаменить(СокрЛ(СтрЗаменить(СокрП(НомерДокумента), "0", " ")), " ", "0");
        Префикс = "";
        Пока КодСимвола(НомерДокумента) < 48 Или КодСимвола(НомерДокумента) > 57 Цикл
            Префикс = Префикс + Лев(НомерДокумента, 1);
            НомерДокумента = Сред(НомерДокумента, 2);
        КонецЦикла;
        Если Не ПустаяСтрока(Префикс) Тогда
            НомерДокумента = Префикс + УбратьЛидирующиеНули(НомерДокумента);
        КонецЕсли;
    КонецПопытки;
    Возврат НомерДокумента;
    
КонецФункции

В запросе:

Код 1C v 8.х
 ВЫБРАТЬ
    ВЫБОР
    КОГДА Не ПОДСТРОКА(&Номер, 1, 1) = "0" ТОГДА ПОДСТРОКА(&Номер, 1, 10)
    КОГДА Не ПОДСТРОКА(&Номер, 2, 1) = "0" ТОГДА ПОДСТРОКА(&Номер, 2, 9)
    КОГДА Не ПОДСТРОКА(&Номер, 3, 1) = "0" ТОГДА ПОДСТРОКА(&Номер, 3, 8)
    КОГДА Не ПОДСТРОКА(&Номер, 4, 1) = "0" ТОГДА ПОДСТРОКА(&Номер, 4, 7)
    КОГДА Не ПОДСТРОКА(&Номер, 5, 1) = "0" ТОГДА ПОДСТРОКА(&Номер, 5, 6)
    КОГДА Не ПОДСТРОКА(&Номер, 6, 1) = "0" ТОГДА ПОДСТРОКА(&Номер, 6, 5)
    КОГДА Не ПОДСТРОКА(&Номер, 7, 1) = "0" ТОГДА ПОДСТРОКА(&Номер, 7, 4)
    КОГДА Не ПОДСТРОКА(&Номер, 8, 1) = "0" ТОГДА ПОДСТРОКА(&Номер, 8, 3)
    КОГДА Не ПОДСТРОКА(&Номер, 9, 1) = "0" ТОГДА ПОДСТРОКА(&Номер, 9, 2)
    Иначе ПОДСТРОКА(&Номер, 10, 1)
КОНЕЦ КАК НомерБезНулей

Простые примеры:

Код 1C v 8.х
 Пока Лев(Номер, 1) = "0" Цикл 
    Номер = Прав(Номер, СтрДлина(Номер) - 1);
КонецЦикла;
Код 1C v 8.х
 
Функция УбратьНули(НомерСтрокой) 
    Если Лев(НомерСтрокой, 1) = "0" Тогда
        Возврат УбратьНули(Прав(НомерСтрокой, СтрДлина(НомерСтрокой) - 1)); 
    Иначе
        Возврат НомерСтрокой;
    КонецЕсли;
КонецФункции


ИтоговаяСтрока = УбратьНули(Номер);

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1701.html