|
Как надо написать условие? | ☑ | ||
---|---|---|---|---|
0
Niel
08.10.21
✎
23:23
|
Доброго времени суток. Пожалуйста, помогите. Как надо написать условие? У меня есть строковая переменная (допустим Текст). В нее попадают разные значения всегда это либо "АБВГДЕЁЖ" либо "20211008", то есть либо только буквы либо цифры, из которых можно сделать дату. Мне надо написать, ЕСЛИ ТЕКСТ-ЭТО ДАТА, то ДЕЙСТВИЕ1 ИНАЧЕ ДЕЙСТВИЕ2. Что надо написать после если? Как и где надо преобразовывать в дату, так чтобы не вылетала ошибка, что "Преобразование значения к типу Дата не может быть выполнено"?
|
|||
1
Волшебник
модератор
08.10.21
✎
23:26
|
Попытка...Исключение
|
|||
2
Ненавижу 1С
гуру
08.10.21
✎
23:26
|
Распарсить текст в дату по группам цифр. Если удалось - это дата
|
|||
3
Niel
08.10.21
✎
23:33
|
спасибо
|
|||
4
acht
08.10.21
✎
23:34
|
(1) Все бы вам пытаться и исключаться...
Сравнение с "00010101" и ОписаниеТипов.ПривестиТип https://its.1c.ru/db/v8std/content/499/hdoc пункт 3.8 |
|||
5
Niel
08.10.21
✎
23:44
|
(4) спасибо большое! очень познавательно.
|
|||
6
Garykom
гуру
08.10.21
✎
23:57
|
(4) что будет в Значение после кода ниже?
|
|||
7
acht
09.10.21
✎
00:10
|
(6) 0
|
|||
8
Garykom
гуру
09.10.21
✎
00:18
|
(7) и после
тоже 0? как минимум неудобно и нужна доп.проверка логично было бы Неопределено возвращать |
|||
9
Garykom
гуру
09.10.21
✎
00:19
|
(8)+ и надо сравнить по скорости с Попытка...Исключение на большом объеме что лучше
|
|||
10
серый КТУЛХУ
09.10.21
✎
00:30
|
для числа - доп.поверка на равенство строчного представления исходному значению.
правило зеркальной проверки корректности преобразования типов. |
|||
11
Garykom
гуру
09.10.21
✎
00:36
|
(10) о и тут прикол с числами, неразрывными пробелами и Формат() да?
|
|||
12
acht
09.10.21
✎
00:53
|
(11) Нет.
Уже давно "строковое представление анализируется как с учетом региональных установок информационной базы, так и без их учета." ЧислоСтрокой = Строка(1024); Сообщить(СтрДлина(ЧислоСтрокой)); Описание = Новый ОписаниеТипов("Число"); Число = Описание.ПривестиЗначение(ЧислоСтрокой); Сообщить(XMLСтрока(Число)); Выводит: 5 1024 |
|||
13
acht
09.10.21
✎
00:55
|
(9) При успешном преобразовании - одинаково. При промахе - исключение медленнее
|
|||
14
acht
09.10.21
✎
00:56
|
Я удивлен, что на GO это не так.
|
|||
15
Garykom
гуру
09.10.21
✎
00:57
|
(12) я про "доп.поверка на равенство строчного представления исходному значению"
и будет прикол что XMLСтрока(Число)<>"1024" |
|||
16
Garykom
гуру
09.10.21
✎
00:57
|
(15) тьфу Строка(Число)<>"1024"
|
|||
17
Garykom
гуру
09.10.21
✎
00:59
|
а юзать XMLСтрока вместо Формат идея да
|
|||
18
acht
09.10.21
✎
01:03
|
(15) На самом деле надо проверить ровно одно значение. Нулевое. Причем перед применением описания типов.
Ты, конечно, можешь впасть еще в рассуждения про "+0", "-0", "0.0" и.т.п |
|||
19
Garykom
гуру
09.10.21
✎
01:06
|
(18) нене в 1С этого нет в отличие от Java
|
|||
20
Garykom
гуру
09.10.21
✎
01:08
|
я просто удивился нелогичности функции ПривестиЗначение
как в случае составного тоже какой то изврат |
|||
21
Aleksey
09.10.21
✎
01:12
|
(11) или когда на входе что то типа 1,275.00 - с точки зрения человека это число 1275, с точки зрения машины это 1
|
|||
22
Garykom
гуру
09.10.21
✎
01:18
|
(21) а вот это к чему я пытался плавно подвести
что надо свой правильный парсер писать ибо готового в котором можно указать некий шаблон нету же? |
|||
23
skafandr
09.10.21
✎
08:31
|
Извините что вмешиваюсь в высокотехнологичные споры, но
если ТЗ в (0) сформулировано точно, то достаточно Если Лев(Текст,1) ="2" Тогда |
|||
24
Niel
09.10.21
✎
09:59
|
всем огромное спасибо
|
|||
25
GANR
09.10.21
✎
11:21
|
СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |