Имя: Пароль:
1C
1С v8
Как программно добавить лидирующие нули
0 Маленький Вопросик
 
29.04.12
22:02
Есть номера докуметов (строка,11)

подскажите сабж. спасибо
1 Wobland
 
29.04.12
22:03
подсказываю: Формат()
2 Wobland
 
29.04.12
22:04
не, не то. Прав("000000000000000000"+ТвойНомер, НужнаяДлина)
3 ic-kat
 
29.04.12
22:07
прав() же наоборот вырезает нужное количество символов. нет?
4 Маленький Вопросик
 
29.04.12
22:07
все правильно. спасибо.
5 Wobland
 
29.04.12
22:08
(3) "оставляет", не? ;)
6 ic-kat
 
29.04.12
22:10
(5)без разницы как назвать)
сначала не посмотрела, что внутри скобок. подумала, как через прав можно нули прибавить)
7 Маленький Вопросик
 
29.04.12
22:17
А длину строки как определить, подскажите...
8 Wobland
 
29.04.12
22:19
(7) СтрДл... ненене, продам СП
9 dmAlex
 
29.04.12
22:20
Пока СтрДлина(ТвойНомер) < 11 Цикл
 ТвойНомер = "0"+ТвойНомер;
КонецЦикла
10 Wobland
 
29.04.12
22:20
(9) дольше
11 Torquader
 
29.04.12
22:32
(10) Если (9) сделать один раз до длины номера, а дальше делать, как в (2) то будет быстрее.
В 1С нет заполнения строки в Visual Basic было бы проще.
'LenStr - необходимая длина строки
'Num - входное число
NumStr=CStr(Num) ' получаем строку
LenNum=Len(NumStr)
ResStr=String(LenStr-LenNum,"0") & NumStr
' и без всякого цикла
12 Wobland
 
29.04.12
22:34
(11) Если (9) сделать один раз до длины номера, а дальше делать, как в (2)

вот ваще не понял. (2) уже достаточно, что вы там городите?
13 jsmith
 
29.04.12
22:35
Функция ПолучитьКод(Номер, Длина, Префикс = "")
   
   Код = Префикс;
   ДлинаНомера = Длина - СтрДлина(Код);
   СтрНомер = Строка(Номер);
   СтрНомер = СтрЗаменить(СтрНомер, Символы.НПП, "");
   Для i = 0 По ДлинаНомера - СтрДлина(СтрНомер) - 1 Цикл
       СтрНомер = "0" + СтрНомер;
   КонецЦикла;
   Код = Код + СтрНомер;
   Возврат Код;
   
КонецФункции
14 Torquader
 
29.04.12
22:40
(12) Если заранее неизвестна длина номера, то нулей придётся написать достаточно много, а это сказывается на производительности.
Если же в задаче сразу известно, что нужно строку, скажем, в 10 знаков, то мы смело пишем 10 нулей, а если длина строки - параметр, который пользователь введёт после написания алгоритма, то есть вероятность, что нулей может не хватить.
15 Wobland
 
29.04.12
22:58
(14) в (0) всё точно описано
16 Злопчинский
 
30.04.12
00:34
стр1 = Число(СокрЛП(СтрНомерДок));
СтрНули = Формат(стр1,"Ч(0)10);
17 Anton_2011
 
30.04.12
02:08
(2) всё сказал! Что непонятно то еще? В 1Ц бегущая строка одной строчкой операторов делается! Это я к примеру, а то с нулями своими...
18 Klesk
 
30.04.12
02:55
Прав("00000000000000000",11-СтрДлина(НомерДок))+НомерДок
Независимо от того, куда вы едете — это в гору и против ветра!