|   |   | 
| 
 | Как вытащить из строки числовое значение? | ☑ | ||
|---|---|---|---|---|
| 0
    
        prilforreal 03.10.17✎ 08:51 | 
        Доброго утра! Интересует такой вопрос, есть реквизит материал с типом строка, выглядит как "Мат Стандарт 240-501" первые 3 цифры (в данном случае 240) - ширина полотна, каким образом можно вытащить их в отдельную переменную?     | |||
| 1
    
        1c-bs 03.10.17✎ 08:52 | 
        Парсить строку жеж!     | |||
| 2
    
        Филиал-msk 03.10.17✎ 08:56 | 
        Посимвольно. Цифра? Не... Цифра? Не... О, цифра-цифра-цифра... Не... Ну и ладно, вот число и набралось.     | |||
| 3
    
        Рэйв 03.10.17✎ 08:57 | 
        Строчка="чстото250-568,7899";
 числа="0123456789"; Кол=СтрДлина(Строчка); спДанные=Новый СписокЗначений; Ч=""; Для н=1 По кол Цикл Сим=Сред(Строчка,н,1); Сообщить(Сим); Если Найти(числа,Сим)>0 Тогда Ч=Ч+Сим; Иначе Если Ч<>"" Тогда спДанные.Добавить(Число(Ч)); Ч=""; КонецЕсли; КонецЕсли; КонецЦикла; Если Ч<>"" Тогда спДанные.Добавить(Число(Ч)); Ч=""; КонецЕсли; спДанные.ВыбратьЭлемент(); | |||
| 4
    
        Рэйв 03.10.17✎ 08:58 | 
        как пример     | |||
| 5
    
        prilforreal 03.10.17✎ 08:58 | 
        (1) Будьте добры, разъясните) (2) Какой функцией, в какой процедуре? Я прошу прощения в 1с еще далеко не асс, потому интересуюсь)     | |||
| 6
    
        Филиал-msk 03.10.17✎ 09:00 | 
        (5) Ну, это, в которой сам напишешь. Да.     | |||
| 7
    
        igorPetrov 03.10.17✎ 09:03 | 
        (0) Регулярные выражения, раз  в 1С не "асс".     | |||
| 8
    
        DES 03.10.17✎ 09:37 | 
        Перебирая последователь символы строки пока не встретишь цифру, кидай этот символ в другую переменную, пока не встретишь нецифру, потом пропуск одного символа, и опять кидаешь символы до конца строки в другую переменную
 Потом Ширина = Число(переменная1); | |||
| 9
    
        Serg_1960 03.10.17✎ 09:45 | 
        Эээ... включая режим дочерей офицеров "Здесь не всё так однозначно": автору нужно найти позицию символа "-" в строке и далее двигаясь к началу и к концу строки от этой позиции, собрать все символы в цифр в две переменных... вот как-то так для начала.     | |||
| 10
    
        Serg_1960 03.10.17✎ 09:48 | 
        * мда... "собрать все символы в цифр в две переменных" --> "собрать цифровые символы в две переменные"     | |||
| 11
    
        Волшебник модератор 03.10.17✎ 09:50 | 
        (5) пишется "ас"     | |||
| 12
    
        vis_tmp 03.10.17✎ 09:51 | 
        (11) Может, он имел в виду "ass"? )     | |||
| 13
    
        Пес Барбос 03.10.17✎ 09:53 | 
        Все зависит от того где встречается "ширина полотна", если это всегда в конце наименования материала, то я бы искал позицию первого пробела справа (НаправлениеПоиска.СКонца) и "резал" до конца строки. и потом уже ее от начала до "-".
 Если встречается в разных, то воспользовался бы РазложитьСтрокуВМассивПодстрок(...) и там бы уже искал строку с цифрами и снова "резал" от начала до "-" | |||
| 14
    
        Волшебник модератор 03.10.17✎ 09:54 | 
        (12) Это совсем другое слово :)     | |||
| 15
    
        Numerus Mikhail 03.10.17✎ 09:55 | 
        Делается в пару строк с помощью регулярки     | |||
| 16
    
        Serg_1960 03.10.17✎ 10:14 | 
        Регулярка хороша если выражения регулярные. А если встретится "Мат.Стандарт-12 240-501 (ширина 240,05)"? :))     | |||
| 17
    
        Базис naïve 03.10.17✎ 10:43 | 
        Не надо разбирать строку, храните в новом реквизите или свойстве.     | |||
| 18
    
        DES 04.10.17✎ 13:13 | 
        (16) он же определил формат строки
 (17) ага, а где взять это свойство если не из строки? | |||
| 19
    
        Fish гуру 04.10.17✎ 13:20 | 
        (18) "где взять это свойство если не из строки" - Вбить руками, конечно же :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |