|
v7: Еще вопрос по прямым запросам | ☑ | ||
---|---|---|---|---|
0
pofigos
21.11.13
✎
20:10
|
И снова вопрос:
ТекстЗапроса = " |SELECT ОсновнойОстатки.Субконто1 [Контрагент $Справочник.Контрагенты] |, $Сотрудник.Филиал [Филиал $Справочник.Подразделение] |, ДокТТН.IdDoc as [Докум $Документ.ТТННаОрганизациюТовары] |, $ДокТТН.Менеджер [Сотрудник $Справочник.Сотрудники] |, $ДокТТН.Всего as Сумма |, ОсновнойОстатки.СуммаОстаток as СуммаДолга |, Case |WHEN LEFT($ГрафикОплат.ДатаОплаты,8) <> '01011753' THEN $ГрафикОплат.ДатаОплаты |ELSE | Case | WHEN $Договора.ВидДоговора = :ДогБанк1 THEN $ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, :ВыбДата) | WHEN $Договора.ВидДоговора = :ДогБанк2 THEN $ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, :ВыбДата) | WHEN $Договора.ВидДоговора = :ДогБанк3 THEN $ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, :ВыбДата) | ELSE $ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, :ВыбДата) | END |END ДатаОплаты | |, ГруппировкаДок.Группировка [Группировка $Перечисление.УкрупненныеГруппировки] | |FROM $БИОстатки.Основной(:ВыбДата~ | , | ,(Счет = :ВыбСчет) | ,(Субконто1,Субконто2) | , Фильтр) AS ОсновнойОстатки | |LEFT JOIN $Справочник.Документы AS Документы (NOLOCK) on Документы.id = ОсновнойОстатки.Субконто2 |LEFT JOIN $Справочник.Договора AS Договора (NOLOCK) on Договора.id = RIGHT($Документы.ДоговорДок,9) |LEFT JOIN $Справочник.ГрафикОплат AS ГрафикОплат (NOLOCK) on $ГрафикОплат.Докум = $Документы.СсылкаНаДокумент |INNER JOIN $Документ.ТТННаОрганизациюТовары as ДокТТН (NOLOCK) on ДокТТН.IdDoc = RIGHT($Документы.СсылкаНаДокумент,9) |LEFT JOIN $Справочник.Сотрудники AS Сотрудник (NOLOCK) on Сотрудник.id = $ДокТТН.Менеджер |LEFT JOIN ( | SELECT DISTINCT $Группировки.УкрупненнаяГруппировка Группировка | , ТТННаОрганизациюТоварыСтроки.IDDOC Ссылка | FROM $ДокументСтроки.ТТННаОрганизациюТовары AS ТТННаОрганизациюТоварыСтроки With (NOLOCK) | LEFT JOIN $Справочник.ВидыТоваров AS ВидыТоваров (NOLOCK) on ВидыТоваров.id = $ТТННаОрганизациюТоварыСтроки.ВидТМЦ | LEFT JOIN $Справочник.Группировки AS Группировки (NOLOCK) on Группировки.id = $ВидыТоваров.Группировки | ) as ГруппировкаДок on ДокТТН.IdDoc = ГруппировкаДок.Ссылка | |WHERE (ОсновнойОстатки.СуммаОстаток > 0) | |Условия |"; 1. Как в WHEN $Договора.ВидДоговора = :ДогБанк1 THEN $ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, :ВыбДата) передать вместо :ВыбДата ДокТТН.ДатаДок? 2. Как правильно Уложить список объектов и сравнить с этим списком, если параметры перечисления? Помогите начинающим... |
|||
1
pofigos
21.11.13
✎
20:25
|
(0) Так же интересно, $ПоследнееЗначение.ВидСправочник.Реквизит(,,,) имеет последний параметр ДокИД, что в принципе можно получить значение на позицию документа.. но что-то не взлетело. ругается на 2-й параметр.
|
|||
2
Z1
21.11.13
✎
21:05
|
(0)
В Список1 помещаешь перечисления далее уложитьсписокОбъектов ПрямойЗапрос.УложитьСписокОбъектов(Список1,"#Х_СписокЯч1"); Здесь важно что опускаешь третий параметр также можно делать типизацию в самом запросе так : $Перечисление.ПризнПрих.Закупка (1) ты путаешь речь идет о периодических реквизитах двигаемых документами ( хотя могу и ошибаться потому что не использую периодич реквизиты ) |
|||
3
viktor_vv
21.11.13
✎
22:00
|
(1) $ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, :ВыбДата~~)
Там у ыторого параметра тип должен быть DateTime. :ВыбДата~~ |
|||
4
pofigos
22.11.13
✎
13:19
|
(2)$Договора.ВидДоговора этот параметр и есть перечисление. Вот и хотел case отсортировать. дальше влияет на выбор подсчета либо банковские либо календарные дни...
только вот не получилось, поэтому в ELSE еще 3 case. Может не верно сравнение провел? Case |WHEN $Договора.ВидДоговора IN (SELECT Val FROM #СписокВидовДог) THEN (3) в принципе это понятно. Взлетело $ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, LEFT(Журнал.DATE_TIME_IDDOC,8)) Пришлось документ с журналом джойнить. |
|||
5
pofigos
22.11.13
✎
13:21
|
Тут еще загвоздка... хотелось сразу возвращать в запросе что-то вроде ДатаДок + энное количество дней). Это вообще возможно реализовать?
Кошусь в сторону CREATE FUNCTION() только примеров не нашел ( |
|||
6
pofigos
22.11.13
✎
13:29
|
(5) Конечно больше кошусь на функцию DATEADD (datepart , number , date )
Только вот пока не могу понять, как ее привязать к запросу |
|||
7
pofigos
22.11.13
✎
14:56
|
Вопрос снят. Решено.
|
|||
8
pofigos
22.11.13
✎
14:58
|
Если кому понадобится на будущее и кто первый раз столкнется:
|, Case | WHEN $Договора.ВидДоговора = :ДогБанк1 THEN Dateadd(day,$ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, LEFT(Журнал.DATE_TIME_IDDOC,8)),LEFT(Журнал.DATE_TIME_IDDOC,8)) | WHEN $Договора.ВидДоговора = :ДогБанк2 THEN Dateadd(day,$ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, LEFT(Журнал.DATE_TIME_IDDOC,8)),LEFT(Журнал.DATE_TIME_IDDOC,8)) | WHEN $Договора.ВидДоговора = :ДогБанк3 THEN Dateadd(day,$ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, LEFT(Журнал.DATE_TIME_IDDOC,8)),LEFT(Журнал.DATE_TIME_IDDOC,8)) | ELSE Dateadd(day,$ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, LEFT(Журнал.DATE_TIME_IDDOC,8)),LEFT(Журнал.DATE_TIME_IDDOC,8)) | END ДатаОплаты |
|||
9
pofigos
22.11.13
✎
15:22
|
Весь текст запроса... Если кому нечего будет делать, приму критику и предложения по возможной оптимизации:
ТекстЗапроса = " |SELECT ОсновнойОстатки.Субконто1 [Контрагент $Справочник.Контрагенты] |, $Сотрудник.Филиал [Филиал $Справочник.Подразделение] |, ДокТТН.IdDoc as [Докум $Документ.ТТННаОрганизациюТовары] |, $ДокТТН.Менеджер [Сотрудник $Справочник.Сотрудники] |, $ДокТТН.Всего as Сумма |, ОсновнойОстатки.СуммаОстаток as СуммаДолга |, Case | WHEN $Договора.ВидДоговора IN (SELECT VAl FROM #СпВидДоговор )THEN Dateadd(day,$ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, LEFT(Журнал.DATE_TIME_IDDOC,8)),LEFT(Журнал.DATE_TIME_IDDOC,8)) | ELSE Dateadd(day,$ПоследнееЗначение.Договора.ДнейОтсрочки(Договора.id, LEFT(Журнал.DATE_TIME_IDDOC,8))-1,LEFT(Журнал.DATE_TIME_IDDOC,8)) | END ДатаОплаты |, ГруппировкаДок.Группировка [Группировка $Перечисление.УкрупненныеГруппировки] | |FROM $БИОстатки.Основной(:ВыбДата~ | , | ,(Счет = :ВыбСчет) | ,(Субконто1,Субконто2) | , Фильтр) AS ОсновнойОстатки | |LEFT JOIN $Справочник.Документы AS Документы (NOLOCK) on Документы.id = ОсновнойОстатки.Субконто2 |INNER JOIN $Документ.ТТННаОрганизациюТовары as ДокТТН (NOLOCK) on ДокТТН.IdDoc = RIGHT($Документы.СсылкаНаДокумент,9) |LEFT JOIN $Справочник.Договора AS Договора (NOLOCK) on Договора.id = RIGHT($Документы.ДоговорДок,9) |LEFT JOIN $Справочник.Сотрудники AS Сотрудник (NOLOCK) on Сотрудник.id = $ДокТТН.Менеджер |LEFT JOIN ( | SELECT DISTINCT $Группировки.УкрупненнаяГруппировка Группировка | , ТТННаОрганизациюТоварыСтроки.IDDOC Ссылка | FROM $ДокументСтроки.ТТННаОрганизациюТовары AS ТТННаОрганизациюТоварыСтроки With (NOLOCK) | LEFT JOIN $Справочник.ВидыТоваров AS ВидыТоваров (NOLOCK) on ВидыТоваров.id = $ТТННаОрганизациюТоварыСтроки.ВидТМЦ | LEFT JOIN $Справочник.Группировки AS Группировки (NOLOCK) on Группировки.id = $ВидыТоваров.Группировки | ) as ГруппировкаДок on ДокТТН.IdDoc = ГруппировкаДок.Ссылка |LEFT JOIN _1SJOURN AS Журнал With (NOLOCK) ON ДокТТН.IDDOC = Журнал.IDDOC | |WHERE (ОсновнойОстатки.СуммаОстаток > 0) | |Условия |"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |