Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 сен 2024, 06:19

Удаление части номера документа

Автор keramik, 06 июн 2015, 12:16

0 Пользователей и 1 гость просматривают эту тему.

keramik

Документу присваивается номер типа 0000001, как убрать только часть нулей из номера, используя функцию ПолучитьНомерНаПечать()?
Часть кода, который убирает нули такой:
// удаление ведущих нулей
Пока Лев(Номер, 1)="0" Цикл  //находит все нули
Номер = Сред(Номер, 2); //оставляет только число без нулей
КонецЦикла;

Но это убирает все нули из номера, а я хочу сделать так, чтобы оставалось три нуля, т.е. 0001. Как это правильно сделать? Подскажите что изменять в цикле, чтобы тот оставлял часть символов.
Спасибо

дфтын

А вы сделайте по другому -
НомерЧисло = Число(Номер);
НужныйНомер = "000" + Строка(НомерЧисло);

keramik

Как я понимаю, сделав таким образом, допишутся три нуля перед числом. Правильно? Но когда номер документа станет двузначным, то по-прежнему будут три нуля впереди.
Я же добиваюсь того, чтобы нумерация состояла из трёх символов, например 001, 002, 003... 021, 022... 121, 122, 123 и т.д. На данный момент она состоит из шести символов: 000001, 000002... 000021, 000022, 000124, 000125 и т.д. Эти лишние нули я и хочу убрать, но не знаю правильного синтаксиса.

Такой вопрос, как можно добавить проверку на длину порядкового номера документа? Тогда можно будет условие прописать при возврате номера документа. Что-то типа:
Если ДлинаНомера = 1 Тогда
        Возврат "00"+Номер;
ИначеЕсли ДлинаНомера = 2 Тогда
    Возврат "0"+Номер;
Иначе
    Возврат Номер;
КонецЕсли;

дфтын

а! ну тогда проще. СтрДлина вам поможет

keramik

Спасибо, получилось.
В итоге код выглядит так.
1. Вначале обрезаем все нули из номера в функции ПолучитьНомерНаПечать()
Пока Лев(Номер, 1)="0" Цикл
Номер = Сред(Номер, 2);
КонецЦикла;

2. Затем там же в функции при выводе номера дописываем нули, проверяя длину номера:
Если СтрДлина(Номер) = 1 Тогда
Возврат "00" + Номер;
ИначеЕсли СтрДлина(Номер) = 2 Тогда
Возврат "0" + Номер;
Иначе
Возврат Номер;
КонецЕсли;

дфтын


pavl_vs

keramik, если Вас интересует номер длиной 4 знака (подразумевается, что номер не превышает 9999), то самое простоеНомерКон = Прав(НомерНач, 4);

keramik


cska-fanat-kz

Прав("000"+Номер,3); // номер - уже без префиксов и лидирующих нулей
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

keramik

Спасибо, этот вариант лаконичен.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск