[1] [2] |
[Помнящим 7.7] Как определить !точно!, что Тип(Значение)=Дата? где Значение = "Пр0113в0льная Стр0ка" ваши предложения? ЗЫ [code]Если НЕ(Дата(Значение) = Дата(0)) Тогда[/code] не всегда работает)) |
ПустоеЗначение ? |
С датой вообще интересные дела - можно через нее получить любой объект конфигурации, а можно дату рождения Христа. |
(1) это о чем?) (2) не зря тему завел... |
ТипЗначенияСтр() - не устраивает? Или надо узнать, является ли строка [b]текстовым представлением[/b] даты? В последнем случае решение зависит от того, кто породил эту строку. Если Умная Маша, то паснингом, проверяя все возможные заскоки ;) |
(4) :)) ТипЗначенияСтр("Пр0113в0льная Стр0ка") = Строка надо узнать, что значение - всегда действительное строковое представление даты, без "[em]паснингом, проверяя все возможные заскоки[/em]", проще) так и каждый ду.... ЗЫ никогда не доводилось сталкиваться с такими чудесами Дата() и попытками с ней))) |
(0) "[em]Если НЕ(Дата(Значение) = Дата(0)) Тогда не всегда работает))[/em]" - а можно примеры этого "не всегда"? |
(6) верный вопрос, пожалуйста - "3011 03809" |
а вот такой изврат не поможет? Попытка Если Дата(Значение) = РабочаяДата() Тогда КонецЕсли; Исключение Сообщить("!"); КонецПопытки; |
ну т.е. если попытка сравнения не вызвало ошибку, то Значение - строковое представление даты |
(9) просто попробуй с (7) )) |
10-user1C > мда... вот так бы и не знал, сколько вокруг опасностей)) |
(11) встретил и еще одно Значение сразу)) ужасть... |
12-user1C > Ты формат (представление) покажи, который на входе. Тогда можно и функцию нарисовать. И информация о том, чем/кем генерится, откуда берется это самое "на входе", тоже не помешает. |
Формат(Х,"ДДДММММГГГГ") ? |
Формат(Х,"ДДДММГГГГ") |
(13) на входе: Значение = см. (7) на выходе: это дата? = 1/0 |
(14,15) см (16) |
16-user1C > Зачем тебе на выходе булево? Лучше сразу получить дату. Потом сможешь как угодно преобразовать. А такое, как в (7), "3011 03809", или "301103809" никак не дата: ни YYYYMMDD, ни DDMMYYYY, ни DDMMYY. Первый не катит - год из далекого будущего (и пробел ни к селу, ни к городу), второй тоже никак (четыре цифры года не выбрать), третий (если выбросить дурацкий пробел), похоже на дату, если три последних символа выбросить. А можно окарнывать до 6-ти символов, так и не понятно, ибо неизвестен источник. Еще раз: если источником является Умная Маша, то пусть сама правит то, что автоматически не распозналось. Ибо потом на тебя же и визжать будет, что ты хрень всякую записал. Данные испортил. |
(18) мдя... в патетике нет необходимости, [b]читаем сабж [u]весь [/u]до (17)[/b] надо... смоги) |
кстати, в (7) было ДВА пробела, там другая Дата() будет)) |
Хм, похоже, что движок 1С весьма интересно парсит строку при ее преобразовании в дату: 1. Символы в 3-й и 6-й позициях считаются разделителями день-месяц-год, какие это символы - игнорируется 2. Пробел в позициях дня, месяца, года (1,2,4,5,7-10) интепретируется как "0", буквы - сразу отлуп "не дата!" 3. "Лишние" (после 10-й позиции) символы игнорируются. Исходя их этого и надо писать код проверки да "датость", одной строчкой тут не обойдешься. И экспериментировать - глядишь, и еще что-то выплывет. |
Если НЕ(Дата(Значение) = Дата(0)) Тогда уволить программера ЗЫ и поумней кого-нить взять |
22+ это я чего, вслух сказал? Если ТипДата()=0 Тогда |
13-VZ > та на входе может быть все просто - предположим "[em]назначение платежа[/em]" в платежке. Я тоже как то раз давненько уже попыталась парсить эти назначения платежей. сломалась на строчке (именно вот так, без пробелов) "[em]оплата по сч.00035 от31янв.15г.[/em]" :) |
никуа ты сломалась в 2015 году, а че ты раньше в 95-м тогда делала? |
где Значение = "Пр0113в0льная Стр0ка" - там дату надо поискать в реквизитах дока, а не программеров будить ЗЫ в 7.7 проведенных доков без даты не бывает - это фантастика |
(21) хороший изыск провел, молодца! верно глаголишь... кто бы смог без "[em]одной строчкой тут не обойдешься.[/em]" ;) зы с одной строкой чудеса творятся, бывает "строка_как_дата" <> "[b]та_же[/b]_строка_как_дата") (vah1) по теме, пожалуйста |
27-user1C > по теме в понедельник заходи - не видишь люди бухают? |
(24) тут еще проще, есть за что зацепиться) "[em]номер и дата счет-фактуры[/em]", местами перепутанные бывают... |
(28) тебе это мешает? мне нет, сам сюда лучше не заходи)) см. (27) |
2(30) +1 +1 +1 +100 +1000 В общем меня можно понять. |
По-моему, не взлетит. К примеру, на основании (21): "1 а1 б2 3вг" - кто-нибудь в здравом уме может решить таким образом ввести дату 10.10.2003? А именно ее система "видит" в такой строке. |
(32) пытался долбиться от обратного, см зы (27) мистика...) |
После подобных "хитрожопых" решений появляются "НОУ-ХАУ", которые работают через раз, И найти ошибку в них практически невозможно....... |
Сообщить(""+НачГода(ДДД)); где ДДД абсолютно ЛЮБОЙ объект ... и посмотри чо выдаст |
(35) фигню выдаст, периодически... мимо) |
(36) что значит фигню ? простите вы хотели ДАТУ ? вот и при ДАТЕ выдаст дату ... |
+ а если подсовывать фигзнает что то собсно даты и не будет ... |
(37,38) хех, ты ветку то внимательно читал?? держи "[em]абсолютно ЛЮБОЙ объект[/em] = "2010443632965", для начала, поиграйся...)) |
Текущее время: 09:18. Часовой пояс GMT +3. | [1] [2] |