Имя: Пароль:
1C
1С v8
Как убрать начальные символы из номера объекта?
0 Kamich
 
23.11.16
10:24
Добрый  день форумчане!

Подскажите плиз как правильно реализовать следующее:

имеется Строка(Тип Строка) со значением ABC/DI/00000462

как правильно получить такой результат: 462 из этой строки?
1 Господин ПЖ
 
23.11.16
10:25
выкинуть все не цифры сначала

потом выкинуть все ведущие нули
2 DrShad
 
23.11.16
10:27
Строка(Число(Прав(<ТвояСтрока>, 8)))
3 Timon1405
 
23.11.16
10:29
в типовых для этого есть функция "ПолучитьНомерНаПечать"
4 Митяйский
 
23.11.16
10:29
(0) Где-то в СКД есть функция, обрезающая префикс.
5 DrShad
 
23.11.16
10:32
(4) в СКД нет такой функции
6 Господин ПЖ
 
23.11.16
10:33
(4) она просто из скд дергается
7 Kamich
 
23.11.16
10:37
(2)  Встроенная функция может быть использована только в выражении. (Строка)
    Строка<<?>>(Число(Прав(МояСтрока, 8)));
8 Kamich
 
23.11.16
10:38
(2) У меня тип строки как ТипСтрока
9 DrShad
 
23.11.16
10:39
(8) ваше личное горе
10 Kamich
 
23.11.16
10:46
Всем спасибо!


А для остальных решил след.образом эту задачку:

    НоваяСтрока = Прав(МояСтрока,8);    
    
    СтрокаБезВедущихнулей = НоваяСтрока;
    
    ПОка Найти(СтрокаБезВедущихнулей,"0") = 1 цикл
        СтрокаБезВедущихнулей = Сред(СтрокаБезВедущихнулей,2);
    КонецЦикла;
11 DrShad
 
23.11.16
10:58
адский код
12 Kamich
 
23.11.16
11:00
(11)
есть предложение по лучше?
13 Filippov
 
23.11.16
11:08
(12) Получше будет (2)
14 Lazy Stranger
 
23.11.16
11:11
интересно, что вернет код из (10) на номер К00005500 ?
15 Wit77
 
23.11.16
11:12
(12) Если не ошибаюсь, то преобразование к числу должно сработать и с нулями впереди: Число("00000462"). Можно их не убирать
16 aka AMIGO
 
23.11.16
11:14
Для одной строки писать обработку?
А не проще глазками посмотреть, да копипастом получить? :)

А вообще-то я предполагал перебор символов последовательно .. но это в моей привычке написания г-кода :)
17 Kamich
 
23.11.16
11:58
(14) хороший вопрос...
18 Kamich
 
23.11.16
11:58
(15) То же вариант
19 Kamich
 
23.11.16
11:58
(16) нет не для одной
20 azernot
 
23.11.16
12:03
Функция ЦифрыИзСтроки(ИсходнаяСтрока)
    
    НомерСимвола = 1;
    ИтоговаяСтрока = "";
    Пока НомерСимвола <= СтрДлина(ИсходнаяСтрока) Цикл
        Символ = Сред(ИсходнаяСтрока, НомерСимвола, 1);
        Если Найти("0123456789", Символ) > 0 ТОгда
            ИтоговаяСтрока = ИтоговаяСтрока + Строка(Символ);
        КонецЕсли;
        НомерСимвола = НомерСимвола + 1;
    КонецЦикла;
    
    Возврат ИтоговаяСтрока;
    
КонецФункции


НомерЧислом = Число(ЦифрыИзСтроки(НомерСтрокой));
21 Kamich
 
23.11.16
12:21
(20) Спасибо)
22 Kamich
 
23.11.16
12:22
(20) Переделал код по короче:


       Значение = Прав(МояСтрока,8);
       ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
       НовыйНомер = Формат(ОписаниеТипаЧисло.ПривестиЗначение(Значение), "ЧГ=0");
23 azernot
 
23.11.16
12:28
(22) Ну, если тебе заранее известно, что правые 8 символов именно число, то вообще непонятно, в чём был вопрос.
24 azernot
 
23.11.16
12:29
+(23)  Я бы ещё укоротил код
НовыйНомер = Прав(МояСтрока,8);
25 azernot
 
23.11.16
12:31
Тьфу,
НовыйНомер = Число(Прав(МояСтрока,8));
26 Митяйский
 
23.11.16
14:28
(5) Пардон, я под СКД имел в виду БСП конечно же.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.