|
Убрать нули в номере слева (шедевр в 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
|
(41) https://yandex.ru/search/?text=убрать%20левые%20нули%20в%20номере%201с&lr=10752&clid=1989598
вторая ссылка, пост 23. 2009й год |
|||
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
|
гомосятина пошла
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |