helpf.pro
Регистрация
 +1 
Распечатать

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

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


ИтоговаяСтрока = УбратьНули(Номер);
Разместил:   Версии: | 8.x | 8.2 УП | 8.3 |  Дата:   Прочитано: 9748
 +1 
Распечатать
Возможно, вас также заинтересует
Как разделить текстовый файл на несколько файлов определенного размера? 0
Бывает необходимо разделить текстовый файл большого размера на несколько маленьких файлов. Ниже представлены функции при помощи которых можно разделить файл : РазделитьФайл( ИмяФайла , РазмерЧасти , Путь ) ...
Отображение в списке статуса наличия оригиналов закрывающих документов Поступлений 0
Этой статьей мы начинаем серию " Хотелок " - то что бухгалтера, менеджеры и т.д. просят добавить в программу 1С для удобства своей работы. Хотелка : Необходимо для каждого документа Поступление товаров и услуг добавить...
Ошибка СУБД: Файл базы данных поврежден 1Cv8.1CD 0
К сожалению, иногда, бывают ситуации когда после внезапного отключения света или при обновлении 1С, система выдает: « Файл базы данных поврежден », при этом ссылаясь на файл 1Cv8.1CD Что же делать? Ниже рекомендации по...
Установка сервера 1С:Предприятия и PostgreSQL на платформе Linux. 0
Связка сервера 1С:Предприятие и PostgreSQL вторая по популярности среди установок 1С и самое используемое решение на платформе Linux. В отличии внедрений на базе Windows и MSSQL, где трудно сделать так, чтобы не заработало,...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.