1c 7.7 Как Определить, Что Дата - Пустая?

Paume

Well-known member
15.12.2010
107
0
#1
Добрый день.

В документе есть поле табличной части типа дата.
Есть обработка, которая в зависимости от того, заполнено ли это поле, выполняется или нет.

Проверка №1:

Если ДатаИзДокумента=Дата(0) Тогда
Продолжить;
КонецЕсли;

Проверка №2:

Если ПустоеЗначение(ДатаИзДокумента)=1 Тогда
Продолжить;
КонецЕсли;

И оба раза ДатаИзДокумента=' . . ', но условие не выполняется.

Может, я что-то не так понимаю?
Подскажите. плиз.
 

puh14

Well-known member
11.07.2008
1 412
0
#2
Документ.ДатаДок = ПолучитьПустоеЗначение("Дата")
 

Paume

Well-known member
15.12.2010
107
0
#3
Проверка №3:

ПустаяДата=ПолучитьПустоеЗначение("Дата");

Если ДатаИзДокумента=ПустаяДата Тогда
Продолжить;
КонецЕсли;

В отладчике:

ПустаяДата = ' . . '
ДатаИзДокумента = ' . . '

Условие не выполняется.

Причем, эта зараза отрабатывала месяц назад, когда я ее писала!
 

puh14

Well-known member
11.07.2008
1 412
0
#4
Так не бывает. Проверьте типы сравниваемых значений через типзначенияСтр().
 

Paume

Well-known member
15.12.2010
107
0
#5
Отладчик сказал так:

ТипЗначенияСтр(ДатаИзДокумента) = "Дата"

И да - я знаю, что так не бывает.
Это у меня глюки.
Такое же когда-то было и на строчку.
Я думала, может, кто-нибудь когда-то спотыкался...

В общем, пока извратилась вот так:

ДатаИзДокумента=Формат(ДатаИзДокумента,"ДДДММГГ");
ДлинаДаты=СтрДлина(СокрЛП(ДатаИзДокумента));
Если ДлинаДаты<>8 Тогда
Продолжить;
КонецЕсли;
 
H

Hryv

#7
как заполнена переменная ДатаИзДокумента?

конструкция типа:
Если ПустоеЗначение(Док.ПроверяямаяДата)=1 Тогда
Продолжить;
КонецЕсли;

тоже не работает?
 

Дайнеко

Well-known member
19.11.2009
951
0
#8
Часто такое бывает - роешь землю а не там. ПустоеЗначение() - верный путь. Дам совет как психоаналитик: Вы должны поверить в себя, заодно и проверку даты. Сделайте внешний отчетик, на нем дату и проверяйте ее всеми позами, т.е. методами, пока не снизойдет благодать.
Вот тогда и дальше в путь, товарищи!
 

Darlock

Well-known member
04.01.2008
560
1
#9
Причем, эта зараза отрабатывала месяц назад, когда я ее писала!
Как сказал бы один из моих преподавателей "место неудачное". В тексте выше нет никаких манипуляций с датой, которую потом проверяете на пустое значение?
 

Paume

Well-known member
15.12.2010
107
0
#10
Как сказал бы один из моих преподавателей "место неудачное". В тексте выше нет никаких манипуляций с датой, которую потом проверяете на пустое значение?
Есть.
У меня обработка, которая из тхт получает документ, пишет его в базу, проводит, читает его и на основании того, пустая ли дата в многострочной части, создает еще один документ, который регистры двигает.

Но то, что сравнение не отрабатывает - по-моему, это полный глюк.
Просто непонятно, каким образом его проконтролировать.

Когда-то давно точно так же я наступала на грабли в функции ВыбратьПодчиненныеДокументы() когда документы есть, а ничего не выбирается. Разобраться, что я написала не так, я тогда не смогла и откатывала назад, делала объединение со старой мд-шкой. Так вот - строчка с вызовом ВыбратьПодчиненныеДокументы() была один-в-один такая же, я вообще этот кусочек не трогала, а при объединении 1С показала изменения. После объединения опять все заработало. :(

И да - ПустоеЗначение() у меня тоже не отрабатывает. Отладчик показывает, что переменная пуста, а функция говорит ноль.
 

puh14

Well-known member
11.07.2008
1 412
0
#11
Походу платформа кривая ( встречал такую прелесть - длл-ки все разных версий). Попробуйте на заведомо кошерной машине.
 

Paume

Well-known member
15.12.2010
107
0
#12
Походу платформа кривая ( встречал такую прелесть - длл-ки все разных версий). Попробуйте на заведомо кошерной машине.
Спасибо, попробую.
Дайнеко сказал(а):
Дам совет как психоаналитик:
Спасибо, лучше давайте как программист. ;)))
 
H
#13

Paume

Well-known member
15.12.2010
107
0
#14
код в студию
не могёт такого быть
Код:
Док.Записать();
Док.Провести(); 

Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
Если ПустоеЗначение(Док.ДатаПрихода)=1 Тогда
Продолжить;
КонецЕсли;
КонецЦикла;
 
H
#15
видимо все же что-то с релизом

я побыстрому наваял в принципе то же самое

Код:
//*******************************************
Процедура Сформировать()
Док = СоздатьОбъект("Документ.Док1");
Док.НайтиДокумент(ВыбДок);
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Сообщить(Док.Дата1);
Сообщить(ПустоеЗначение(Док.Дата1));
Сообщить("");
КонецЦикла;
КонецПроцедуры
выдает исправно
 

Дайнеко

Well-known member
19.11.2009
951
0
#16
Так вот - строчка с вызовом ВыбратьПодчиненныеДокументы() была один-в-один такая же
Хе! Павлин, говоришь. ;)

Цитата:
(Дайнеко)
Дам совет как психоаналитик:

Спасибо, лучше давайте как программист. ;)))
Я, наверное, не очень удачный программист - у меня по программе "барабашки" не бегают. Аж народ нечем удивить. Зато неоднократно убеждался, что зачастую проблема оказывается в собственном невнимании к данным. Есть такое правило: увидел глюк - переведи дыхание, отойди от экрана на метр. И подумай: а то ли ты проверяешь? а точно ты в нужной базе? в той стране? Второе правило: проверь положительным опытом. Делаю маленький отчет в котором проверяю ситуацию "на пальцах".