|   |   | 
| 
 | Обрезать код номенклатуры | ☑ | ||
|---|---|---|---|---|
| 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     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |