|
|
|
Функция ПустоеЗначение() | ☑ | ||
|---|---|---|---|---|
|
0
genych
23.09.08
✎
11:02
|
Идет проверка на пустое значение значение типа "Дата". Дата не заполнена (' . . '), а функция возвращает "0". Почему так?
|
|||
|
1
birkoFFFF
23.09.08
✎
11:03
|
(0)ты лучше дай кусок кода, чем на пальцах объяснять
|
|||
|
2
genych
23.09.08
✎
11:08
|
...
ЗначениеПоляДБФ = ДБФ.ПолучитьЗначениеПоля(ИмяПоля); Если ПустоеЗначение(ЗначениеПоляДБФ) = 1 Тогда ДБФ.УстановитьЗначениеПоля(ИмяПоля, ЗначениеПоля); ДБФ.Записать(); Иначе Сообщить("""" + ЗначениеПоляДБФ + """. Уже есть значение в поле. Номер записи " + СчСотрудников); КонецЕсли; ... В ДБФ значения даты пустые. |
|||
|
3
dk
23.09.08
✎
11:10
|
ЗначениеПоляДБФ = Дата(ДБФ.ПолучитьЗначениеПоля(ИмяПоля));
|
|||
|
4
без галстука
23.09.08
✎
11:11
|
а поле ДБФ-а "ТвояДата" случаем не строковое ?
|
|||
|
5
birkoFFFF
23.09.08
✎
11:12
|
(2) Пустые или (' . . ') ?
|
|||
|
6
birkoFFFF
23.09.08
✎
11:13
|
(4)(3)+1
|
|||
|
7
Andy13
23.09.08
✎
11:14
|
Приводить типы значений - хороший тон...
Строка у тебя непустая. Пробелы с точками... |
|||
|
8
genych
23.09.08
✎
11:15
|
Добавил еще строку в модуль:
Сообщить(ТипЗначенияСтр(ЗначениеПоляДБФ)); Результат в окне сообщений: Дата " . . ". Уже есть значение в поле. Номер записи 1 |
|||
|
9
dk
23.09.08
✎
11:22
|
(8) проверил (3)?
|
|||
|
10
genych
23.09.08
✎
11:27
|
Это Дата, никак не Строка. Дата формата ' . . ' должна возвращать "1" в функции ПустоеЗначение()?
|
|||
|
11
dk
23.09.08
✎
11:32
|
почувствуй разницу
ПустоеЗначение(" . . ") = 0 ПустоеЗначение(' . . ') = 1 |
|||
|
12
genych
23.09.08
✎
11:37
|
ЗначениеПоляДБФ = Дата(ДБФ.ПолучитьЗначениеПоля(ИмяПоля));
От этого ничего не изменилось. Разницу я чувствую, но здесь вроде с этим никак не связано. |
|||
|
13
dk
23.09.08
✎
11:39
|
дата в ДБФ <> Дата в 1С
|
|||
|
14
genych
23.09.08
✎
11:41
|
Но (3) же переводит дату ДБФ в дату 1С.
|
|||
|
15
genych
23.09.08
✎
11:51
|
Спасибо большое за помощь. Вот что помогло. :)
ЗначениеПоляДБФ = Дата("'" + ДБФ.ПолучитьЗначениеПоля(ИмяПоля) + "'"); |
|||
|
16
genych
23.09.08
✎
14:12
|
Я рано радовался.
ЗначениеПоляДБФ = Дата("'" + ДБФ.ПолучитьЗначениеПоля(ИмяПоля) + "'"); В этом случае всегда возвращается пустое значение. На данный момент имеем: 1) ЗначениеПоляДБФ = ДБФ.ПолучитьЗначениеПоля(ИмяПоля) имеет тип Дата ЗначениеПоляДБФ = Дата(ДБФ.ПолучитьЗначениеПоля(ИмяПоля)) железно тип Дата 2) ЗначениеПоляДБФ = ' . . ' значение пустое 3) ПустоеЗначение(ЗначениеПоляДБФ) = 0 Ничего не понимаю, может кто-нибудь подкинет еще идею. |
|||
|
17
без галстука
23.09.08
✎
16:38
|
(16) прибавь любое число, посмотри на результат.
|
|||
|
18
Diman_Kr
23.09.08
✎
17:43
|
Дата(0) попробуй.
|
|||
|
19
Дядя Васька
23.09.08
✎
18:36
|
Тут как-то с подобным вопросом целый день бились, оказалось пишет в одной базе, а проверяет в другой :)
|
|||
|
20
Cthulhu
23.09.08
✎
22:43
|
Дата из X-base всегда не пустая...
проверяй на ДатаГод(..)=0 |
|||
|
21
без галстука
24.09.08
✎
11:59
|
(20) и чему это нечто не пустое равно ?
|
|||
|
22
genych
24.09.08
✎
12:19
|
(17) Вот небольшая статистика по прибавлению числа Х. В скобках диапазон Х.
ЗначениеПоляДБФ + (0-1) = ' . . ' ЗначениеПоляДБФ + (2-7) = '12.31.-71' ЗначениеПоляДБФ + 8 = '13.31.-71' ЗначениеПоляДБФ + (9-17) = '20.31.-71' ЗначениеПоляДБФ + (18-27) = '21.31.-71' ЗначениеПоляДБФ + (28-) = '22.31.-71' (18) Это я уже пробовал (12) (19) Это не этот случай :) (20) ДатаГод(ЗначениеПоляДБФ) = 0 Ну как-то совсем не прикольно получается городить огород и вставлять условие типа: Если ТипПоля = 3 Тогда //Дата Если ДатаГод(ЗначениеПоляДБФ) = 0 Тогда ... КонецЕсли; Иначе Если ПустоеЗначение(ЗначениеПоляДБФ) = 1 Тогда ... КонецЕсли; КонецЕсли; Даже если незаполненная дата в X-Base считается не пустой в 1С, а в 1С выражение ПустоеЗначение(' . . ') = 1, то в чем разница, я чего-то не понимаю. %) |
|||
|
23
genych
24.09.08
✎
12:20
|
(17) Вот небольшая статистика по прибавлению числа Х. В скобках диапазон Х.
ЗначениеПоляДБФ + (0-1) = ' . . ' ЗначениеПоляДБФ + (2-7) = '12.31.-71' ЗначениеПоляДБФ + 8 = '13.31.-71' ЗначениеПоляДБФ + (9-17) = '20.31.-71' ЗначениеПоляДБФ + (18-27) = '21.31.-71' ЗначениеПоляДБФ + (28-) = '22.31.-71' (18) Это я уже пробовал (12) (19) Это не этот случай :) (20) ДатаГод(ЗначениеПоляДБФ) = 0 Ну как-то совсем не прикольно получается городить огород и вставлять условие типа: Если ТипПоля = 3 Тогда //Дата Если ДатаГод(ЗначениеПоляДБФ) = 0 Тогда ... КонецЕсли; Иначе Если ПустоеЗначение(ЗначениеПоляДБФ) = 1 Тогда ... КонецЕсли; КонецЕсли; Даже если незаполненная дата в X-Base считается не пустой в 1С, а в 1С выражение ПустоеЗначение(' . . ') = 1, то в чем разница, я чего-то не понимаю. %) |
|||
|
24
genych
24.09.08
✎
12:20
|
(17) Вот небольшая статистика по прибавлению числа Х. В скобках диапазон Х.
ЗначениеПоляДБФ + (0-1) = ' . . ' ЗначениеПоляДБФ + (2-7) = '12.31.-71' ЗначениеПоляДБФ + 8 = '13.31.-71' ЗначениеПоляДБФ + (9-17) = '20.31.-71' ЗначениеПоляДБФ + (18-27) = '21.31.-71' ЗначениеПоляДБФ + (28-) = '22.31.-71' (18) Это я уже пробовал (12) (19) Это не этот случай :) (20) ДатаГод(ЗначениеПоляДБФ) = 0 Ну как-то совсем не прикольно получается городить огород и вставлять условие типа: Если ТипПоля = 3 Тогда //Дата Если ДатаГод(ЗначениеПоляДБФ) = 0 Тогда ... КонецЕсли; Иначе Если ПустоеЗначение(ЗначениеПоляДБФ) = 1 Тогда ... КонецЕсли; КонецЕсли; Даже если незаполненная дата в X-Base считается не пустой в 1С, а в 1С выражение ПустоеЗначение(' . . ') = 1, то в чем разница, я чего-то не понимаю. %) |
|||
|
25
genych
24.09.08
✎
12:23
|
(17) Вот небольшая статистика по прибавлению числа Х. В скобках диапазон Х.
ЗначениеПоляДБФ + (0-1) = ' . . ' ЗначениеПоляДБФ + (2-7) = '12.31.-71' ЗначениеПоляДБФ + 8 = '13.31.-71' ЗначениеПоляДБФ + (9-17) = '20.31.-71' ЗначениеПоляДБФ + (18-27) = '21.31.-71' ЗначениеПоляДБФ + (28-) = '22.31.-71' (18) Это я уже пробовал (12) (19) Это не этот случай :) (20) ДатаГод(ЗначениеПоляДБФ) = 0 Ну как-то совсем не прикольно получается городить огород и вставлять условие типа: Если ТипПоля = 3 Тогда //Дата Если ДатаГод(ЗначениеПоляДБФ) = 0 Тогда ... КонецЕсли; Иначе Если ПустоеЗначение(ЗначениеПоляДБФ) = 1 Тогда ... КонецЕсли; КонецЕсли; Даже если незаполненная дата в X-Base считается не пустой в 1С, а в 1С выражение ПустоеЗначение(' . . ') = 1, то в чем разница, я чего-то не понимаю. %) |
|||
|
26
genych
24.09.08
✎
12:23
|
(17) Вот небольшая статистика по прибавлению числа Х. В скобках диапазон Х.
ЗначениеПоляДБФ + (0-1) = ' . . ' ЗначениеПоляДБФ + (2-7) = '12.31.-71' ЗначениеПоляДБФ + 8 = '13.31.-71' ЗначениеПоляДБФ + (9-17) = '20.31.-71' ЗначениеПоляДБФ + (18-27) = '21.31.-71' ЗначениеПоляДБФ + (28-) = '22.31.-71' (18) Это я уже пробовал (12) (19) Это не этот случай :) (20) ДатаГод(ЗначениеПоляДБФ) = 0 Ну как-то совсем не прикольно получается городить огород и вставлять условие типа: Если ТипПоля = 3 Тогда //Дата Если ДатаГод(ЗначениеПоляДБФ) = 0 Тогда ... КонецЕсли; Иначе Если ПустоеЗначение(ЗначениеПоляДБФ) = 1 Тогда ... КонецЕсли; КонецЕсли; Даже если незаполненная дата в X-Base считается не пустой в 1С, а в 1С выражение ПустоеЗначение(' . . ') = 1, то в чем разница, я чего-то не понимаю. %) |
|||
|
27
genych
24.09.08
✎
12:23
|
(17) Вот небольшая статистика по прибавлению числа Х. В скобках диапазон Х.
ЗначениеПоляДБФ + (0-1) = ' . . ' ЗначениеПоляДБФ + (2-7) = '12.31.-71' ЗначениеПоляДБФ + 8 = '13.31.-71' ЗначениеПоляДБФ + (9-17) = '20.31.-71' ЗначениеПоляДБФ + (18-27) = '21.31.-71' ЗначениеПоляДБФ + (28-) = '22.31.-71' (18) Это я уже пробовал (12) (19) Это не этот случай :) (20) ДатаГод(ЗначениеПоляДБФ) = 0 Ну как-то совсем не прикольно получается городить огород и вставлять условие типа: Если ТипПоля = 3 Тогда //Дата Если ДатаГод(ЗначениеПоляДБФ) = 0 Тогда ... КонецЕсли; Иначе Если ПустоеЗначение(ЗначениеПоляДБФ) = 1 Тогда ... КонецЕсли; КонецЕсли; Даже если незаполненная дата в X-Base считается не пустой в 1С, а в 1С выражение ПустоеЗначение(' . . ') = 1, то в чем разница, я чего-то не понимаю. %) |
|||
|
28
1Сергей
24.09.08
✎
12:25
|
(22-27) Да мы с первого раза поняли, хватит уже
|
|||
|
29
genych
24.09.08
✎
12:54
|
(17) Вот небольшая статистика по прибавлению числа Х. В скобках диапазон Х.
ЗначениеПоляДБФ + (0-1) = ' . . ' ЗначениеПоляДБФ + (2-7) = '12.31.-71' ЗначениеПоляДБФ + 8 = '13.31.-71' ЗначениеПоляДБФ + (9-17) = '20.31.-71' ЗначениеПоляДБФ + (18-27) = '21.31.-71' ЗначениеПоляДБФ + (28-) = '22.31.-71' (18) Это я уже пробовал (12) (19) Это не этот случай :) (20) ДатаГод(ЗначениеПоляДБФ) = 0 Ну как-то совсем не прикольно получается городить огород и вставлять условие типа: Если ТипПоля = 3 Тогда //Дата Если ДатаГод(ЗначениеПоляДБФ) = 0 Тогда ... КонецЕсли; Иначе Если ПустоеЗначение(ЗначениеПоляДБФ) = 1 Тогда ... КонецЕсли; КонецЕсли; Даже если незаполненная дата в X-Base считается не пустой в 1С, а в 1С выражение ПустоеЗначение(' . . ') = 1, то в чем разница, я чего-то не понимаю. %) |
|||
|
30
genych
26.09.08
✎
15:47
|
(28) Сорри. Писалось, типо сервер перегружен, попробуйте позже. А в итоге все попытки отправить мессагу сработали. Странно.
|
|||
|
31
без галстука
26.09.08
✎
18:05
|
(28) он думает, что здесь горяяяяЯччччччииееееее прибалииииИйскиееееее паааАрнииии :-)
(22) интересно. (23) очень интересно! .... (29) хм, такое еще не встречалось... :-) ты бы отформатировал ГГГГММДД что ли. Хотя 31-й месяц - это что-то. А что возвращает Число(ЗначениеПоляДБФ) ? |
|||
|
32
без галстука
08.10.08
✎
13:31
|
ап. типа за автора. интересен результат
|
|||
|
33
genych
09.10.08
✎
11:15
|
А вот и результаты.
Формат(ЗначениеПоляДБФ, "ДДММГГГГ") = ' . . ' Результат = Формат(ЗначениеПоляДБФ + а, ФорматнаяСтрока) ФорматнаяСтрока1 = "ДДММГГГГ"; ФорматнаяСтрока2 = "ДДММММГГГГ"; а = 0-1 Результат1 = ' . . ' Результат2 = ' . . ' а = 2-7 Результат1 = '12.31.-471' Результат2 = '12 Ф†жs -471 г.' а = 8 Результат1 = '13.31.-471' Результат2 = '13 Ф†жs -471 г.' а = 9-17 Результат1 = '20.31.-471' Результат2 = '20 Ф†жs -471 г.' Вот так у нас 31 месяц называется :) Преобразование обычных чисел в даты как раз и приводит к таким результатам. Вот результаты преобразования в число. Число(ЗначениеПоляДБФ) = -1 //Это без прибавлений ДатаЧислом = Число(ЗначениеПоляДБФ + а) //С прибавлениями а = 0, ДатаЧислом = -1 а = 1, ДатаЧислом = 0 а = 2, ДатаЧислом = 1 а = 3, ДатаЧислом = 2 ну и т.д. Похоже получается, что ЗначениеПоляДБФ на самом деле является числом "-1", отсюда и (0), хотя (8). Непонятно, почему так. |
|||
|
34
без галстука
09.10.08
✎
18:23
|
(33)
формат(Дата(11), "дддммммгггг") = "20 ФЦЮs -471 г." формат(Дата(101), "дддммммгггг") = "30 -471 г." Формат(Дата(1001), "дддммммгггг") = "82 Декабрь -471 г." формат(Дата(10001), "дддммммгггг") = "41 -468 г." формат(Дата(100001), "дддммммгггг") = "91 -443 г." формат(Дата(1000001), "дддммммгггг") = "2 -197 г." формат(Дата(10000001), "дддммммгггг") = "22 2266 г." получается, что твоё ЗначениеПоляДБФ - чисто числовое значение к типу "Дата" никакого отношения не имеющее. |
|||
|
35
genych
10.10.08
✎
15:32
|
Да, получается, что значение на самом деле числовое, причем имеет конкретное значение = -1. Но вот вопрос почему оно числовое, если ТипЗначенияСтр() дает результат "Дата" и оно вообще не заполнено. Глюк 1С? Получается ПустоеЗначение() работает некорректно в этой ситуации и нужно вводить дополнительную проверку.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |