Имя: Пароль:
1C
 
Убрать нули в номере слева (шедевр в 8)
Ø (Волшебник 24.05.2017 18:31)
,
0 RINCH
 
23.05.17
11:24
Здравствуйте!

СтрЗаменить (ЭтотОбъект.Номер, "0", "")

Проблема в том что нули убираются везде 00001540   нужно что бы только с лева.   ??
1 Ц_У
 
23.05.17
11:26
(0) нулей слева много бывает?
2 mehfk
 
23.05.17
11:26
(0) Поищи в своей могучей конфе какую-нибудь функцию общего модули вроде "ПолучитьНомерНаПечать".
3 Aleksey
 
23.05.17
11:26
возъми код из типовой
4 Волшебник
 
модератор
23.05.17
11:26
Формат(Число(Номер),"ЧГ=0")
5 Ц_У
 
23.05.17
11:27
чорд, лево и право попутал :)
6 Naf2017
 
23.05.17
11:27
Функция КраткийНомер(ИсходныйНомер) Экспорт
                      
    Номер   = СокрЛП(ИсходныйНомер);
    ЗначащиеЦифры = "123456789";
    Пока Найти(ЗначащиеЦифры,Лев(Номер,1))=0 Цикл
        Номер = Сред(Номер,2);    
    КонецЦикла;
    Возврат Номер;

КонецФункции
7 Aleksey
 
23.05.17
11:28
Функция КЧислу(Строка) Экспорт
    
    ОписаниеТипов = Новый ОписаниеТипов("Число");
    Возврат ОписаниеТипов.ПривестиЗначение(Строка);
        
КонецФункции
8 Aleksey
 
23.05.17
11:28
СтрЗаменить(СокрЛ(СтрЗаменить("000000078009000","0"," "))," ","0")
9 Aleksey
 
23.05.17
11:30
ну и для любителей

RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Pattern = "^0*([1-9][0-9]*)$";
Matches = RegExp.Execute(Номер);
ИтоговаяСтрока = Matches.Item(0).SubMatches.Item(0);
10 Волшебник
 
модератор
23.05.17
11:30
(8) круто
11 Aleksey
 
23.05.17
11:34
Ну и для тех кто считает код в типовых идеалом, то

Функция УбратьЛидирующиеНули(Строка)
    Рез = СокрЛП(Строка);
    Пока Лев(Рез, 1) = "0" Цикл
        Рез = Сред(Рез, 2);
    КонецЦикла;
    Возврат Рез;
КонецФункции
12 Fish
 
23.05.17
11:36
(8) Интересный способ, надо запомнить.
13 igorPetrov
 
23.05.17
11:42
(8) Неплохо.
14 RINCH
 
23.05.17
11:45
(8) Хех реально круто)) Спасибо всем!)
15 sFAQer
 
23.05.17
11:48
(8) Шикарно..
16 Адинэснег
 
23.05.17
11:52
(8) спасибо_тебе_пробел
17 VladZ
 
23.05.17
11:53
(8) Круто! Забрал себе на заметку.
18 Адинэснег
 
23.05.17
11:54
упадет как только префиксация в номерах появится...
19 Naf2017
 
23.05.17
11:54
Не забываем, что часто есть еще буквенные префиксы, потому я за (6)
20 Адинэснег
 
23.05.17
11:54
ПК0000235
21 Юрий Лазаренко
 
23.05.17
11:55
(8) "Ай да Пушкин, ай да сукин сын!" (с)
22 lodger
 
23.05.17
11:56
(18) префиксы предварительно удалить.
23 Адинэснег
 
23.05.17
11:58
ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект)
24 1dvd
 
23.05.17
12:02
(19) твоя хрень как раз обрежет буквенные префиксы. А автору нужно только лидирующие нули
25 pavig
 
23.05.17
12:04
(8) Красиво)
26 Timon1405
 
23.05.17
12:10
(9) //ИтоговаяСтрока = Matches.Item(0).SubMatches.Item(0);
ИтоговаяСтрока =RegExp.Replace(Номер,"$1");
27 Масянька
 
23.05.17
12:37
(8) Краткость сестра таланта (С) :)
Браво!
28 1dvd
 
23.05.17
12:38
что вы все так писаетесь от (8)? Если в префиксе будет пробел, то все получат большой огромный болт
29 Ildarovich
 
23.05.17
14:37
(28) Если посчитать решение (8) - частным случаем приема 38 из http://catalog.mista.ru/public/460935/ , то там предлагалось:

"В этом случае предварительно требуется заменить пробелы каким-либо редким сочетанием символов, а после преобразования выполнить обратную замену.

СтрЗаменить(СтрЗаменить(СокрЛ(СтрЗаменить(СтрЗаменить(ИсходнаяСтрока, " ", Символы.НПП), "0", " ")), " ", "0"), Символы.НПП, " ")
30 Fish
 
23.05.17
14:38
(28) Не завидуй.
31 Naf2017
 
23.05.17
17:24
(24) обычно на печать префиксы тоже обрезают так-то
32 1dvd
 
24.05.17
07:51
(31) ты все тз так выполняешь?
33 Михаил 1С
 
24.05.17
07:56
(8) Шедеврально!
Примите мое Восхищение!
34 Naf2017
 
24.05.17
07:58
(32) я сужу по типовым
если бы мне еще ТЗ в нормальном виде приносили бы...
35 mishaPH
 
модератор
24.05.17
08:01
(0) автор. нули лидирующие это формат строки текст. чтобы убрать надо из строки сделать число.
36 Serg_1960
 
24.05.17
09:42
Sorry, но ни один из озвученных алгоритмов не учитывает вероятность наличия префикса в номере :(
37 1Снеговик
 
гуру
24.05.17
09:48
(36)
Пока НЕ((КодСимвола(Лев(Номер,1)) >= 48 И КодСимвола(Лев(Номер,1)) <= 57) ИЛИ Номер = "") Цикл
     Номер = Сред(Номер, 2);
КонецЦикла;

Если Лев(Номер, 1) = "-" Тогда
     Номер = Сред(Номер, 2);
КонецЕсли;

Пока Лев(Номер, 1)="0" Цикл
     Номер = Сред(Номер, 2);
КонецЦикла;
38 Naf2017
 
24.05.17
09:51
(36) смотри (6)
39 1Снеговик
 
гуру
24.05.17
09:51
Точнее сразу так можно написать

Пока НЕ((КодСимвола(Лев(Номер,1)) >= 48 И КодСимвола(Лев(Номер,1)) <= 57) ИЛИ Номер = "") ИЛИ
Лев(Номер, 1) = "-" ИЛИ
Лев(Номер, 1) = "0" Тогда
     Номер = Сред(Номер, 2);
КонецЦикла;
40 h-sp
 
24.05.17
09:54
(33) всё-таки этот метод и раньше мелькал в интернете и на мисте в том числе. Что-то вы уж слишком захвалили товарища из (8).
41 Serg_1960
 
24.05.17
09:56
(37) :) Алгоритм в п.28 ветки Добавление лидирующих нулей в номер документа - разбор на префикс, цифровую часть и суффикс.

(38) Смотрел, поэтому и сказал (36)

(40) Это в тебе зависть говорит :))
42 mishaPH
 
модератор
24.05.17
09:56
(36) а вот префкс можно и заменой сделать
43 Naf2017
 
24.05.17
09:58
(41) криво смотрел, там учитывается префикс и он обрубается как и положено
44 1dvd
 
24.05.17
10:01
(43) но не возвращается
45 Naf2017
 
24.05.17
10:03
(44) вот номер документа ИГ000004429, на печать выводится 4429
46 h-sp
 
24.05.17
10:06
47 Serg_1960
 
24.05.17
10:09
(43) Префикс не учитывается (игнорируется). Ещё раз повторить?
48 НЕА123
 
24.05.17
10:22
(8)+
БезПрефикса = СтрЗаменить(СокрЛ(СтрЗаменить(Номер,"0"," "))," ","0")

Префикс = Лев(Номер,Найти(Номер,"0")-1);
49 НЕА123
 
24.05.17
10:24
(48)+
эээ....
если ведущих нулей нет - не катит.
50 Serg_1960
 
24.05.17
10:25
(45) Наверное придётся всё-таки объясниться

Дело в том, что автор просил убрать лидирующие нули и ничего более. То, что нужно убрать префикс или сам номер нужен на печать без префикса и нулей - им ничего не было сказано, это наши предположения. Я, например, могу предположить что автор желает изменить длину номера. Почему бы нет?

ТС обрадовался уже озвученному алгоритму и ушёл довольным, но высока вероятность что он ещё вернётся. Поэтому я счёл нужным оставить замечание. И ничего более.
51 Wirtuozzz
 
24.05.17
10:26
(8) Класс!
52 Serg_1960
 
