К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

[Помнящим 7.7] Как определить !точно!, что Тип(Значение)=Дата?

0 - 13.02.2015 - 21:37
где Значение = "Пр0113в0льная Стр0ка"
ваши предложения?
ЗЫ
Код:
Если НЕ(Дата(Значение) = Дата(0)) Тогда
не всегда работает))



Гость
1 - 13.02.2015 - 21:38
ПустоеЗначение ?
Гость
2 - 13.02.2015 - 21:40
С датой вообще интересные дела - можно через нее получить любой объект конфигурации, а можно дату рождения Христа.
3 - 13.02.2015 - 21:43
(1)
это о чем?)
(2)
не зря тему завел...
Гость
4 - 13.02.2015 - 22:55
ТипЗначенияСтр() - не устраивает?
Или надо узнать, является ли строка текстовым представлением даты?
В последнем случае решение зависит от того, кто породил эту строку.
Если Умная Маша, то паснингом, проверяя все возможные заскоки ;)
5 - 13.02.2015 - 23:38
(4)
:))
ТипЗначенияСтр("Пр0113в0льная Стр0ка") = Строка

надо узнать, что значение - всегда действительное строковое представление даты, без "паснингом, проверяя все возможные заскоки", проще) так и каждый ду....

ЗЫ
никогда не доводилось сталкиваться с такими чудесами Дата() и попытками с ней)))
6 - 13.02.2015 - 23:47
(0) "Если НЕ(Дата(Значение) = Дата(0)) Тогда
не всегда работает))
" - а можно примеры этого "не всегда"?
7 - 13.02.2015 - 23:51
(6)
верный вопрос, пожалуйста - "3011 03809"
Гость
8 - 13.02.2015 - 23:55
а вот такой изврат не поможет?
Попытка
Если Дата(Значение) = РабочаяДата() Тогда
КонецЕсли;
Исключение
Сообщить("!");
КонецПопытки;
Гость
9 - 13.02.2015 - 23:57
ну т.е. если попытка сравнения не вызвало ошибку, то Значение - строковое представление даты
10 - 14.02.2015 - 00:01
(9)
просто попробуй с (7)
))
Гость
11 - 14.02.2015 - 00:07
10-user1C > мда... вот так бы и не знал, сколько вокруг опасностей))
12 - 14.02.2015 - 00:10
(11)
встретил и еще одно Значение сразу)) ужасть...
Гость
13 - 14.02.2015 - 00:23
12-user1C > Ты формат (представление) покажи, который на входе.
Тогда можно и функцию нарисовать.
И информация о том, чем/кем генерится, откуда берется это самое "на входе", тоже не помешает.
Гость
14 - 14.02.2015 - 00:24
Формат(Х,"ДДДММММГГГГ") ?
Гость
15 - 14.02.2015 - 00:25
Формат(Х,"ДДДММГГГГ")
16 - 14.02.2015 - 00:26
(13)
на входе:
Значение = см. (7)
на выходе:
это дата? = 1/0
17 - 14.02.2015 - 00:28
(14,15)
см (16)
Гость
18 - 14.02.2015 - 00:48
16-user1C > Зачем тебе на выходе булево? Лучше сразу получить дату. Потом сможешь как угодно преобразовать.
А такое, как в (7), "3011 03809", или "301103809" никак не дата: ни YYYYMMDD, ни DDMMYYYY, ни DDMMYY.
Первый не катит - год из далекого будущего (и пробел ни к селу, ни к городу), второй тоже никак (четыре цифры года не выбрать), третий (если выбросить дурацкий пробел), похоже на дату, если три последних символа выбросить. А можно окарнывать до 6-ти символов, так и не понятно, ибо неизвестен источник.
Еще раз: если источником является Умная Маша, то пусть сама правит то, что автоматически не распозналось. Ибо потом на тебя же и визжать будет, что ты хрень всякую записал. Данные испортил.
19 - 14.02.2015 - 00:53
(18)
мдя... в патетике нет необходимости, читаем сабж весь до (17)
надо... смоги)
20 - 14.02.2015 - 00:56
кстати, в (7) было ДВА пробела, там другая Дата() будет))
21 - 14.02.2015 - 01:09
Хм, похоже, что движок 1С весьма интересно парсит строку при ее преобразовании в дату:

1. Символы в 3-й и 6-й позициях считаются разделителями день-месяц-год, какие это символы - игнорируется
2. Пробел в позициях дня, месяца, года (1,2,4,5,7-10) интепретируется как "0", буквы - сразу отлуп "не дата!"
3. "Лишние" (после 10-й позиции) символы игнорируются.

Исходя их этого и надо писать код проверки да "датость", одной строчкой тут не обойдешься. И экспериментировать - глядишь, и еще что-то выплывет.
Гость
22 - 14.02.2015 - 01:32
Если НЕ(Дата(Значение) = Дата(0)) Тогда уволить программера
ЗЫ и поумней кого-нить взять
Гость
23 - 14.02.2015 - 07:24
22+ это я чего, вслух сказал?
Если ТипДата()=0 Тогда
24 - 14.02.2015 - 11:07
13-VZ > та на входе может быть все просто - предположим "назначение платежа" в платежке.
Я тоже как то раз давненько уже попыталась парсить эти назначения платежей. сломалась на строчке (именно вот так, без пробелов) "оплата по сч.00035 от31янв.15г." :)
Гость
25 - 14.02.2015 - 13:11
никуа ты сломалась в 2015 году, а че ты раньше в 95-м тогда делала?
Гость
26 - 14.02.2015 - 13:49
где Значение = "Пр0113в0льная Стр0ка" - там дату надо поискать в реквизитах дока, а не программеров будить
ЗЫ в 7.7 проведенных доков без даты не бывает - это фантастика
27 - 15.02.2015 - 00:30
(21)
хороший изыск провел, молодца! верно глаголишь...
кто бы смог без "одной строчкой тут не обойдешься." ;)
зы
с одной строкой чудеса творятся, бывает "строка_как_дата" <> "та_же_строка_как_дата")
(vah1)
по теме, пожалуйста
Гость
28 - 15.02.2015 - 00:40
27-user1C > по теме в понедельник заходи - не видишь люди бухают?
29 - 15.02.2015 - 00:43
(24)
тут еще проще, есть за что зацепиться)
"номер и дата счет-фактуры", местами перепутанные бывают...
30 - 15.02.2015 - 00:45
(28)
тебе это мешает? мне нет, сам сюда лучше не заходи))
см. (27)
Гость
31 - 15.02.2015 - 00:50
2(30) +1 +1 +1 +100 +1000 В общем меня можно понять.
32 - 15.02.2015 - 01:13
По-моему, не взлетит. К примеру, на основании (21): "1 а1 б2 3вг" - кто-нибудь в здравом уме может решить таким образом ввести дату 10.10.2003? А именно ее система "видит" в такой строке.
33 - 15.02.2015 - 01:20
(32)
пытался долбиться от обратного, см зы (27)
мистика...)
Гость
34 - 15.02.2015 - 08:46
После подобных "хитрожопых" решений появляются "НОУ-ХАУ", которые работают через раз,
И найти ошибку в них практически невозможно.......
Гость
35 - 17.02.2015 - 10:14
Сообщить(""+НачГода(ДДД));
где ДДД абсолютно ЛЮБОЙ объект ... и посмотри чо выдаст
36 - 17.02.2015 - 10:35
(35)
фигню выдаст, периодически... мимо)
Гость
37 - 17.02.2015 - 10:37
(36) что значит фигню ? простите вы хотели ДАТУ ? вот и при ДАТЕ выдаст дату ...
Гость
38 - 17.02.2015 - 10:39
+ а если подсовывать фигзнает что то собсно даты и не будет ...
39 - 17.02.2015 - 10:45
(37,38)
хех, ты ветку то внимательно читал??
держи "абсолютно ЛЮБОЙ объект = "2010443632965", для начала, поиграйся...))


К списку вопросов






Copyright ©, Все права защищены