Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей.
Часто при разработке печатных форм или отчетов, нужно номера документов вида 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));
Иначе
Возврат НомерСтрокой;
КонецЕсли;
КонецФункции
ИтоговаяСтрока = УбратьНули(Номер);