|
Обрезать код номенклатуры | ☑ | ||
---|---|---|---|---|
0
fury21
17.09.15
✎
10:28
|
Здр!
Помогите обрезать код номенклатуры. Сейчас формат может быть или ГА-00000691 или 00-00000012 (ГА или 00) спереди. Для выгрузки на сайт нужно удалить спереди первые 3 символа и все нули, так, что бы остались только цифры начиная с 1 и до 9. Т.е. из 00-00000012 сделать просто "12", а из ГА-00000691 сделать "691". Кол-во нулей спереди разное всегда. https://yadi.sk/i/SYMLKimDj96Fx Спасибо! |
|||
1
Molinor
17.09.15
✎
10:30
|
Сред(), Формат()
|
|||
2
Апош
17.09.15
✎
10:31
|
+(1) получить номер на печать, спинной мозг
|
|||
3
Fedor-1971
17.09.15
✎
10:34
|
Вариант Число(сред(Номер,4)) - только если дальше попадутся буквы - будет ошибка
|
|||
4
НЕА123
17.09.15
✎
10:56
|
ОбрезанныКод = Формат(Число(СтрПолучитьСтроку(СтрЗаменить(Код,"-",Символы.ПС),2)),"ЧГ=");
|
|||
5
ssh-2013
17.09.15
✎
10:58
|
(0) Универсально можно сделать так: цикл перебора символов начиная с конца строки к началу. Как только встречается первое не число цикл прервать и Формат(Число()) от того что получено в цикле.
Проверить на цифру можно например так: Если Найти("0123456789", ТекСимвол) > 0 |
|||
6
Serg_1960
17.09.15
✎
10:58
|
(0) "Кол-во нулей спереди разное всегда" - зато длина кода - число постоянное. Намёк понят?
|
|||
7
Nuobu
17.09.15
✎
11:00
|
(2) +1
|
|||
8
Serg_1960
17.09.15
✎
11:04
|
(5) Перебор с начала к концу ни чем не хуже (подначил)
"Написать алгоритм сложнее всегда проще, чем наоборот"(я) (7) Не плюсуй. В типовой функции из документа номер (а не код из справочника). Переделывать нет смысла. |
|||
9
Serg_1960
17.09.15
✎
11:12
|
Типовая функция из типовой конфигурации - выделение числа из строки, где число - в начале строки:
Функция ВыделитьЧислоИЗСтроки(СтрокаСимволов) Набор = "0"; Для Индекс = 1 По СтрДлина(СтрокаСимволов) Цикл Если КодСимвола(СтрокаСимволов, Индекс) >= 48 И КодСимвола(СтрокаСимволов, Индекс) <= 57 Тогда Набор = Набор + Сред(СтрокаСимволов, Индекс, 1); Иначе Прервать; КонецЕсли; КонецЦикла; Возврат Число(Набор); КонецФункции |
|||
10
ssh-2013
17.09.15
✎
11:14
|
(8) > Перебор с начала к концу ни чем не хуже
поделись вариантом |
|||
11
fury21
17.09.15
✎
11:16
|
Как то все сложно. Первые 3 символа можно просто отрезать, а потом убрать все нули. Как удалить именно нули спереди? И как этот код потом вставить в выгрузку? https://yadi.sk/i/SYMLKimDj96Fx
|
|||
12
Serg_1960
17.09.15
✎
11:19
|
(10) Функция, аналогичная (9), но число - в конце строки:
Функция ВыделитьИзСтрокиЧисло(СтрокаСимволов) Набор = "0"; Для Индекс = 1 По СтрДлина(СтрокаСимволов) Цикл Если КодСимвола(СтрокаСимволов, Индекс) >= 48 И КодСимвола(СтрокаСимволов, Индекс) <= 57 Тогда Набор = Набор + Сред(СтрокаСимволов, Индекс, 1); Иначе Набор = "0"; КонецЕсли; КонецЦикла; Возврат Число(Набор); КонецФункции |
|||
13
Serg_1960
17.09.15
✎
11:23
|
(11) Не читатель? См.(3) - преобразование в число "отрезает" ведущие нули.
|
|||
14
ssh-2013
17.09.15
✎
11:25
|
(12) если префикс будет "01-" ?
Может у него такого и нет, (5) в этом смысле более универсально |
|||
15
Апош
17.09.15
✎
11:26
|
(11) >Как то все сложно
дело в том, что программирование предполагает наличие мозга. в данной задаче ну хоть какого-нибудь |
|||
16
fury21
17.09.15
✎
11:27
|
Если в самом начале отрезать первые 3 символа то останутся только цифры
|
|||
17
ssh-2013
17.09.15
✎
11:28
|
(11) > Как то все сложно.
( |
|||
18
Ildarovich
17.09.15
✎
11:28
|
Вот вариант без преобразования в число:
СтрЗаменить(СокрЛ(СтрЗаменить(Сред(Код, 4), "0", " ")), " ", "0") |
|||
19
Serg_1960
17.09.15
✎
11:29
|
(14) А ты проверь (12). Встретив "-" набор будет сброшен в ноль и продолжен далее.
|
|||
20
ssh-2013
17.09.15
✎
11:32
|
(19) ок
|
|||
21
Апош
17.09.15
✎
11:35
|
(18) во что оно превратит "мама родная"?
|
|||
22
Nuobu
17.09.15
✎
11:36
|
(21) В ноль
|
|||
23
Fedor-1971
17.09.15
✎
11:37
|
(21) в "а0родная"
|
|||
24
Апош
17.09.15
✎
11:38
|
(22) а правильно было бы в ноль, да
|
|||
25
Serg_1960
17.09.15
✎
11:39
|
(21) Оно маму родную превращает в абракадабру :)
|
|||
26
fury21
17.09.15
✎
13:55
|
Преобразование в число добавляет к коду пробел на каждую тысячу (вместо 1180 пишет 1 180). Как обратно в строку преобразовать?
|
|||
27
ДенисЧ
17.09.15
✎
13:56
|
"Преобразование в число добавляет к коду пробел"
Ничего никуда не добавляет. А если кому добавляет - могу продать резиновую киянку. Для рихтования рук. |
|||
28
Апош
17.09.15
✎
13:56
|
(26) форматом
|
|||
29
Апош
17.09.15
✎
13:57
|
кстати, да. сколько получается после добавления?
|
|||
30
fury21
17.09.15
✎
14:34
|
При таком коде СтрЗаменить(Строка(Число(Сред(Номенклатура.код, 4))), " ", "")
в выгрузку попадает <Артикул>1 108</Артикул> А мне пробел этот не нужен, как его убрать? |
|||
31
НЕА123
17.09.15
✎
14:45
|
(30)
давай до завтра оставим. |
|||
32
fury21
17.09.15
✎
14:50
|
В итоге вот такая строка решила проблему, всем спасибо Формат(Число(Сред(Номенклатура.код, 4)), "ЧГ=")
Нужно ли ее обратно в строку переводить? |
|||
33
ДенисЧ
17.09.15
✎
14:51
|
(32) Ты, главное, не читай справку...
Особенно пояснения по возвращаемому функцией типу значения... |
|||
34
НЕА123
17.09.15
✎
14:51
|
2 (32)
(31)+1 |
|||
35
dka80
17.09.15
✎
15:42
|
УниверсальныйПодборИОбработкаОбъектов.epf
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |