Имя: Пароль:
1C
1С v8
лидирующие нули
0 SergeySergIT
 
24.08.11
12:56
скажите как убрать лидирующие нули в номере документа
1 Axel2009
 
24.08.11
12:59
по-символьно проверить
2 mikecool
 
24.08.11
13:01
ОбщегоНазначения.ПолучитьНомерНаПечать()
3 Nikitos
 
24.08.11
13:03
Функция УбратьЛидирующиеНули(НомерДокумента)
   Пока Найти(НомерДокумента, "0") > 0 Цикл
       УбратьЛидирующиеНули(Прав(НомерДокумента, СтрДлина(НомерДокумента)-1));
   КонецЦикла;
   Возврат    НомерДокумента;
КонецФункции
4 Nikitos
 
24.08.11
13:04
(2) А вдруг пишется очередная нетленка?
5 mikecool
 
24.08.11
13:04
(4) я не телепат в последнее время
6 Axel2009
 
24.08.11
13:05
Сред(НомерДокумента, 2) кошернее =)
7 Nikitos
 
24.08.11
13:07
(6) Согласен, но мы не ищем легких путей...
8 Ткачев
 
24.08.11
13:15
Попытка
   НомерДокумента = Формат(Число(НомерДокумента), "ЧГ=");
Исключение
   //Тут перебираем циклом до строчного символа
КонецПопытки;
9 SergeySergIT
 
24.08.11
13:19
(8) лучше всего подошло
10 Nikitos
 
24.08.11
13:26
(9) а если буква перед нулем будет???
Не задумывался?
11 SergeySergIT
 
24.08.11
13:35
(10)точно не будет
12 Vetal_978
 
24.08.11
13:35
(10) тогда ноль не лидирующий :)
13 Rebelx
 
24.08.11
13:40
или так можно:
СтрЗаменить(СокрЛ(СтрЗаменить(СокрП(Номер), "0", " ")), " ", "0")
14 Планета Обезьян
 
24.08.11
13:41
прочитал как "летающие пули".. пора в отпуск..
15 Ткачев
 
24.08.11
13:53
(10)Ну если совсем надо убрать ноли, можно сделать так:
Функция УбратьЛидирующиеНули(НомерДокумента)
   
   Попытка
       НомерДокумента = Формат(Число(НомерДокумента), "ЧГ=");
   Исключение
       Пока Лев(НомерДокумента, 1) = "0" Цикл
           НомерДокумента = Сред(НомерДокумента, 2);
       КонецЦикла;
       Фл = "";
       Пока КодСимвола(НомерДокумента) < 48 Или КодСимвола(НомерДокумента) > 57 Цикл
           Фл = Фл + Лев(НомерДокумента, 1);
           НомерДокумента = Сред(НомерДокумента, 2);
       КонецЦикла;
       НомерДокумента = Фл + УбратьЛидирующиеНули(НомерДокумента);
   КонецПопытки;
   Возврат НомерДокумента;
   
КонецФункции
16 Ткачев
 
24.08.11
13:57
+(15)Вместо
Пока Лев(НомерДокумента, 1) = "0" Цикл
   НомерДокумента = Сред(НомерДокумента, 2);
КонецЦикла;
Поставить (13)
17 SergeySergIT
 
24.08.11
14:17
) да так пожалуй еще лучше))) всем спасибо) и кстати вопрос немного не в тему как закрывать созданную тему?
18 Ткачев
 
24.08.11
14:19
(17)Если непосредственно в номере есть буква то (15) повиснет, исправил:
Функция УбратьЛидирующиеНули(НомерДокумента)
   
   Попытка
       НомерДокумента = Формат(Число(НомерДокумента), "ЧГ=");
   Исключение
       НомерДокумента = СтрЗаменить(СокрЛ(СтрЗаменить(СокрП(НомерДокумента), "0", " ")), " ", "0");
       Префикс = "";
       Пока КодСимвола(НомерДокумента) < 48 Или КодСимвола(НомерДокумента) > 57 Цикл
           Префикс = Префикс + Лев(НомерДокумента, 1);
           НомерДокумента = Сред(НомерДокумента, 2);
       КонецЦикла;
       Если Не ПустаяСтрока(Префикс) Тогда
           НомерДокумента = Префикс + УбратьЛидирующиеНули(НомерДокумента);
       КонецЕсли;
   КонецПопытки;
   Возврат НомерДокумента;
   
КонецФункции