|
удалить ненужные символы | ☑ | ||
---|---|---|---|---|
0
dvrk
20.07.21
✎
07:54
|
объясните на примере этого номера Р00000715
как из него удалить программно 5 нулей? |
|||
1
RomaH
naïve
20.07.21
✎
07:57
|
СтрЗаменить("Р00000715","00000","");
|
|||
2
dvrk
20.07.21
✎
07:58
|
(1) а если это нужно сделать для группы, то СтрЗаменить(Номер, "00000",""); ?
|
|||
3
Chai Nic
20.07.21
✎
08:00
|
Чтобы удалить ненужные символы, надо для начала формально уяснить, что является нужными. В вашем случае, скорее всего, это
- правая часть до группы нулей, упирающейся в префикс - собственно префикс А далее - типичная задача из школьного курса информатики. |
|||
4
Малыш Джон
20.07.21
✎
08:00
|
это пример того, как НЕ надо задавать вопросы)
|
|||
5
Малыш Джон
20.07.21
✎
08:01
|
(3) "Чтобы удалить ненужные символы, надо сначала добавить ненужные символы, а у нас места нет"
|
|||
6
dvrk
20.07.21
✎
08:01
|
(3) (5) то, Что я написал в (2) - удалить из номеров 5 нулей?
|
|||
7
dvrk
20.07.21
✎
08:02
|
удалит*
|
|||
8
Ненавижу 1С
гуру
20.07.21
✎
08:04
|
(6) вы решите так частный случай. И то неверно. Например неверно отработает номер Р00100000
|
|||
9
dvrk
20.07.21
✎
08:04
|
(8) у меня все номера вида A00000***
мне нужно их сделать а*** |
|||
10
Малыш Джон
20.07.21
✎
08:06
|
(9) а потом когда количество номеров перевалит за тысячу всё внезапно поломается?
|
|||
11
Ненавижу 1С
гуру
20.07.21
✎
08:07
|
(9) про зачем я даже спрашивать не хочу
|
|||
12
dvrk
20.07.21
✎
08:07
|
(11) не знаю.
|
|||
13
Ненавижу 1С
гуру
20.07.21
✎
08:09
|
(12) просто генерация кода ради неё самой?
|
|||
14
dvrk
20.07.21
✎
08:10
|
(13) +
|
|||
15
Antony8x
20.07.21
✎
08:11
|
(9) Тип номера число что ли?
|
|||
16
Тындр
20.07.21
✎
08:11
|
(9) Все возможно, например удалить нули слева: СтрЗаменить(СокрЛ(СтрЗаменить(Номер,"0"," "))," ","0")
Но, чтобы удалить еще и буквы слева, тут уже нужно немного больше кода. Даже может быть цикл нужен. Если у Вас слева всегда только одна буква и она первая, и это точно, то можно обойтись без цикла Лев(Номер,1)+СтрЗаменить(СокрЛ(СтрЗаменить(Сред(Номер,2),"0"," "))," ","0") |
|||
17
dubolom
20.07.21
✎
08:12
|
(9) Если всё именно такого вида, то
НовыйКод = "a" + Сред(СтарыйКод, 7) |
|||
18
Тындр
20.07.21
✎
08:13
|
+16 Ну и лучше чтобы номер при этом был уже с обрезаными по краям пробелами)
|
|||
19
Serg_1960
20.07.21
✎
08:17
|
(0) Программно? Во всех типовых конфигурация есть функция удаления префиксов и ведущих нулей из номера.
|
|||
20
Тындр
20.07.21
✎
08:17
|
(19) ага, нужно искать что-то типа НомерНаПечать(
|
|||
21
Chai Nic
20.07.21
✎
08:20
|
(20) И всегда быть готовым к тому, что эта функция внезапно перелетит из одного модуля в другой или переименуется. ОНИ это любят.
|
|||
22
Serg_1960
20.07.21
✎
08:29
|
PS: если решать вопрос в общем случае, то потребуется иметь, так или иначе, список всех префиксов, встречающихся в номерах.
|
|||
23
dvrk
20.07.21
✎
08:58
|
Для каждого Реал из Результат Цикл
Об = Реал.Ссылка.ПолучитьОбъект(); об.номер = " "+СтрЗаменить(об.номер, "00000", ""); об.записать(РежимЗаписиДокумента.Запись); КонецЦикла; почему не записывает? |
|||
24
Serg_1960
20.07.21
✎
09:28
|
(23) Вероятно <Результат> пустой; если <Реал> - это ссылка, то в строке <Реал.Ссылка.ПолучитьОбъект();> - ссылка по ссылки - это излишнее; как и начальный пробел номера в строке <об.номер = " "+СтрЗаменить(об.номер, "00000", "");>...
|
|||
25
Тындр
20.07.21
✎
09:29
|
(22) Не обязательно, можно изобрести велосипед и удалить все что не цифры. Ну если вдруг буквы могут быть в середине номера или в конце, то тогда придется сильнее извращаться
НовыйНомер = ""; Для сч=1 по СтрДлина(СтарыйНомер) Цикл Если Найти(Сред(СтарыйНомер,сч,1),"0123456789")>0 Тогда НовыйНомер = НовыйНомер+Сред(СтарыйНомер,сч,1); КонецЕсли; КонецЦИкла; //Почему у меня ощущение, что сегодня пятница? Хотя только вторник ( |
|||
26
dmt
20.07.21
✎
09:34
|
(23) уберегает тебя от проблем
|
|||
27
Малыш Джон
20.07.21
✎
09:36
|
(23) Потому что Результат - это у тебя скорее всего результат запроса(ну или выборка)
С ними не так работают |
|||
28
Serg_1960
20.07.21
✎
09:37
|
(25) Обязательно :( Если, например в номере ""Р01000715" префикс - "Р01"
|
|||
29
Малыш Джон
20.07.21
✎
09:41
|
(28) такого префикса не может быть. Ну то есть может конечно, но тогда такую базу лучше сжечь.
|
|||
30
dvrk
20.07.21
✎
09:42
|
(24) начальный пробел - одно из условие в задаче, дописал К об.записать(РежимЗаписиДокумента.Запись); параметр режимпроведениядокумента и записалось
|
|||
31
dvrk
20.07.21
✎
09:43
|
условий
|
|||
32
Serg_1960
20.07.21
✎
09:48
|
(29) Может быть всё гораздо хуже :) Особенности работы с "числовыми" префиксами - https://its.1c.ru/db/metod8dev/content/1562/hdoc
|
|||
33
vova1122
20.07.21
✎
09:49
|
(30) А как обработались номера до 100 (там по идее должно быть 6 нулей). И как обработплись номера тольше 1000 (там всего 4 нуля)
|
|||
34
Serg_1960
20.07.21
✎
09:52
|
(31) Да за такие "условия" вывести бы в чистое поле, поставить к стенке и расстрелять без права помилования.
|
|||
35
dvrk
20.07.21
✎
09:56
|
(33) ну, номера до 100 обрабатывались без меня, номеров после 1000 нет ещё
|
|||
36
Serg_1960
20.07.21
✎
09:58
|
(33) Ох, лучше не спрашивай. Тут тема на тему "Прощай автонумерация и здравый смысл" :)
|
|||
37
Малыш Джон
20.07.21
✎
10:16
|
(32) Хммм... А чем такой префикс отличается от просто номера, только начинается он не с 000000000, а с 800000000?
|
|||
38
vova1122
20.07.21
✎
10:28
|
(37) Так это был глюк платформы 8.1.5
|
|||
39
Serg_1960
20.07.21
✎
12:43
|
(37) Отличия будут заметны, например, когда появится ещё один префикс в базе. Например, "9" :)) - для механизма автонумерации пространство номеров у них различное - в разрезе префиксов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |