Имя: Пароль:
1C
 
Обработка ошибки преобразования Строки в Число?
0 Bobroff
 
27.07.06
16:30
Есть функция преобразования строки в число, например: ПрЧисло=Число(ПрСтрока). Если ПрСтрока содержить числовые символы, то всё ОК. Но, если ПрСтрока содержит другие символы, то вылезает ошибка. Как до преобразования Число(ПрСтрока) проверить ПрСтрока на наличие только чиловых символов?

Заранее, спасибо...
1 ТелепатБот
 
гуру
27.07.06
16:30
2 Bobroff
 
27.07.06
16:30
(1) - не то...
3 MikleV
 
27.07.06
16:33
самые дебильные варианты.. 1.попытка- искючение..
2. сверка по кодам символов.
4 х86
 
27.07.06
16:33
(3)+
удали все числовые символы, и
если СокрЛП(Результат) <> "" тогда
  ....
5 marvak
 
27.07.06
16:35
можно так
   Попытка
       мЧисло = Число(Реквизит1);
   Исключение
       СообщитьОбОшибке("!!!");
       возврат;
   КонецПопытки;
   
   Сообщить(мЧисло);
6 Bobroff
 
27.07.06
16:46
(3) - а почему попытка- искючение плохой вариант? попробовал, работает...
7 MikleV
 
27.07.06
16:47
(6) они оба дебильные потому что некрасивые)) наверняка есть решение лучше.. если хорошо подумать.. но мине чего то уже не думается.
8 Andrey_spb
 
27.07.06
16:52
Например поиск по маске...
9 marvak
 
27.07.06
16:53
(7) в чем некрасивость? коротко, ясно.
кстати, имхо других вариантов, кроме этих двух и нет.
не надо искать замороченных решений простых задач
10 Bobroff
 
27.07.06
16:54
Написал вот так:

Попытка
   ПроверкаЧисло=Число(ЭлементыФормы.Номер.Значение);
Исключение
   Предупреждение("Номер врача содержит недопустимые символы", 0, "ОШИБКА");
   Возврат;
КонецПопытки;

Всё ОК.

Только как строку "Номер врача содержит недопустимые символы" разбить, чтобы она выводилась в две строки, а не в одну?
11 Andrey_spb
 
27.07.06
16:55
Символы.ВК
12 marvak
 
27.07.06
16:56
(10)
Стр = "Номер врача содержит
|недопустимые символы";
Предупреждение(Стр);
13 Andrey_spb
 
27.07.06
16:57
(12) или так...
14 х86
 
27.07.06
16:58
(0) старайся такого не допускать. Пиши так чтоб у тебя переменная была или число или строка
15 Bobroff
 
27.07.06
16:58
...thanks...
16 Bobroff
 
27.07.06
16:59
(14) не получаеться, т.к. число в виде строки передаёться в Запрос в Параметр ПОДОБНО для сравнения...
17 Andrey_spb
 
27.07.06
17:02
Вот ещё вариант интересный:
RegExp=Новый COMОбъект("VBScript.RegExp");
       RegExp.MultiLine=Ложь;
       RegExp.Global=Ложь;
       RegExp.IgnoreCase=Истина;
       RegExp.Pattern="[^0-9]";
Если RegExp.Test(Строка) Тогда
// не число
КонецЕсли;
18 Bobroff
 
27.07.06
17:05
(17) - это для меня пока сложновато... не изучал ещё Com-Объекты...
19 Andrey_spb
 
27.07.06
17:08
(18) напрасно... много интересного...
20 MikleV
 
27.07.06
17:10
(17) круть.)
21 Bobroff
 
27.07.06
17:12
(19) - скоро дойду, пока просто не требуеться...