24.05.17
10:29
(49) В таком случае удали БезПрефикса из Номер - останется префикс :))
53 НЕА123
 
24.05.17
10:38
мда...
вариант для префикса, не содержащего цифры


перваяцифраНеНоль = 0;
Для к = 1 по 9 Цикл
  перваяцифраНеНоль = Макс(Найти(Номер,к),перваяцифраНеНоль);
КонецЦикла;

БезПрефикса = Сред(Номер,перваяцифраНеНоль);
Префикс= СтрЗаменить(СтрЗаменить(Номер,БезПрефикса,""),"0","");

ЗЫ
сложновато как-то получается.
54 НЕА123
 
24.05.17
10:42
(53)*
опять попутал.
перваяцифраНеНоль = 0;
Для к = 1 по 9 Цикл
  перваяцифраНеНоль = Макс(Найти(Номер,к),перваяцифраНеНоль);
КонецЦикла;



Если перваяцифраНеНоль=0 Тогда
  БезПрефикса = "";
Иначе
  БезПрефикса = Сред(Номер,перваяцифраНеНоль);
КонецЕсли



Префикс= СтрЗаменить(СтрЗаменить(Номер,БезПрефикса,""),"0","")
55 Serg_1960
 
24.05.17
11:39
Безвозмездно, то есть даром, вам дарю я свой гениальный   сумасшедший алгоритм :))

    Номер = "ПРФ-000102030"; Позиция = 0;
    Выполнить("Позиция = " + СтрЗаменить("Мин(" + СтрЗаменить(","+Найти(Номер,"0")+","+Найти(Номер,"1")+","+Найти(Номер,"2")+","+Найти(Номер,"3")+","+Найти(Номер,"4")+","+Найти(Номер,"5")+","+Найти(Номер,"6")+","+Найти(Номер,"7")+","+Найти(Номер,"8")+","+Найти(Номер,"9"), ",0", "")+");", "(,", "("));
    Номер = Лев(Номер,Позиция-1) + СтрЗаменить(СокрЛ(СтрЗаменить(Сред(Номер,Позиция),"0"," "))," ","0");
56 Serg_1960
 
24.05.17
11:43
(скромно) А ещё я умею вышивать крестиком...
57 Злопчинский
 
24.05.17
11:57
А чем (8) лучше простого строка(число(какойтономербезпрефикса))...?
58 Serg_1960
 
24.05.17
12:09
Да ни чем не лучше, чем банальное Формат(Число(Цифры), "ЧВН=...
Просто оригинально, лаконично, ну и "Народу нравится"(с)
59 Злопчинский
 
24.05.17
12:11
(58) то есть хочешь сказать что мусьи знают толк в извращеничх?
60 Злопчинский
 
24.05.17
12:11
Внимание! Вопрос к мужчинам! ! Вот такая ситуация. Вы лежите между девушкой вашей мечты и геем. К ко­му вы повернетесь сп­иной ? 
61 Serg_1960
 
24.05.17
12:15
(59) Йес ит ис.

(60) А тебе не всё ли равно?

- Доктор, у моего друга проблемы...
- Доставайте вашего друга, показывайте.
62 Злопчинский
 
24.05.17
12:18
(61)  по (60)
Ну не скажи... Надо быть готовым ко всяким ситуациям...
Как говорит мой сисадмин
Удача любит подготовленных
63 Aleksey
 
24.05.17
14:33
(60) Вариант встать, уйти и забрать с собой девушку не рассматривается?
64 Масянька
 
24.05.17
14:34
(60) Что такое "дилемма"? :)))))))))
65 Сияющий Асинхраль
 
24.05.17
15:00
(64) Это разве "дилемма"? Это скорее "маленький нюанс" :-)
66 Сияющий Асинхраль
 
24.05.17
15:02
(8) Хороший типовой алгоритм, частенько его использую, правда пишу обычно в пару строчек для легкости восприятия
67 Fish
 
24.05.17
15:02
(57) Тем, что не вывалится в ошибку при неудачном преобразовании в число.
68 Адинэснег
 
24.05.17
15:10
(36) а как же (23)
69 Лефмихалыч
 
24.05.17
15:24
^[\D|0]+
70 Serg_1960
 
24.05.17
17:32
(68) См.(50)
71 eryomin
 
24.05.17
18:28
(60) а зачем ты туда залез?
72 Волшебник
 
модератор
24.05.17
18:31
гомосятина пошла