Имя: Пароль:
1C
 
Проверка даты на пустое значение - как?
0 Parti
 
02.09.09
11:46
На форме поле ввода, тип Дата. Как проверить, введено ли в него значение?

Если ДатаДокумента = "01.01.0001 0:00:00" Тогда Сообщить ("да");
    Иначе Сообщить ("нет");


КАК?
1 Irbis
 
02.09.09
11:47
ЗначениеЗаполнено
2 Волшебник
 
модератор
02.09.09
11:47
Если дата = '00010101'
3 Mort
 
02.09.09
11:47
ЗначениеЗаполнено()
4 Parti
 
02.09.09
11:49
ок. послушаю ВОлшебника:)
5 Parti
 
02.09.09
11:58
еще вопрос: как программно сбросить значение в поле ввода типа Даты?
Есть кнопочка, и при её нажатии должна очищаться Дата
6 Parti
 
02.09.09
12:03
хелп
7 Mirid
 
02.09.09
12:05
ТвоеПолеВвода = Дата(1,1,1)
8 Ненавижу 1С
 
гуру
02.09.09
12:05
Дата = 0;
9 bvn13
 
02.09.09
12:05
твоеПоле = Дата("00010101");
10 Asmody
 
02.09.09
12:06
(4) не слушай Волшебника.
11 Mirid
 
02.09.09
12:06
(9) а не одинарные кавычки нужны?
12 Ненавижу 1С
 
гуру
02.09.09
12:07
(11) можно вообще
Дата = Неопределено;
13 Mirid
 
02.09.09
12:09
Если ТвоеПолеВвода = Дата(1,1,1) Тогда

Или же

Если ТвоеПолеВвода = Дата('00010101') Тогда

Эти функция с такими параметрами возвращает пустую дату
14 Mirid
 
02.09.09
12:09
(12) это если бы поле не было с типом Дата
15 Ненавижу 1С
 
гуру
02.09.09
12:12
(14) это все равно
16 Andry888
 
02.09.09
12:12
(13) '00010101' это уже дата... а "дата("00010101")" преобразует СТРОКУ "00010101" к дате (т.е. к '00010101')
17 ShoGUN
 
02.09.09
12:14
Самый универсальный вариант - в (3), но строгий ответ - в (2).
(7) и (9) - то же самое, что (2), но через одно место.
18 Mirid
 
02.09.09
12:16
(16) Сорри. Согласен. Вот из типовой

ПустаяДата = Дата("00010101");
19 Ненавижу 1С
 
гуру
02.09.09
12:16
(17) ты стал сранивать сравнение с пустой датой и установку пусто даты, автор в (5) задал другой уже вопрос, но многие оленей не кормят
20 ShoGUN
 
02.09.09
12:17
(19) Как ни странно, ответы на вопросы - одинаковые :))) Потому как присвоение и равенство в 1С выглядит одинаково ;)
21 ShoGUN
 
02.09.09
12:18
+(20) Разве что ПустоеЗначение() уже не годится...
22 Ненавижу 1С
 
гуру
02.09.09
12:18
(20) мои ответы подходят только на присвоение ))
23 Andry888
 
02.09.09
12:18
В (18) написано одно, а в (13) другое...
24 ShoGUN
 
02.09.09
12:19
Тьфу))) ЗначениеЗаполнено() :)
25 Aprobator
 
02.09.09
12:20
ПустаяДата = Дата(1,1,1,0,0,0) тож из типовой.
26 kosts
 
02.09.09
12:20
Так нельзя
Дата = Неопределено;

т.к.
Неопределено <> Дата(1,1,1)
27 Mirid
 
02.09.09
12:21
я в (7) так и написал
28 ShoGUN
 
02.09.09
12:21
(27) Спасибо, КО.
Похоже намечается еще одно тупое соревнование...
29 ShoGUN
 
02.09.09
12:22
Тьфу, посыпаю голову пеплом... (28) к (26).
30 Mort
 
02.09.09
12:22
(26) Ошибка в логике. Из 2-го не следует первое.
31 Mirid
 
02.09.09
12:23
Автор, так в каком вопросе ты еще не разобрался?:)
32 Ненавижу 1С
 
гуру
02.09.09
12:23
(26) можно и даже так можно:
Дата = Константы.ВалютаРегламентированногоУчета.Получить();
33 ShoGUN
 
02.09.09
12:24
(32) Вот поэтому ты 1С и ненавидишь, надо думать :)
34 kosts
 
02.09.09
12:24
(30) Не следует, но уже достаточно следует что бы не использовать
(32) При чем здесь?...
35 Mirid
 
02.09.09
12:25
(32) если это реквизит с типом ДАТАЮ то выдаст ошибку "значение не является типом Дата"
36 kosts
 
02.09.09
12:26
Для (26) я имел ввиду, что нельзя так сравнивать на пустую дату
Если Дата = Неопределено тогда // Неправильно
37 Mort
 
02.09.09
12:26
(34) Он какбе намекает что если немножко копнуть правила преобразования типов в 1С при присваивании, выражение Х = Неопределено обретает смысл.
38 Ненавижу 1С
 
гуру
02.09.09
12:27
(33) кстати, да
мне по душе строгая типизация, ООП
единственный плюс радости они добавили SQL-подобные запросы, но положили смачную ложку дегтя, создав Неопределено<>NULL
39 Mort
 
02.09.09
12:28
(38) Ну вообще разница есть. Могу привести пример.
40 Ненавижу 1С
 
гуру
02.09.09
12:28
(35) ты пробовал?
(36) сравнивать неправильно, а присваивать можно
41 Ненавижу 1С
 
гуру
02.09.09
12:29
(39) ну есть конечно, у 1С
другие СУБД живут без этого
42 kosts
 
02.09.09
12:29
(38) Не помешала бы типизация, хотя бы включаемая
(40) Присваивать "иногда" можно, но зачем делать грабли...
43 Ненавижу 1С
 
гуру
02.09.09
12:31
(42) не бойся, я так не пишу, просто показываю "прелести" языка
44 Mort
 
02.09.09
12:32
(41) Как насчет Object* AnyObject ? ))
45 Mort
 
02.09.09
12:32
+(44) Где Object - базовый для всех.
46 ShoGUN
 
02.09.09
12:33
(38) Я тоже от Неопределено офигевал, потом привык. А строгая типизация конечно полезна, но я и так типизации придерживаюсь при написании.
47 Ненавижу 1С
 
гуру
02.09.09
12:34
(44) и что? что-то я не вкурил
48 ShoGUN
 
02.09.09
12:35
(47) Он по ходу про то, что в 1С нет такого типа.
49 Mort
 
02.09.09
12:38
(47) Наоборот я про то, что прообраз типа Неопределено есть во многих системах.
50 ShoGUN
 
02.09.09
12:39
(49) Неопределено <> AnyObject
51 Ненавижу 1С
 
гуру
02.09.09
12:42
(49) примеры, достаточно распространенных систем
52 Mort
 
02.09.09
12:44
(50) Тут не абсолютная схожесть. Например контакт может быть физлицом, сотрудником и т.д. когда оно не заполнено в поле неопределено.
Базовый класс фигур CFigura, наследники треугольники, квадраты и т.д. Массив фигур сцены будет содержать указатели CFigura*. CFigura*  здесь какбе аналог "Неопределено". Хреновый пример, но в ту сторону.
53 Ненавижу 1С
 
гуру
02.09.09
12:45
(52) и чем тут NULL не устраивает?
54 Mort
 
02.09.09
12:47
(53) Потому что в базах данных NULL это отсутствие записей. По смыслу NULL из C++ <> NULL из SQL.
55 ShoGUN
 
02.09.09
12:49
(54) NULL - это в т.ч. и неопределенное значение, по крайней мере по смыслу.
56 Ненавижу 1С
 
гуру
02.09.09
12:52
(54) не всегда, поле может хранить значение NULL, в стандарте SQL запрос
SELECT A.ID
FROM A
LEFT JOIN B
ON (A.BID=B.ID)
WHERE B.X IS NULL
выдаст как записи таблицы A, для которых нет соответствия в B, так и те у которых соответствие есть, но поле B.X имеет значение NULL
57 Mort
 
02.09.09
12:54
NULL в C++ вполне определенное значение.

Кста,

CFigura* T;
T <> NULL; - созданные указатели не равны NULL.
58 Ненавижу 1С
 
гуру
02.09.09
12:55
(57) ну это в C++, в C# вполне
59 Mort
 
02.09.09
12:59
(56) В курсе, не только отсутствие записей. Короче думаю щас правильно сформулирую.

1С Неопределено - имеет отношение к типизации, как Object* в С++, т.е. это неопределенный ТИП в первую очередь.

1С NULL - имеет отношение именно к БД, в SQL тоже NULL. Неопределенное ЗНАЧЕНИЕ.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн