|
v7: В Запросе у некоторых документах не отрабатывает NULLIf | ☑ | ||
---|---|---|---|---|
0
Popkorm
11.04.12
✎
09:12
|
Таблицы которые закоментины не отрабатывает NULLIf.Ошибка такая :
Syntax error converting datetime from character string. Смотрел _1sjourn.DATE_TIME_IDDOC это строка,и нет '17530101'. |Select |Docs.PrihRash as [ВидДвиженияПриходРасход], |Docs.VidOper as [ВидОперацииСТоваром], |Docs.Project as [Проект $Справочник.Проекты], |Docs.Org as [Организация $Справочник.Фирмы], |Docs.Sklad as [Склад $Справочник.Склады], |Docs.DataSklad as [ДатаОтчета], |Docs.Kontr as [Контрагент $Справочник.Контрагенты], |Docs.KontrSklad as [КонтрагентСклад $Справочник.Склады], |Docs.Nomenkl as [Номенклатура $Справочник.Номенклатура], |Sum(Docs.Kolvo) as [Количество], |Sum(Docs.Summa) as [Сумма] |From |( //|Select -- ВводОстатковТМЦ //|DocHeader.IdDoc as IdDoc, //|'Приход' as PrihRash, //|'НачальныйОстаток' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP3941 as Sklad, ////|convert(DateTime,'17530101',112) as DataSklad, //|cast('17530101' as DateTime) as DataSklad, //|'' as Kontr, //|'' as KontrSklad, //|DocTable.SP3944 as Nomenkl, //|DocTable.SP3945 * Fenix_TD.dbo.fn_NotNull(DocTable.SP3947) as Kolvo, //|DocTable.SP3948 as Summa //|From //|_1sjourn as Journ //|inner join DH3957 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT3957 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|And DocHeader.SP3935 = ' 2Y7 ' -- Вид операции ОстаткиТМЦ //|Union All //|Select -- ВыпускПродукции //|DocHeader.IdDoc as IdDoc, //|'Приход' as PrihRash, //|'КупляПродажа' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP6883 as Sklad, //|NULLIf(DocHeader.SP6887,'17530101') as DataSklad, //|'' as Kontr, //|'' as KontrSklad, //|DocTable.SP6889 as Nomenkl, //|DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, //|DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa //|From //|_1sjourn as Journ //|inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|Union All |Select -- ПоступлениеТМЦ |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |Case |When Journ.SP798 in (" + СтрокаПроектВозврат + ") Then 'Возврат' |Else 'КупляПродажа' |End as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1565 as Sklad, |DocHeader.SP1555 as Kontr, |NULLIf(DocHeader.SP6561,'17530101') as DataSklad, |'' as KontrSklad, |DocTable.SP1569 as Nomenkl, |DocTable.SP1570 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1572) as Kolvo, |(Case | When DocHeader.SP1561 = 1 and DocHeader.SP1562 = 0 Then DocTable.SP1574 + DocTable.SP1575 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1574 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1558) as Summa |From |_1sjourn as Journ |inner join DH1582 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1582 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ПоступлениеТМЦИмпорт |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP3281 as Sklad, |DocHeader.SP3282 as Kontr, |NULLIf(DocHeader.SP6563,'17530101') as DataSklad, |'' as KontrSklad, |DocTable.SP3298 as Nomenkl, |DocTable.SP3299 * Fenix_TD.dbo.fn_NotNull(DocTable.SP3301) as Kolvo, |DocTable.SP3303 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP3285) + DocTable.SP3305 + DocTable.SP3307 as Summa -- + СуммаПошлиныРуб + СуммаНДСРуб |From |_1sjourn as Journ |inner join DH3311 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT3311 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- Реализация |DocHeader.IdDoc as IdDoc, |'Расход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1593 as Sklad, |DocHeader.SP1583 as Kontr, |NULLIf(DocHeader.SP6510,'17530101') as DataSklad, |'' as KontrSklad, |DocTable.SP1599 as Nomenkl, |DocTable.SP1600 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1602) as Kolvo, |(Case |When DocHeader.SP1589 = 1 and DocHeader.SP1590 = 0 Then DocTable.SP1604 + DocTable.SP1605 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1604 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1586) as Summa |From |_1sjourn as Journ |inner join DH1611 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1611 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ВозвратПоставщику |DocHeader.IdDoc as IdDoc, |'Расход' as PrihRash, |'Возврат' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1667 as Sklad, |DocHeader.SP1657 as Kontr, |NULLIf(DocHeader.SP6545,'17530101') as DataSklad, |'' as KontrSklad, |DocTable.SP1672 as Nomenkl, |DocTable.SP1673 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1675) as Kolvo, |(Case |When DocHeader.SP1663 = 1 and DocHeader.SP1664 = 0 Then DocTable.SP1677 + DocTable.SP1678 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1677 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1660) as Summa |From |_1sjourn as Journ |inner join DH1684 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1684 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ВозвратОтПокупателя |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'Возврат' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1639 as Sklad, |DocHeader.SP1629 as Kontr, |NULLIf(DocHeader.SP6543,'17530101') as DataSklad, |'' as KontrSklad, |DocTable.SP1644 as Nomenkl, |DocTable.SP1645 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1647) as Kolvo, |(Case |When DocHeader.SP1635 = 1 and DocHeader.SP1636 = 0 Then DocTable.SP1649 + DocTable.SP1650 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1649 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1632) as Summa |From |_1sjourn as Journ |inner join DH1656 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1656 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 //|Union All //|Select -- ОприходованиеТМЦ //|DocHeader.IdDoc as IdDoc, //|'Приход' as PrihRash, //|'ИзлишкиНедостачи' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP2094 as Sklad, //|NULLIf(DocHeader.SP6551,'17530101') as DataSklad, //|'' as Kontr, //|'' as KontrSklad, //|DocTable.SP2098 as Nomenkl, //|DocTable.SP2099 * Fenix_TD.dbo.fn_NotNull(DocTable.SP2101) as Kolvo, //|0 as Summa //|From //|_1sjourn as Journ //|inner join DH2106 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT2106 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|Union All //|Select -- СписаниеТМЦ //|DocHeader.IdDoc as IdDoc, //|'Расход' as PrihRash, //|'ИзлишкиНедостачи' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP1777 as Sklad, ////|CASE ISNULL(DocHeader.SP6570, CAST('17530101' as datetime)) WHEN CAST('19000101' as datetime) THEN CAST('17530101' as datetime) ELSE ISNULL(DocHeader.SP6570,CAST('17530101' as datetime)) END AS DataSklad //|NULLIf(DocHeader.SP6570,'17530101') as DataSklad, //|'' as Kontr, //|'' as KontrSklad, //|DocTable.SP1782 as Nomenkl, //|DocTable.SP1783 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1785) as Kolvo, //|0 as Summa //|From //|_1sjourn as Journ //|inner join DH1790 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT1790 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|Union All //|Select -- ПеремещениеТМЦ //|DocHeader.IdDoc as IdDoc, //|'Расход' as PrihRash, //|'Перемещение' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP3078 as Sklad, //|NULLIf(DocHeader.SP6511,'17530101') as DataSklad, //|'' as Kontr, //|DocHeader.SP1615 as KontrSklad, //|DocTable.SP1620 as Nomenkl, //|DocTable.SP1621 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1623) as Kolvo, //|0 as Summa //|From //|_1sjourn as Journ //|inner join DH1628 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT1628 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|And DocHeader.SP3078 <> DocHeader.SP1615 //|Union All //|Select -- ПеремещениеТМЦ (Приход) //|DocHeader.IdDoc as IdDoc, //|'Приход' as PrihRash, //|'Перемещение' as VidOper, //|Journ.SP798 as Project, //|NULLIf(DocHeader.SP6511,'17530101') as DataSklad, //|Journ.SP4056 as Org, //|DocHeader.SP1615 as Sklad, //|'' as Kontr, -- СкладОтправитель //|DocHeader.SP3078 as KontrSklad, //|DocTable.SP1620 as Nomenkl, //|DocTable.SP1621 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1623) as Kolvo, //|0 as Summa //|From //|_1sjourn as Journ //|inner join DH1628 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT1628 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|And DocHeader.SP3078 <> DocHeader.SP1615 |) as Docs |Group By |Docs.PrihRash, |Docs.DataSklad, |Docs.VidOper, |Docs.Project, |Docs.Org, |Docs.Sklad, |Docs.Kontr, |Docs.KontrSklad, |Docs.Nomenkl |" |
|||
1
Maxus43
11.04.12
✎
09:15
|
так и не понял, какой профит постоянно раскладку переключать...
|
|||
2
qeos
11.04.12
✎
09:17
|
это 77 чтоле?
|
|||
3
vasilii85
11.04.12
✎
09:17
|
автор решил выпендриться?
|
|||
4
Mort
11.04.12
✎
09:17
|
(1) Это прямой запрос к БД.
|
|||
5
Ranger_83
11.04.12
✎
09:17
|
(0)Комп ребутал?
|
|||
6
Maxus43
11.04.12
✎
09:18
|
(4) это 8-ка? таблицы другие
|
|||
7
Popkorm
11.04.12
✎
09:22
|
Это семерка,не в ту ветку попал походу
|
|||
8
Popkorm
11.04.12
✎
09:23
|
перенести тему в ветку 7.7 простые смертые могут,или только модератор?!
|
|||
9
spock
11.04.12
✎
09:25
|
(0)может тебе книжек каких почитать?
NULLIf(DocHeader.SP6887,'17530101') - а какой здесь смысл задумывался? |
|||
10
Popkorm
11.04.12
✎
09:33
|
(9)
'17530101' - ТАКАЯ ПУСТАЯ ДАТА В SQL |
|||
11
viktor_vv
11.04.12
✎
09:34
|
(9)+1 . Чет я тоже не понял.
|
|||
12
viktor_vv
11.04.12
✎
09:36
|
(10) Пустая дата имеет тип DateTime. И в твоем случае в начале запроса
|Declare @ПустаяДата as DateTime |Set @ПустаяДата = Convert(DateTime,'17530101',112) Ну и дальше эту переменную и используй. |
|||
13
spock
11.04.12
✎
09:39
|
(10)ну про 1753 я вкурсе, вопрос-то был в другом. Ты сам вкурсе как работает NULLIF?
|
|||
14
viktor_vv
11.04.12
✎
09:46
|
(13) Скорее всего он хочет чтобы при типизации к типам 1С получалась именно пустая дата.
|
|||
15
viktor_vv
11.04.12
✎
09:46
|
(12)* |Declare @ПустаяДата DateTime
|
|||
16
Popkorm
11.04.12
✎
09:47
|
(13)Если Дата(DocHeader.SP6887) не заполнена,то все равно выводим
|
|||
17
viktor_vv
11.04.12
✎
09:48
|
(16) По моему ты не прав.
|
|||
18
dk
11.04.12
✎
09:49
|
(16) не заполнена и null совсем не одно и то же
|
|||
19
Ёпрст
11.04.12
✎
09:50
|
(0)
>>>>>>>And Journ.CLOSED = 1 вот это туфа еще |
|||
20
viktor_vv
11.04.12
✎
09:50
|
(16) Если путая дата в поле, то есть Convert(DateTime,'17530101',112), то выведет Null.
|
|||
21
Ёпрст
11.04.12
✎
09:51
|
(0) DocHeader.SP6887 никогда не будет = null
|
|||
22
viktor_vv
11.04.12
✎
09:52
|
(20)+ Если я правильно перевел, хотя смущает вот это
"NULLIF returns a null value of the type of the first expression". Это скорее всего пустое значение с типом из первого выражения, и это скорее всего не NULL. |
|||
23
Popkorm
11.04.12
✎
09:53
|
(12)как то так имеешь виду:
|Select |Declare @ПустаяДата DateTime |Set @ПустаяДата = Convert(DateTime,'17530101',112) |Docs.PrihRash as [ВидДвиженияПриходРасход], |Docs.VidOper as [ВидОперацииСТоваром], |Docs.Project as [Проект $Справочник.Проекты], |Docs.Org as [Организация $Справочник.Фирмы], |Docs.Sklad as [Склад $Справочник.Склады], |Docs.DataSklad as [ДатаОтчета], |Docs.Kontr as [Контрагент $Справочник.Контрагенты], |Docs.KontrSklad as [КонтрагентСклад $Справочник.Склады], |Docs.Nomenkl as [Номенклатура $Справочник.Номенклатура], |Sum(Docs.Kolvo) as [Количество], |Sum(Docs.Summa) as [Сумма] |From |( |Select -- ВыпускПродукции |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP6883 as Sklad, |NULLIf(DocHeader.SP6887,ПустаяДата) as DataSklad, |'' as Kontr, |'' as KontrSklad, |DocTable.SP6889 as Nomenkl, |DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, |DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa |From |_1sjourn as Journ |inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |
|||
24
Popkorm
11.04.12
✎
09:55
|
(22) в Скуле в поле SP6887 именно 1753-01-01
|
|||
25
Ёпрст
11.04.12
✎
09:55
|
(23) еще раз, DocHeader.SP6887 никогда не равен null и писать nullif не имеет смысла
|
|||
26
Popkorm
11.04.12
✎
09:58
|
(15)так что ли :
|CASE WHEN (DocHeader.SP6887='17530101')THEN (DH679.SP878= ПустаяДата)AS DataSklad |
|||
27
viktor_vv
11.04.12
✎
10:03
|
(26) Фигню написал. Ты цель скажи, для чего ?
|
|||
28
Ёпрст
11.04.12
✎
10:04
|
(26) с логикой у тя хреново.
SP6887 - Это что за реквизит ? Тип какой у него в метаданных ? И еще раз - почему не используешь метапарсер ? Че за дикий изврат писать имена полей руками ? |
|||
29
viktor_vv
11.04.12
✎
10:07
|
(28) Скорее всего "Дата".
(26) |CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN ЗначениеКакоеТы хочешьВывестиВместо Else DocHeader.SP6887 End AS DataSklad |
|||
30
Popkorm
11.04.12
✎
10:13
|
(28)DocHeader.SP6887 (Тип Datatime),да я только пол года как занимаюсь 7.7,так что метапастер надо еще устанавливать,читать как он работает.
(29)"ЗначениеКакоеТы хочешьВывестиВместо" можно даже 0 |
|||
31
Popkorm
11.04.12
✎
10:14
|
(30) ступил,так наверное '19000101'
|
|||
32
Ёпрст
11.04.12
✎
10:22
|
(30) >>>>>что метапастер надо еще устанавливать
^)))))))))))))))))))))))))))))))))))))))))))))))))))))) |
|||
33
viktor_vv
11.04.12
✎
10:23
|
(30) А это что :)).
Docs.Project as [Проект $Справочник.Проекты], |
|||
34
Ёпрст
11.04.12
✎
10:24
|
Не надо ничего устанавливать, заместо нелепых
|DocHeader.SP1667 пишешь |$DocHeader.ИмяРеквизитаКакВМетаданных и привет, например, |$DocHeader.Склад |
|||
35
viktor_vv
11.04.12
✎
10:27
|
(30) |CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN Null Else DocHeader.SP6887 End AS [DataSklad $Дата]
Будет тебе при типизации к типам 1С пусая дата в ТЗ. |
|||
36
Popkorm
11.04.12
✎
10:28
|
Ошибка
ncorrect syntax near the keyword 'Declare'. |Select |Declare @ПустаяДата DateTime |Set @ПустаяДата = Convert(DateTime,'17530101',112) |Docs.PrihRash as [ВидДвиженияПриходРасход], |Docs.VidOper as [ВидОперацииСТоваром], |Docs.Project as [Проект $Справочник.Проекты], |Docs.Org as [Организация $Справочник.Фирмы], |Docs.Sklad as [Склад $Справочник.Склады], |Docs.DataSklad as [ДатаОтчета], |Docs.Kontr as [Контрагент $Справочник.Контрагенты], |Docs.KontrSklad as [КонтрагентСклад $Справочник.Склады], |Docs.Nomenkl as [Номенклатура $Справочник.Номенклатура], |Sum(Docs.Kolvo) as [Количество], |Sum(Docs.Summa) as [Сумма] |From |( |Select -- ВыпускПродукции |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP6883 as Sklad, |CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN '19000101' Else DocHeader.SP6887 End AS DataSklad |'' as Kontr, |'' as KontrSklad, |DocTable.SP6889 as Nomenkl, |DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, |DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa |From |_1sjourn as Journ |inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |
|||
37
viktor_vv
11.04.12
✎
10:28
|
|Declare @ПустаяДата DateTime
|Set @ПустаяДата = Convert(DateTime,'17530101',112) |Select |
|||
38
Popkorm
11.04.12
✎
10:38
|
Ошибочка:
: Incorrect syntax near |Declare @ПустаяДата DateTime |Set @ПустаяДата = Convert(DateTime,'17530101',112) |Select |Docs.PrihRash as [ВидДвиженияПриходРасход], |Docs.VidOper as [ВидОперацииСТоваром], |Docs.Project as [Проект $Справочник.Проекты], |Docs.Org as [Организация $Справочник.Фирмы], |Docs.Sklad as [Склад $Справочник.Склады], |Docs.DataSklad as [ДатаОтчета], |Docs.Kontr as [Контрагент $Справочник.Контрагенты], |Docs.KontrSklad as [КонтрагентСклад $Справочник.Склады], |Docs.Nomenkl as [Номенклатура $Справочник.Номенклатура], |Sum(Docs.Kolvo) as [Количество], |Sum(Docs.Summa) as [Сумма] |From |( |Select -- ВыпускПродукции |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP6883 as Sklad, |CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN '19000101' Else DocHeader.SP6887 End AS DataSklad |'' as Kontr, |'' as KontrSklad, |DocTable.SP6889 as Nomenkl, |DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, |DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa |From |_1sjourn as Journ |inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |
|||
39
viktor_vv
11.04.12
✎
10:43
|
CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN '19000101' Else DocHeader.SP6887 End AS DataSklad,
Запятая |
|||
40
Ёпрст
11.04.12
✎
10:48
|
еще раз
And Journ.CLOSED = 1 - это полная лажа |
|||
41
Popkorm
11.04.12
✎
11:05
|
(39)по Выпуску вроде пошла Лошадка,спасибо за помощь,подскажи пожалуста как по ВводОстатковТМЦ(у него нет поля DataSklad)
|
|||
42
Ёпрст
11.04.12
✎
11:10
|
(41) тебе уже говорили, null пихать туда.
|
|||
43
spock
11.04.12
✎
11:45
|
Внимание, вопрос про 1с! Зачем обрабатывать как-то хитро реквизиты типа Дата? Даже если там 17530101 или NULL (фантастишь) - все будет корректно обработано, при отборе в ТЗ.
Там, где нет полей под эту дату пихаем CAST('17530101' as datetime) as DataSklad Больше ничего не надо, тем более через NULLIF |
|||
44
viktor_vv
11.04.12
✎
11:52
|
(43) Если пустая дата в поле, то в ТЗ получится что-то типа "01.01.53", а хочется " . . " .
|
|||
45
spock
11.04.12
✎
11:56
|
(44)даладно?
|
|||
46
viktor_vv
11.04.12
✎
11:58
|
(45) Ну не знаю, у меня так выходит.
|
|||
47
spock
11.04.12
✎
11:58
|
(46)таки да, спутал с oledb. Там я это реализовывал в "коробке".
|
|||
48
viktor_vv
11.04.12
✎
11:59
|
(46) Плюс проверка поля ТЗ на ПустоеЗначение() если там CAST('17530101' as datetime) выдаст значение заполнено.
|
|||
49
Z1
11.04.12
✎
12:14
|
(48) заведи в ТЗ еще одну колонку пустая дата и все получиться
пример ТекстЗапроса = "select (case when Полеsql as datetime < CAST('17530102' as datetime) |then 1 else 0 end ) as ДатаПустая "; если ДатаПустая = 1 то дата пустая иначе дата есть. |
|||
50
Z1
11.04.12
✎
12:15
|
в 49 ошибся надо так :
ТекстЗапроса = "select (case when Полеsql < CAST('17530102' as datetime) |then 1 else 0 end ) as ДатаПустая "; |
|||
51
viktor_vv
11.04.12
✎
12:16
|
(49) Да вот так нормально отрабатывает с типизацией.
|CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN Null Else DocHeader.SP6887 End AS [DataSklad $Дата] |
|||
52
Z1
11.04.12
✎
12:25
|
(51) у меня на тесте 51 работает и тоже 50 работает
в каждом конкретном случае может или 50 или 51 быть предпочтительнее. (0) уже есть из чего выбирать |
|||
53
PZh
11.04.12
✎
12:26
|
Тоже вариант:
|
|||
54
viktor_vv
11.04.12
✎
12:59
|
Таки вместо
|CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN Null Else DocHeader.SP6887 End AS [DataSklad $Дата] Можно и NullIf использовать |NullIf(DocHeader.SP6887,@ПустаяДата) AS [DataSklad $Дата] Получается эти выражение одинаковый результат выдают. |
|||
55
Ёпрст
11.04.12
✎
13:04
|
(54) таки нет, DocHeader.SP6887 никогда не равен null, как бэ
|
|||
56
viktor_vv
11.04.12
✎
13:07
|
(55) Там действие этой функции отличается от ISNull().
Если выражения равны, то возвращается Null, если не равны, то первое. Из BOL "NULLIF returns the first expression if the two expressions are not equivalent. If the expressions are equivalent, NULLIF returns a null value of the type of the first expression." |
|||
57
viktor_vv
11.04.12
✎
13:09
|
(56) Единственно меня смутило
"NULLIF returns a null value of the type of the first expression" Но проверил что-то типа такого ТекстЗапроса = " |Declare @ПустаяДата1С DateTime |Set @ПустаяДата1С = Convert(DateTime,'17530101',112) | |Select | ДокШапкаЛого.IDDOC as [ДокЛого $Документ.ЛоготипыНаГП], | $ДокШапкаЛого.ДатаВыхода as [ДатаВыхода $Дата], | $ДокШапкаЛого.СрокИзмененный as [СрокВыходаЧистый $Дата], | NullIf($ДокШапкаЛого.СрокИзмененный,@ПустаяДата1С) as [СрокВыхода $Дата], | Case When NullIf($ДокШапкаЛого.СрокИзмененный,@ПустаяДата1С) is null Then 1 Else 0 End as ПроверкаNull, //| $ДокШапкаЛого.СрокИзмененный as [СрокВыхода $Дата] | Case When $ДокШапкаЛого.СрокИзмененный = @ПустаяДата1С Then Null Else $ДокШапкаЛого.СрокИзмененный End as [СрокВыходаCase $Дата] |
|||
58
Popkorm
11.04.12
✎
14:07
|
Вообщем так, ошибка:
|CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN Null Else DocHeader.SP6887 End AS [DataSklad $Дата] так без ошибок,но DataSklad не затягивается: |CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN Null Else DocHeader.SP6887 End AS DataSklad, |
|||
59
Popkorm
11.04.12
✎
14:10
|
Блин уже и так не затягивается:
|NULLIf(DocHeader.SP6510,'17530101') as DataSklad, а затягивалась для Реализации |
|||
60
viktor_vv
11.04.12
✎
14:30
|
(59) Ну ты копипастить-то умеешь
NullIf(DocHeader.SP6510,@ПустаяДата) Только надеюсь ты объвление @ПустаяДата не потерял. И запомни, все что в кофигураторе имеет тип "дата" в базе это DateTime. К дате документа это не относится. |
|||
61
viktor_vv
11.04.12
✎
14:31
|
(59) И не совсем понимаю, что значит не затягивается. Ты это в условие пихаешь что ли ?
|
|||
62
Popkorm
11.04.12
✎
14:35
|
(61)да я через КД 2.1.5 затягиваю,этот запрос у меня в в группе свойств(ПКГС)
|
|||
63
viktor_vv
11.04.12
✎
14:41
|
(62) Ну ты все-таки типизируй лучше, хотя вроде в дату оно на автомате типизирует.
NullIf(DocHeader.SP6510,@ПустаяДата) as [DataSklad $Дата], (58) В первом ты скорее всего в конце запятую потерял. |
|||
64
Popkorm
11.04.12
✎
16:05
|
(63)вообщем все что закоментино,не срабатывает,остальное работает:
|Declare @ПустаяДата DateTime |Set @ПустаяДата = Convert(DateTime,'17530101',112) |Select |Docs.PrihRash as [ВидДвиженияПриходРасход], |Docs.VidOper as [ВидОперацииСТоваром], |Docs.Project as [Проект $Справочник.Проекты], |Docs.Org as [Организация $Справочник.Фирмы], |Docs.Sklad as [Склад $Справочник.Склады], |Docs.DataSklad as [ДатаОтчета], |Docs.Kontr as [Контрагент $Справочник.Контрагенты], |Docs.KontrSklad as [КонтрагентСклад $Справочник.Склады], |Docs.Nomenkl as [Номенклатура $Справочник.Номенклатура], |Sum(Docs.Kolvo) as [Количество], |Sum(Docs.Summa) as [Сумма] |From |( //|Select -- ВводОстатковТМЦ //|DocHeader.IdDoc as IdDoc, //|'Приход' as PrihRash, //|'НачальныйОстаток' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP3941 as Sklad, //|CASE WHEN (@ПустаяДата) THEN Null Else @ПустаяДата End AS DataSklad, //|'' as Kontr, //|'' as KontrSklad, //|DocTable.SP3944 as Nomenkl, //|DocTable.SP3945 * Fenix_TD.dbo.fn_NotNull(DocTable.SP3947) as Kolvo, //|DocTable.SP3948 as Summa //|From //|_1sjourn as Journ //|inner join DH3957 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT3957 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|And DocHeader.SP3935 = ' 2Y7 ' -- Вид операции ОстаткиТМЦ //|Union All //|Select -- ВыпускПродукции //|DocHeader.IdDoc as IdDoc, //|'Приход' as PrihRash, //|'КупляПродажа' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP6883 as Sklad, ////|CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN Null Else DocHeader.SP6887 End AS [DataSklad $Дата] //|CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN Null Else DocHeader.SP6887 End AS DataSklad, //|'' as Kontr, //|'' as KontrSklad, //|DocTable.SP6889 as Nomenkl, //|DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, //|DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa //|From //|_1sjourn as Journ //|inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|Union All |Select -- ПоступлениеТМЦ |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |Case |When Journ.SP798 in (" + СтрокаПроектВозврат + ") Then 'Возврат' |Else 'КупляПродажа' |End as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1565 as Sklad, |DocHeader.SP1555 as Kontr, //|NULLIf(DocHeader.SP6561,'17530101') as DataSklad, |CASE WHEN (DocHeader.SP6561=@ПустаяДата)THEN Null Else DocHeader.SP6561 End AS DataSklad, |'' as KontrSklad, |DocTable.SP1569 as Nomenkl, |DocTable.SP1570 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1572) as Kolvo, |(Case | When DocHeader.SP1561 = 1 and DocHeader.SP1562 = 0 Then DocTable.SP1574 + DocTable.SP1575 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1574 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1558) as Summa |From |_1sjourn as Journ |inner join DH1582 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1582 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ПоступлениеТМЦИмпорт |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP3281 as Sklad, |DocHeader.SP3282 as Kontr, //|NULLIf(DocHeader.SP6563,'17530101') as DataSklad, |CASE WHEN (DocHeader.SP6563=@ПустаяДата)THEN Null Else DocHeader.SP6563 End AS DataSklad, |'' as KontrSklad, |DocTable.SP3298 as Nomenkl, |DocTable.SP3299 * Fenix_TD.dbo.fn_NotNull(DocTable.SP3301) as Kolvo, |DocTable.SP3303 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP3285) + DocTable.SP3305 + DocTable.SP3307 as Summa -- + СуммаПошлиныРуб + СуммаНДСРуб |From |_1sjourn as Journ |inner join DH3311 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT3311 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- Реализация |DocHeader.IdDoc as IdDoc, |'Расход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1593 as Sklad, |DocHeader.SP1583 as Kontr, //|NULLIf(DocHeader.SP6510,@ПустаяДата) as DataSklad, |CASE WHEN (DocHeader.SP6510=@ПустаяДата)THEN Null Else DocHeader.SP6510 End AS DataSklad, |'' as KontrSklad, |DocTable.SP1599 as Nomenkl, |DocTable.SP1600 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1602) as Kolvo, |(Case |When DocHeader.SP1589 = 1 and DocHeader.SP1590 = 0 Then DocTable.SP1604 + DocTable.SP1605 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1604 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1586) as Summa |From |_1sjourn as Journ |inner join DH1611 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1611 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ВозвратПоставщику |DocHeader.IdDoc as IdDoc, |'Расход' as PrihRash, |'Возврат' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1667 as Sklad, |DocHeader.SP1657 as Kontr, //|NULLIf(DocHeader.SP6545,'17530101') as DataSklad, |CASE WHEN (DocHeader.SP6545=@ПустаяДата)THEN Null Else DocHeader.SP6545 End AS DataSklad, |'' as KontrSklad, |DocTable.SP1672 as Nomenkl, |DocTable.SP1673 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1675) as Kolvo, |(Case |When DocHeader.SP1663 = 1 and DocHeader.SP1664 = 0 Then DocTable.SP1677 + DocTable.SP1678 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1677 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1660) as Summa |From |_1sjourn as Journ |inner join DH1684 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1684 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ВозвратОтПокупателя |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'Возврат' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1639 as Sklad, |DocHeader.SP1629 as Kontr, //|NULLIf(DocHeader.SP6543,'17530101') as DataSklad, |CASE WHEN (DocHeader.SP6543=@ПустаяДата)THEN Null Else DocHeader.SP6543 End AS DataSklad, |'' as KontrSklad, |DocTable.SP1644 as Nomenkl, |DocTable.SP1645 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1647) as Kolvo, |(Case |When DocHeader.SP1635 = 1 and DocHeader.SP1636 = 0 Then DocTable.SP1649 + DocTable.SP1650 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1649 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1632) as Summa |From |_1sjourn as Journ |inner join DH1656 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1656 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 //|Union All //|Select -- ОприходованиеТМЦ //|DocHeader.IdDoc as IdDoc, //|'Приход' as PrihRash, //|'ИзлишкиНедостачи' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP2094 as Sklad, ////|NULLIf(DocHeader.SP6551,'17530101') as DataSklad, //|CASE WHEN (DocHeader.SP6551=@ПустаяДата)THEN Null Else DocHeader.SP6551 End AS DataSklad, //|'' as Kontr, //|'' as KontrSklad, //|DocTable.SP2098 as Nomenkl, //|DocTable.SP2099 * Fenix_TD.dbo.fn_NotNull(DocTable.SP2101) as Kolvo, //|0 as Summa //|From //|_1sjourn as Journ //|inner join DH2106 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT2106 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|Union All //|Select -- СписаниеТМЦ //|DocHeader.IdDoc as IdDoc, //|'Расход' as PrihRash, //|'ИзлишкиНедостачи' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP1777 as Sklad, ////|NULLIf(DocHeader.SP6570,'17530101') as DataSklad, //|CASE WHEN (DocHeader.SP6570=@ПустаяДата)THEN Null Else DocHeader.SP6570 End AS DataSklad, //|'' as Kontr, //|'' as KontrSklad, //|DocTable.SP1782 as Nomenkl, //|DocTable.SP1783 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1785) as Kolvo, //|0 as Summa //|From //|_1sjourn as Journ //|inner join DH1790 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT1790 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|Union All //|Select -- ПеремещениеТМЦ //|DocHeader.IdDoc as IdDoc, //|'Расход' as PrihRash, //|'Перемещение' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP3078 as Sklad, ////|NULLIf(DocHeader.SP6511,'17530101') as DataSklad, //|CASE WHEN (DocHeader.SP6511=@ПустаяДата)THEN Null Else DocHeader.SP6511 End AS DataSklad, //|'' as Kontr, //|DocHeader.SP1615 as KontrSklad, //|DocTable.SP1620 as Nomenkl, //|DocTable.SP1621 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1623) as Kolvo, //|0 as Summa //|From //|_1sjourn as Journ //|inner join DH1628 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT1628 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|And DocHeader.SP3078 <> DocHeader.SP1615 //|Union All //|Select -- ПеремещениеТМЦ (Приход) //|DocHeader.IdDoc as IdDoc, //|'Приход' as PrihRash, //|'Перемещение' as VidOper, //|Journ.SP798 as Project, ////|NULLIf(DocHeader.SP6511,'17530101') as DataSklad, //|CASE WHEN (DocHeader.SP6511=@ПустаяДата)THEN Null Else DocHeader.SP6511 End AS DataSklad, //|Journ.SP4056 as Org, //|DocHeader.SP1615 as Sklad, //|'' as Kontr, -- СкладОтправитель //|DocHeader.SP3078 as KontrSklad, //|DocTable.SP1620 as Nomenkl, //|DocTable.SP1621 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1623) as Kolvo, //|0 as Summa //|From //|_1sjourn as Journ //|inner join DH1628 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT1628 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 //|And DocHeader.SP3078 <> DocHeader.SP1615 |) as Docs |Group By |Docs.PrihRash, |Docs.DataSklad, |Docs.VidOper, |Docs.Project, |Docs.Org, |Docs.Sklad, |Docs.Kontr, |Docs.KontrSklad, |Docs.Nomenkl |" если [DataSklad $Дата],то ругается на DataSklad.. |
|||
65
Popkorm
11.04.12
✎
16:11
|
может так еще :
Where (Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "')AND (NULLIf(DocHeader.SP6511,@ПустаяДата)='" + Формат(Источник,"ДГГГГММДД") + "') |
|||
66
Ёпрст
11.04.12
✎
16:18
|
(65) для начала, всё в топку и переписать всё с использованием метапарсера.
Смотреть на твою простыню как-то не улыбает |
|||
67
Ёпрст
11.04.12
✎
16:20
|
еще раз, выкини этот бред
|'' as KontrSklad, и пиши по-русски |$ПустойИД as KontrSklad, |
|||
68
viktor_vv
11.04.12
✎
16:23
|
(66) +1.
И еще отлаживай запросы по отдельности. А то теперь непонятно сверху смотреть закоментированное или снизу или посередине отдельные строчки. |
|||
69
Ёпрст
11.04.12
✎
16:24
|
да, пользуй консоль отчетов в 1с для отладки своих запросов.
|
|||
70
PZh
11.04.12
✎
16:25
|
Я вообще ничего не понял.
Но что-то мне подсказывает, что самоцель - обязательное использование NULLIF! Да? |
|||
71
viktor_vv
11.04.12
✎
16:29
|
(65) Вот тут я совсем потерялся, зачем , но вообще-то для выборки документов из периода
Where Journ.DATE_TIME_IDDOC between :ДатаИсточник and :ДатаИсточник~ глЗапросСКЛ.УслановитьТекстовыйПараметр("ДатаИсточник",Источник); Или если так очень хочется, то Where Journ.DATE_TIME_IDDOC between '" + Формат(Источник,"ДГГГГММДД") + "' and '" + Формат(Источник,"ДГГГГММДД") + "z' |
|||
72
Popkorm
11.04.12
✎
16:36
|
(68)запрос работает в том виде как вылажил в (64),то что закоментил,к примеру :
//|Select -- ВыпускПродукции //|DocHeader.IdDoc as IdDoc, //|'Приход' as PrihRash, //|'КупляПродажа' as VidOper, //|Journ.SP798 as Project, //|Journ.SP4056 as Org, //|DocHeader.SP6883 as Sklad, //|CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN Null Else DocHeader.SP6887 End AS DataSklad, //|'' as Kontr, //|'' as KontrSklad, //|DocTable.SP6889 as Nomenkl, //|DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, //|DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa //|From //|_1sjourn as Journ //|inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc //|inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' //|And Journ.CLOSED = 1 эти таблицы не работают |
|||
73
Popkorm
11.04.12
✎
16:36
|
если раскоментить одну из них,то выкидывает ошибку
|
|||
74
Popkorm
11.04.12
✎
16:39
|
блин а Реализация,ПоступлениеТМЦ, и Возвраты отрабатываю
|
|||
75
Ёпрст
11.04.12
✎
16:42
|
|And Journ.CLOSED = 1 - это не верно
|
|||
76
Ёпрст
11.04.12
✎
16:42
|
|'' as Kontr,
|'' as KontrSklad, это тоже |
|||
77
Ёпрст
11.04.12
✎
16:43
|
интересно еще посмотреть, что вот это Fenix_TD.dbo.fn_NotNull
|
|||
78
viktor_vv
11.04.12
✎
16:46
|
(73) А текст ошибки озвучь.
|
|||
79
Popkorm
11.04.12
✎
17:11
|
(78)вот эту таблицу раскоментил и ошибка:
State 22007, native 241, message [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string. |Select -- ВыпускПродукции |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP6883 as Sklad, |CASE WHEN (DocHeader.SP6887=@ПустаяДата)THEN Null Else DocHeader.SP6887 End AS DataSklad, |'' as Kontr, |'' as KontrSklad, |DocTable.SP6889 as Nomenkl, |DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, |DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa |From |_1sjourn as Journ |inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |
|||
80
viktor_vv
11.04.12
✎
17:28
|
А тип значения реквизита DocHeader.SP6887 в конфигураторе точно "Дата" ? Или с скуле посмотри DateTime ?
|
|||
81
Popkorm
11.04.12
✎
17:42
|
||||
82
Popkorm
11.04.12
✎
17:46
|
извенияюсь,для Выпуска вот:
http://clip2net.com/s/1NtjQ |
|||
83
viktor_vv
11.04.12
✎
17:47
|
Ну ХЗ уже. Попробуй, чтобы локализовать.
|DocHeader.SP6887 AS DataSklad, будет ошибка ? |
|||
84
Popkorm
11.04.12
✎
18:07
|
(84)да блин ошибка такая же:
message [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string. |Select -- ВыпускПродукции |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP6883 as Sklad, |DocHeader.SP6887 as DataSklad, |'' as Kontr, |'' as KontrSklad, |DocTable.SP6889 as Nomenkl, |DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, |DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa |From |_1sjourn as Journ |inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |
|||
85
viktor_vv
11.04.12
✎
18:10
|
У тебя там поле пропущено в Select, которое есть в других запосах. Поэтому при Union All он пытается строку из другого поля с DateTime скрестить.
|
|||
86
viktor_vv
11.04.12
✎
18:12
|
Сравни
|Select -- ВозвратПоставщику |DocHeader.IdDoc as IdDoc, |'Расход' as PrihRash, |'Возврат' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1667 as Sklad, |DocHeader.SP1657 as Kontr, //|NULLIf(DocHeader.SP6545,'17530101') as DataSklad, |CASE WHEN (DocHeader.SP6545=@ПустаяДата)THEN Null Else DocHeader.SP6545 End AS DataSklad, и |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP6883 as Sklad, |DocHeader.SP6887 as DataSklad, |'' as Kontr, надо перекинуть вот так |'' as Kontr, |DocHeader.SP6887 as DataSklad, |
|||
87
viktor_vv
11.04.12
✎
18:14
|
Union All объединяет не по алиасам, а по порядку следования полей в Select.
|
|||
88
ЧеловекДуши
11.04.12
✎
18:18
|
Запрос отстой, ты хоть используешь 1С++ или еще какой ВК?
Или все пишешь через АДО, через ДДС файл :) |
|||
89
Popkorm
11.04.12
✎
18:18
|
(86)а этот |'' as KontrSklad, оставить на своем месте?
|
|||
90
ЧеловекДуши
11.04.12
✎
18:20
|
>>> '" + Формат(Источник,"ДГГГГММДД") + "'
Вот это жесть :) Автор, 1С++ Уложить в параметр текстовый :) |
|||
91
viktor_vv
11.04.12
✎
18:21
|
Ну посчитай по порядку поля. Во всех запросах порядок следования должен совпадать.
Конкренто тут вот так. |Select -- ВыпускПродукции |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP6883 as Sklad, |'' as Kontr, |DocHeader.SP6887 as DataSklad, |'' as KontrSklad, |DocTable.SP6889 as Nomenkl, |DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, |DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa |From |_1sjourn as Journ |inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 ну и верни обратно Case. |
|||
92
Popkorm
11.04.12
✎
18:22
|
(90)да не бей сильно,1С++ только начал работать,переношу с 1С 7.7 в 1С8.2....С 7.7 только как пол года работаю
|
|||
93
ЧеловекДуши
11.04.12
✎
18:22
|
Автор, а чему ровна у тебя "@ПустаяДата" ?
Ты бы хоть сперва убрал бы комментарий, вставил полноценный текст по правилам 1С++ и привел полный код |
|||
94
ЧеловекДуши
11.04.12
✎
18:24
|
(92) тогда сперва расшифруй поля типо "SP798" и получишь то что надо, т.е. запрос будет читабельным для тебя же.
А пока это простое издевательство над собою :) |
|||
95
viktor_vv
11.04.12
✎
18:25
|
(93) Да есть там все. Ветка-то длинная :).
|
|||
96
viktor_vv
11.04.12
✎
18:25
|
(95)+
|Declare @ПустаяДата DateTime |Set @ПустаяДата = Convert(DateTime,'17530101',112) |
|||
97
ЧеловекДуши
11.04.12
✎
18:26
|
>>>fn_NotNull(DocTable.SP6892)
Явная функция, написано гуанокодером :) Хорошо бы её разобрать, будет легче. |
|||
98
Popkorm
11.04.12
✎
18:26
|
(94) в (64)есть
|Declare @ПустаяДата DateTime |Set @ПустаяДата = Convert(DateTime,'17530101',112) |
|||
99
viktor_vv
11.04.12
✎
18:28
|
(92) В восьмерке Объединить Все по такому же принципу работает.
|
|||
100
ЧеловекДуши
11.04.12
✎
18:28
|
(98) Круто, писал явный извращенец :)
Я так пишу только при написании функций, а так что бы из модуля вызывать, так это перебор :) Вот сайт, может поможет, там про 1С++ http://www.1cpp.ru/forum/YaBB.pl?num=1288774760/all |
|||
101
viktor_vv
11.04.12
✎
18:31
|
(100) Ну я посоветовал :). Ну можно установить текстовый параметр, чем оно лучше ? Как по мне, так это внутренняя переменная запроса, нафиг ее снаружи устанавливать.
|
|||
102
viktor_vv
11.04.12
✎
18:32
|
(101)+ И смысл особо не меняется.
|
|||
103
ЧеловекДуши
11.04.12
✎
18:34
|
>>> And Journ.CLOSED = 1
Вот эту ересть исправь на: And ((Journ.CLOSED & 1) = 1) |
|||
104
Popkorm
11.04.12
✎
18:46
|
(92) да,только хотел сказать что как в 8-ке объединения,спасибо большое все работает
|
|||
105
Popkorm
11.04.12
✎
18:47
|
(102)вообщем с меня пиво,либо тортик.Еще раз спасибо
|
|||
106
viktor_vv
11.04.12
✎
19:27
|
(105) Будете у нас на Колыме, то есть в Киеве :).
|
|||
107
viktor_vv
11.04.12
✎
19:34
|
(103) А в чем разница ? Это я для себя уяснить хочу, а то не совсем догоняю. То что Closed битовый тип данных видел, не пойму в чем разница в обращении к нему. Оно как бы и Closed = 1 работает.
|
|||
108
viktor_vv
11.04.12
✎
19:36
|
(107)+ То есть tinyint тип данных.
|
|||
109
Ёпрст
11.04.12
✎
21:02
|
(107) то что closed = 1..5 , а не только 1
|
|||
110
viktor_vv
11.04.12
✎
22:00
|
(109) Насколько я понял там от установленных флагов учета в доке зависит.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |