Имя: Пароль:
1C
1С v8
Как вытащить из строки числовое значение?
,
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) "где взять это свойство если не из строки" - Вбить руками, конечно же :)