Имя: Пароль:
1C
1C 7.7
v7: Ошибка преобразования пустой даты.
0 Eeakie
 
29.09.15
13:56
Добрый день.

Текст = "
    |select
    |    РБН.iddoc as [Расходная $Документ.РасходнаяБН],
    |    $РБНСтроки.ППартия as [Партия $Документ]
    |from
    |    $Документ.РасходнаяБН as РБН with (nolock)
    |left join
    |    $ДокументСтроки.РасходнаяБН as РБНСтроки with (nolock) on РБНСтроки.iddoc = РБН.iddoc
    |where
    |    $РБН.Фирма = :Фирма and
    |    $РБН.ДатаОтметкиВНалоговой between :НачДата and :КонДата~";
    
    ПрямойЗапрос = СоздатьОбъект("ODBCRecordSet");
    ПрямойЗапрос.УстановитьТекстовыйПараметр("Фирма", Фирма);
    ПрямойЗапрос.УстановитьТекстовыйПараметр("НачДата", глНачалоИнтервала);
    ПрямойЗапрос.УстановитьТекстовыйПараметр("КонДата", глКонецИнтервала);
    ПрямойЗапрос.ВыполнитьИнструкцию(Текст, ТЗОбщая);

// Ошибка преобразования даты или времени из символьной строки

Да, ДатаОтметкиВНалоговой может быть пустая. Как обойти?
1 igork1966
 
29.09.15
13:58
(0) Как вариант формировать запрос кодом
2 igork1966
 
29.09.15
13:59
(1) + С исключением ненужных параметров.
3 Ёпрст
 
29.09.15
13:59
ДатаОтметкиВНалоговой тут не причем, смотрите, что в глНачалоИнтервала и в глКонецИнтервала - там мусор
4 igork1966
 
29.09.15
14:00
(3) +1
5 Eeakie
 
29.09.15
14:00
(3) Там стандартный тип "Дата". Может их преобразовать в строчные?
6 Ёпрст
 
29.09.15
14:02
(5)
сообщить(глНачалоИнтервала)
Сообщить(глКонецИнтервала)

+ покажи, что ПрямойЗапрос.Отладка(1) кажет
7 Eeakie
 
29.09.15
14:05
(6)
01.09.15
30.09.15

select
    РБН.iddoc as [Расходная $Документ.РасходнаяБН],
    РБНСтроки.sp4659 as [Партия $Документ]
from
    dh355 as РБН with (nolock)
left join
    dt355 as РБНСтроки with (nolock) on РБНСтроки.iddoc = РБН.iddoc
where
    РБН.sp356 = '     MХПС' and
    РБН.sp8404 between '20150901' and '20150930Z'
8 Ёпрст
 
29.09.15
14:09
ДатаОтметкиВНалоговой , в пофигураторе, какого типа ?
9 igork1966
 
29.09.15
14:09
'20150930Z'

а чего это за Z в конце?
10 Eeakie
 
29.09.15
14:10
(8) Дата.
(9) ~
11 Serginio1
 
29.09.15
14:12
NullIf(Док.sp9650, '17530101')
NullIf($РБН.ДатаОтметкиВНалоговой between, '17530101')
:НачДата and :КонДата";

А зачем тебе :КонДата~"
Это делается для Жур.DATE_TIME_IDDOC
12 Serginio1
 
29.09.15
14:13
NullIf($РБН.ДатаОтметкиВНалоговой, '17530101') between
:НачДата and :КонДата";
13 Eeakie
 
29.09.15
14:15
(12) Взлетело, чёрт побери. Спасибо. И да, что-то уже по привычке "включаю" ~.
14 Eeakie
 
29.09.15
14:17
Я даже больше скажу. Взлетело и по-простому:
$РБН.ДатаОтметкиВНалоговой between :НачДата and :КонДата

С тильдой погорячился.
15 Ёпрст
 
29.09.15
14:19
(12) там же никогда null не будет, nullif не нужен
16 dk
 
29.09.15
14:38
$РБН.ДатаОтметкиВНалоговой between :НачДата and :КонДата~~
?
17 Eeakie
 
29.09.15
14:41
(16) Опачки. Что за две тильды.. тоже работает.
18 Serginio1
 
29.09.15
14:44
(15) Хуже не будет.
19 dk
 
29.09.15
14:50
SELECT
    :Д1 _1
    , :Д1~ _2
    , :Д1~~ _3
20 Eeakie
 
29.09.15
15:00
(19) Можно в двух словах что за оно?
21 dk
 
29.09.15
15:10
по разному дату в запросе представляет Д1~ это со временем если надо
22 Eeakie
 
29.09.15
15:29
(21) Спасибо.
AdBlock убивает бесплатный контент. 1Сергей