|
Как получить число из кода клиента? | ☑ | ||
---|---|---|---|---|
0
tabarigen
09.04.18
✎
10:38
|
РИБ.
Есть коды клиента 00-001189, 00-000078 Как из них получить числа 189 и 78?? |
|||
1
shuhard
09.04.18
✎
10:39
|
(0) нанять программиста (с)
|
|||
2
bolobol
09.04.18
✎
10:40
|
Число(Прав(3))
|
|||
3
Ц_У
09.04.18
✎
10:42
|
МассивЧастей = СтрРазделить("00-001189","",Истина);
КодКлиента = Число(МассивЧастей[1]); Почему 189? |
|||
4
Connect
09.04.18
✎
10:43
|
(2) Опередил. Хотя, не ясна задача. Формат кода. Всегда такой? Критерии извлечения нужны.
http://catalog.mista.ru/public/64222/ |
|||
5
bolobol
09.04.18
✎
10:46
|
(3) ТАк-то если, то можно и:
Если = "00-001189" Тогда 189 ИначеЕсли = "00-000078" Тогда 78 |
|||
6
skafandr
09.04.18
✎
10:48
|
(5)Шикарно,сделал мой день :)
|
|||
7
SleepyHead
гуру
09.04.18
✎
10:48
|
(0)
ПрефиксацияОбъектоКлиентСервер.УдалитьЛидирующиеНулиИзНомераОбъекта(ПрефиксацияОбъектовКлиентСервер.УдалитьПрефиксыИзНомераОбъекта(ИсходныйНомерСНулямиИПрочимиБезобразиями,Истина, Истина)) |
|||
8
Connect
09.04.18
✎
10:48
|
Строку в число перевести. Нулики уже уйдут. А почему из 1189 нужно 189, хз. Может, строго, последние три цифры? Тогда (2).
|
|||
9
Connect
09.04.18
✎
10:49
|
(7) БН доволен. =)
|
|||
10
SleepyHead
гуру
09.04.18
✎
10:50
|
(9) Ну есть же методы общих модулей для решения этой задачи, его извращаться-то. Я мог и по-другому написать, но автор темы должен страдать в наказание за лень.
|
|||
11
Connect
09.04.18
✎
10:51
|
Можно, конечно, после перевода строки в число, опять перевести в строку, и посчитать кол-во символов оставшихся в переменную $A. А потом Число(Прав($A)). Ну или не переводить в строку обратно, а включить простую арифметику.
|
|||
12
Connect
09.04.18
✎
10:52
|
(10) Согласен. Не описавшие конкретики задачи должны страдать.
|
|||
13
bolobol
09.04.18
✎
10:57
|
(7) Ухты, пригодилось, надо же!
|
|||
14
Fish
09.04.18
✎
11:12
|
Код в (5) прекрасен и изящен :)
|
|||
15
tabarigen
09.04.18
✎
11:13
|
(2) лойс))
функцию Прав() не мог вспомнить |
|||
16
Connect
09.04.18
✎
11:17
|
(14) Да.
ИначеЕсли ... 8 Иначе Неопределено; |
|||
17
Куникулус
09.04.18
✎
11:27
|
Функция СделатьЦифру(СтрЗнач)
НовСТр= ""; УдалятьЛидирующиеНули = Истина; Для ном =1 По СтрДлина(СтрЗнач) Цикл ТекСимв = Сред(СтрЗнач, Ном,1); КодТекСимв = КодСимвола(ТекСимв); Если КодТекСимв>=48 или КодТекСимв<=57 Тогда Продолжить; КонецеСли; Если ТекСимв = "0" и УдалятьЛидирующиеНули Тогда Продолжить; Иначе УдалятьЛидирующиеНули = Ложь; КонецеСли; НовСТр = НовСТр +ТекСимв; КонецЦИкла; Попытка РезультЧисло = Число(НовСТр); Исклоючение РезультЧисло = 0; КонецеСЛи; Возврат РезультЧисло; КонецФункции |
|||
18
Куникулус
09.04.18
✎
11:28
|
(17) +
КодТекСимв>=48 или КодТекСимв<=57 заменить на КодТекСимв>=48 и КодТекСимв<=57 |
|||
19
Fish
09.04.18
✎
11:28
|
(17) Не сработает.
|
|||
20
Куникулус
09.04.18
✎
11:30
|
(18) КодТекСимв>=48 или КодТекСимв<=57
заменить на КодТекСимв>=48 и КодТекСимв<=57 заменить на не (КодТекСимв>=48 и КодТекСимв<=57) |
|||
21
Куникулус
09.04.18
✎
11:30
|
(19) Обоснуй
|
|||
22
Куникулус
09.04.18
✎
11:32
|
(20) Исклоючение
РезультЧисло = 0; КонецеСЛи; Заменить на Исключение РезультЧисло = 0; КонецПопытки; |
|||
23
bolobol
09.04.18
✎
11:36
|
(17) Многа букв, ниасилил. Если кратко, в чём там суть?
|
|||
24
SleepyHead
гуру
09.04.18
✎
12:41
|
(23) Изобретение велосипеда с черным джеком и озорными девушками.
|
|||
25
Connect
09.04.18
✎
12:56
|
Что мне Эйлер вспомнился? Зачем? Блин же, совсем другая степь...
|
|||
26
zwei
09.04.18
✎
13:37
|
(17),(18),(20),(22) Истинный 1Сник - семь раз хуяк, один раз в продакшн... Авось заработает.
|
|||
27
Fish
09.04.18
✎
13:40
|
(21) А что обосновывать? Твой код после всех правок из "00-001189" сделает "1189", а у автора в (0) написано, что надо "189".
|
|||
28
Малыш Джон
09.04.18
✎
13:45
|
(27) скорее всего опечатка)
(0) мой БД+Ш: СтрЗаменить(СокрЛ(СтрЗаменить(СтрЗаменить(ИсходныйКод,"0", " "),"-"," "))," ","0"); :) |
|||
29
Connect
09.04.18
✎
13:47
|
И всё таки я бы предпочел не магию одноразовую, а постичь суть задачи. Там и понять, как по человечески реализовать.
|
|||
30
Fish
09.04.18
✎
13:57
|
(28) А если попадётся префикс с пробелом? :)
|
|||
31
Малыш Джон
09.04.18
✎
13:59
|
(30) все предусмотрено) он потеряется среди прочих и благополучно сократится
|
|||
32
Малыш Джон
09.04.18
✎
14:01
|
+(31) вот префикс с буквой - это да...
но в исходной задаче таких условий ведь и не стояло |
|||
33
Connect
09.04.18
✎
14:04
|
https://www.forum.mista.ru/topic.php?id=481725
Не совсем по сабжу, но таки всё же =) |
|||
34
Малыш Джон
09.04.18
✎
14:19
|
Вот он, универсальный вариант :)
КодЧисло = 0; Пока СтрДлина(ИсходныйКод)>0 Цикл Попытка КодЧисло = Число(ИсходныйКод); Исключение ИсходныйКод = Сред(ИсходныйКод,2); КонецПопытки; КонецЦикла; |
|||
35
dezss
09.04.18
✎
14:31
|
(34) вечный цикл детектед, если там есть хоть одна цифра в конце)))
|
|||
36
dezss
09.04.18
✎
14:32
|
(35) + после
КодЧисло = Число(ИсходныйКод); надо написать Прервать; |
|||
37
Малыш Джон
09.04.18
✎
14:39
|
(35) точняяяяяяк
|
|||
38
bolobol
09.04.18
✎
15:02
|
Перепись адинэснегоф...
|
|||
39
tabarigen
09.04.18
✎
16:10
|
(28) так и есть опечатка. нужно 1189
|
|||
40
tabarigen
09.04.18
✎
16:11
|
вообще ответ в (2)
что вы тут базар устроили)) |
|||
41
Малыш Джон
09.04.18
✎
17:39
|
(40) не хочу расстраивать, но если в (0) опечатка и нужно 1189, то ответ не в (2)
|
|||
42
Мимохожий Однако
09.04.18
✎
17:55
|
(41) ОФФ: Не спугни
|
|||
43
Ц_У
09.04.18
✎
18:26
|
(41) угу в (3)
|
|||
44
Малыш Джон
09.04.18
✎
18:37
|
(43) а какой в (3) разделитель?
|
|||
45
Ц_У
09.04.18
✎
18:39
|
(44) ну косяк, да :)
|
|||
46
Лефмихалыч
09.04.18
✎
19:05
|
(0) надо перестать хотеть эту херню делать.
Зачем? |
|||
47
Сияющий в темноте
09.04.18
✎
19:37
|
Интересно,а 00-000189 и 01-000189 оба дадут 189,никого это не пугает?
|
|||
48
Лефмихалыч
09.04.18
✎
20:57
|
(47) гораздо интересней, что будет, когда алгоритм посетит вот такой
ПЕ001-006/СТЕ12/ц1 |
|||
49
Connect
09.04.18
✎
21:32
|
(48) 189. Колдуну не ходи.
|
|||
50
tabarigen
09.04.18
✎
22:18
|
(41) почему же??
это код справочника контрагенты. его заводят только в центральной базе РИБ. в переферии нет ни у кого прав на него. Чем же меня не устраивает ответ из (2) |
|||
51
tabarigen
09.04.18
✎
22:19
|
(47) в моем случае это условие можно опустить. контрагенты будут создаваться только в ЦБ, как уже было сказано выше.
код же мне нужно чтоб создать прайс в папке контрагента на фтп |
|||
52
Малыш Джон
09.04.18
✎
22:24
|
(50) Видишь ли, в чем дело... функция Прав() работает одинаково, независимо от того, в какой базе заводят код...
|
|||
53
Connect
09.04.18
✎
22:36
|
(51) А может оставим уже несчастный код в покое?
https://ru.wikipedia.org/wiki/Артикул У меня были лузеры, любили править код, да так, что никакие префиксы/объяснения не помогали. Я убрал, визуально, этот системный код везде, и сделал дополнительный реквизит - _Код. |
|||
54
Tateossian
10.04.18
✎
02:02
|
Откройте для себя божественные регулярки. Алгоритмический парсинг строк - это уровень джуниора.
|
|||
55
vJet
10.04.18
✎
03:11
|
(54) Поддерживаю, вот так "-(\d+)" все замечательно извлечется. Мне уже лень парсить строки без регулярных выражений. Хотя другие плюются.
|
|||
56
Сияющий в темноте
10.04.18
✎
09:16
|
Регулярки заканчиваются,когда есть несколько вариантов
в общем случае,парсинг,это дерево условий,следуя по которому мы находим результат,если дерево превращается в граф,то применение регулярных выражений только усложняет парсинг |
|||
57
bolobol
10.04.18
✎
09:28
|
(55) Никогда не понимал эту тень от хрена... Что ты с чем тут сложил разделив? Кто тебя поймёт?
|
|||
58
vJet
10.04.18
✎
10:15
|
(57) Эта конструкция означает "Дай мне все цифры после символа -
Рекомендую поигратся здесь https://regexr.com/ задав в поле expression это -(\d+)\w+ а в поле Text данные из (0) |
|||
59
bolobol
10.04.18
✎
10:26
|
(58) ПОКА 47 < КОДСимв(Сред(Найти(-)) < 57 ЦИКЛ - это и то понятнее, чем то что ты написал. И, самое главное, этот код поймёт та среда разработки, которую мы здесь используем. Тебя кто поймёт? Некий сайт? Или как?
|
|||
60
zwei
10.04.18
✎
10:28
|
(54) Проверь мне электропочту на соответствие RFC, плз.
|
|||
61
vJet
10.04.18
✎
10:42
|
(59) У меня это будет выгрядеть примерно так:
Меня поймет тот кто знаком с регулярными выражениями. Технология совсем не сложна в освоении при этом очень облегчает парсинг строк. |
|||
62
zwei
10.04.18
✎
10:44
|
(61) А ты попробуй разобрать например, html.
|
|||
63
vJet
10.04.18
✎
10:50
|
(62) Зависит от задачи, собрать DOM не получится а вот извлечь нужные данные вполне.
|
|||
64
Deon
10.04.18
✎
10:52
|
(61) В этой функции подкючается ком-объект?
|
|||
65
Serg_1960
10.04.18
✎
10:54
|
(0) Прикалываясь, но это "рабочий" код :)
КодСимволами = "00-001189"; КодЧислом = 0; Выполнить("КодЧислом = -1 * (" + КодСимволами + ");"); Сообщить(КодЧислом); // 1 189 |
|||
66
bolobol
10.04.18
✎
10:54
|
(61) Да, где текст самой функции? И мы про 1С тут беспокоимся
|
|||
67
zwei
10.04.18
✎
11:09
|
(63) Ок. Есть строка с вложенными тегами, например
<span>text</span><span>text<span>text</span></span> Вложенность может меняться, могут попадатся теги <br/>. Извлеки, пожалуйста, текст. Регэкспами. |
|||
68
tabarigen
11.04.18
✎
13:17
|
Функция ЧислоСправа(Стр, К = 0)
Возврат ?(Цел(КодСимвола(Прав("!" + Стр, К + 1)) / 5 - 10.5), Формат(Число("0" + Прав(Стр, К)), "ЧГ="), ЧислоСправа(Стр, К + 1)) КонецФункции |
|||
69
tabarigen
11.04.18
✎
13:17
|
Функция ЧислоСправа1(Номер)
Возврат Формат(Число("0" + Сред(Номер, СтрДлина(СокрП( СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Номер , "0", " "), "1", " "), "2", " "), "3", " "), "4", " "), "5", " "), "6", " "), "7", " "), "8", " "), "9", " "))) + 1)), "ЧГ=") КонецФункции |
|||
70
tabarigen
11.04.18
✎
13:17
|
на инфостарте подсмотрел. может кому пригодится
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |