Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   [Помнящим 7.7] Как определить !точно!, что Тип(Значение)=Дата? (http://forums.kuban.ru/f1040/%5Bpomnyashim_7_7%5D_kak_opredelit-_tochno_chto_tip_znachenie_%3Ddata-6511078.html)

user1C 13.02.2015 21:37

[Помнящим 7.7] Как определить !точно!, что Тип(Значение)=Дата?
 
где Значение = "Пр0113в0льная Стр0ка"
ваши предложения?
ЗЫ
[code]Если НЕ(Дата(Значение) = Дата(0)) Тогда[/code]
не всегда работает))

smaharbA 13.02.2015 21:38

ПустоеЗначение ?

smaharbA 13.02.2015 21:40

С датой вообще интересные дела - можно через нее получить любой объект конфигурации, а можно дату рождения Христа.

user1C 13.02.2015 21:43

(1)
это о чем?)
(2)
не зря тему завел...

VZ 13.02.2015 22:55

ТипЗначенияСтр() - не устраивает?
Или надо узнать, является ли строка [b]текстовым представлением[/b] даты?
В последнем случае решение зависит от того, кто породил эту строку.
Если Умная Маша, то паснингом, проверяя все возможные заскоки ;)

user1C 13.02.2015 23:38

(4)
:))
ТипЗначенияСтр("Пр0113в0льная Стр0ка") = Строка

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

ЗЫ
никогда не доводилось сталкиваться с такими чудесами Дата() и попытками с ней)))

Ткачик 13.02.2015 23:47

(0) "[em]Если НЕ(Дата(Значение) = Дата(0)) Тогда
не всегда работает))[/em]" - а можно примеры этого "не всегда"?

user1C 13.02.2015 23:51

(6)
верный вопрос, пожалуйста - "3011 03809"

ADV 13.02.2015 23:55

а вот такой изврат не поможет?
Попытка
Если Дата(Значение) = РабочаяДата() Тогда
КонецЕсли;
Исключение
Сообщить("!");
КонецПопытки;

ADV 13.02.2015 23:57

ну т.е. если попытка сравнения не вызвало ошибку, то Значение - строковое представление даты

user1C 14.02.2015 00:01

(9)
просто попробуй с (7)
))

ADV 14.02.2015 00:07

10-user1C > мда... вот так бы и не знал, сколько вокруг опасностей))

user1C 14.02.2015 00:10

(11)
встретил и еще одно Значение сразу)) ужасть...

VZ 14.02.2015 00:23

12-user1C > Ты формат (представление) покажи, который на входе.
Тогда можно и функцию нарисовать.
И информация о том, чем/кем генерится, откуда берется это самое "на входе", тоже не помешает.

smaharbA 14.02.2015 00:24

Формат(Х,"ДДДММММГГГГ") ?

smaharbA 14.02.2015 00:25

Формат(Х,"ДДДММГГГГ")

user1C 14.02.2015 00:26

(13)
на входе:
Значение = см. (7)
на выходе:
это дата? = 1/0

user1C 14.02.2015 00:28

(14,15)
см (16)

VZ 14.02.2015 00:48

16-user1C > Зачем тебе на выходе булево? Лучше сразу получить дату. Потом сможешь как угодно преобразовать.
А такое, как в (7), "3011 03809", или "301103809" никак не дата: ни YYYYMMDD, ни DDMMYYYY, ни DDMMYY.
Первый не катит - год из далекого будущего (и пробел ни к селу, ни к городу), второй тоже никак (четыре цифры года не выбрать), третий (если выбросить дурацкий пробел), похоже на дату, если три последних символа выбросить. А можно окарнывать до 6-ти символов, так и не понятно, ибо неизвестен источник.
Еще раз: если источником является Умная Маша, то пусть сама правит то, что автоматически не распозналось. Ибо потом на тебя же и визжать будет, что ты хрень всякую записал. Данные испортил.

user1C 14.02.2015 00:53

(18)
мдя... в патетике нет необходимости, [b]читаем сабж [u]весь [/u]до (17)[/b]
надо... смоги)

user1C 14.02.2015 00:56

кстати, в (7) было ДВА пробела, там другая Дата() будет))

Ткачик 14.02.2015 01:09

Хм, похоже, что движок 1С весьма интересно парсит строку при ее преобразовании в дату:

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

Исходя их этого и надо писать код проверки да "датость", одной строчкой тут не обойдешься. И экспериментировать - глядишь, и еще что-то выплывет.

vah1 14.02.2015 01:32

Если НЕ(Дата(Значение) = Дата(0)) Тогда уволить программера
ЗЫ и поумней кого-нить взять

vah1 14.02.2015 07:24

22+ это я чего, вслух сказал?
Если ТипДата()=0 Тогда

Блондинка в шок 14.02.2015 11:07

13-VZ > та на входе может быть все просто - предположим "[em]назначение платежа[/em]" в платежке.
Я тоже как то раз давненько уже попыталась парсить эти назначения платежей. сломалась на строчке (именно вот так, без пробелов) "[em]оплата по сч.00035 от31янв.15г.[/em]" :)

vah1 14.02.2015 13:11

никуа ты сломалась в 2015 году, а че ты раньше в 95-м тогда делала?

vah1 14.02.2015 13:49

где Значение = "Пр0113в0льная Стр0ка" - там дату надо поискать в реквизитах дока, а не программеров будить
ЗЫ в 7.7 проведенных доков без даты не бывает - это фантастика

user1C 15.02.2015 00:30

(21)
хороший изыск провел, молодца! верно глаголишь...
кто бы смог без "[em]одной строчкой тут не обойдешься.[/em]" ;)
зы
с одной строкой чудеса творятся, бывает "строка_как_дата" <> "[b]та_же[/b]_строка_как_дата")
(vah1)
по теме, пожалуйста

vah1 15.02.2015 00:40

27-user1C > по теме в понедельник заходи - не видишь люди бухают?

user1C 15.02.2015 00:43

(24)
тут еще проще, есть за что зацепиться)
"[em]номер и дата счет-фактуры[/em]", местами перепутанные бывают...

user1C 15.02.2015 00:45

(28)
тебе это мешает? мне нет, сам сюда лучше не заходи))
см. (27)

Morrison 15.02.2015 00:50

2(30) +1 +1 +1 +100 +1000 В общем меня можно понять.

Ткачик 15.02.2015 01:13

По-моему, не взлетит. К примеру, на основании (21): "1 а1 б2 3вг" - кто-нибудь в здравом уме может решить таким образом ввести дату 10.10.2003? А именно ее система "видит" в такой строке.

user1C 15.02.2015 01:20

(32)
пытался долбиться от обратного, см зы (27)
мистика...)

Umga2002 15.02.2015 08:46

После подобных "хитрожопых" решений появляются "НОУ-ХАУ", которые работают через раз,
И найти ошибку в них практически невозможно.......

101 17.02.2015 10:14

Сообщить(""+НачГода(ДДД));
где ДДД абсолютно ЛЮБОЙ объект ... и посмотри чо выдаст

user1C 17.02.2015 10:35

(35)
фигню выдаст, периодически... мимо)

101 17.02.2015 10:37

(36) что значит фигню ? простите вы хотели ДАТУ ? вот и при ДАТЕ выдаст дату ...

101 17.02.2015 10:39

+ а если подсовывать фигзнает что то собсно даты и не будет ...

user1C 17.02.2015 10:45

(37,38)
хех, ты ветку то внимательно читал??
держи "[em]абсолютно ЛЮБОЙ объект[/em] = "2010443632965", для начала, поиграйся...))


Текущее время: 09:18. Часовой пояс GMT +3.