|
v7: Как в прямом запросе получить реквизит ? | ☑ | ||
---|---|---|---|---|
0
zenon46
10.12.19
✎
17:09
|
Доброго вечера, всем!
Есть вот такой запрос : SELECT Журнал.IDDoc AS [ТекДок $Документ], Журнал.IDDocDef AS ТекДок_вид, coalesce($Реализация.Контрагент,$ЗаявкаПокупателя.Контрагент,$КоммПредложение.Контрагент,$СтрокаВыпискиПриход.Контрагент) AS [Контрагент $Справочник.Контрагенты], ISNULL($ЗаявкаПокупателя.СуммаВзаиморасчетов,0) AS [СумСчетов $Число], ISNULL($КоммПредложение.СуммаВзаиморасчетов,0) AS [СумКомПредлож $Число], ISNULL($Реализация.СуммаВзаиморасчетов,0) AS [СумОтгруз $Число], ISNULL($СтрокаВыпискиПриход.СуммаВзаиморасчетов,0) AS [СумОплат $Число] FROM _1SJOURN AS Журнал With (NOLOCK) LEFT JOIN $Документ.Реализация AS Реализация With (NOLOCK) ON Журнал.IDDOC = Реализация.IDDOC AND $Реализация.ТипЦен <> :ТипНулевой LEFT JOIN $Документ.ЗаявкаПокупателя AS ЗаявкаПокупателя With (NOLOCK) ON Журнал.IDDOC = ЗаявкаПокупателя.IDDOC AND $ЗаявкаПокупателя.ТипЦен <> :ТипНулевой LEFT JOIN $Документ.КоммПредложение AS КоммПредложение With (NOLOCK) ON Журнал.IDDOC = КоммПредложение.IDDOC LEFT JOIN $Документ.СтрокаВыпискиПриход AS СтрокаВыпискиПриход With (NOLOCK) ON Журнал.IDDOC = СтрокаВыпискиПриход.IDDOC WHERE (Журнал.ISMARK=0) AND (Журнал.iddocdef=$ВидДокумента.Реализация OR Журнал.iddocdef= $ВидДокумента.ЗаявкаПокупателя OR Журнал.iddocdef=$ВидДокумента.КоммПредложение OR Журнал.iddocdef=$ВидДокумента.СтрокаВыпискиПриход) AND (Журнал.date_time_iddoc between :НачДата and :КонДата~) AND (Журнал.$ОбщийРеквизит.Фирма = :ФирмаЗ) В "черном" запросе было получение еще одного реквизита "ВашМенеджер" - $Справочник.Проекты. Вопрос, как добавить в прямой получение этого реквизита ? |Менедж = Документ.Реализация.ТекущийДокумент.Контрагент.ВашМенеджер, | Документ.КоммПредложение.ТекущийДокумент.Контрагент.ВашМенеджер, | Документ.ЗаявкаПокупателя.ТекущийДокумент.Контрагент.ВашМенеджер, | Документ.СтрокаВыпискиПриход.ТекущийДокумент.Контрагент.ВашМенеджер; |
|||
1
hhhh
10.12.19
✎
17:13
|
(0) вроде уже спрашивали это. Поищи по темам сегодня и вчера.
|
|||
2
1Сергей
10.12.19
✎
17:26
|
По аналогии сделай
как coalesce($Реализация.Контрагент,$ЗаявкаПокупателя.Контрагент,$КоммПредложение.Контрагент,$СтрокаВыпискиПриход.Контрагент) AS [Контрагент $Справочник.Контрагенты], |
|||
3
Djelf
10.12.19
✎
17:37
|
(2) Видимо так не получится. "ВашМенеджер" это скорее всего справочник Сотрудники.
(0) Это еще 4 LEFT JOIN с coalesce к $Справочник.Сотрудники по ВашМенеджер. |
|||
4
Djelf
10.12.19
✎
17:51
|
+(3) Ну можно и один JOIN, но запрос нужно обернуть в подзапрос.
|
|||
5
zenon46
10.12.19
✎
18:39
|
(3) да, "ВашМенеджер" это реквизит справочника Контрагенты, типа Справочник.Проекты, вот я и не пойму как через две "точки" до него добраться
|
|||
6
zenon46
10.12.19
✎
20:28
|
Попробовал для одного вида документа, на выходе поле ВашМенеджер пустое :
SELECT Журнал.IDDoc AS [ТекДок $Документ], Журнал.IDDocDef AS ТекДок_вид, $Реализация.Контрагент AS [Контрагент $Справочник.Контрагенты], ISNULL($Реализация.СуммаВзаиморасчетов,0) AS [СумОтгруз $Число], Проекты.ID AS [ВашМенеджер $Справочник.Проекты] FROM _1SJOURN AS Журнал With (NOLOCK) LEFT JOIN $Документ.Реализация AS Реализация With (NOLOCK) ON Реализация.IDDOC = Журнал.IDDOC AND $Реализация.ТипЦен <> :ТипНулевой LEFT JOIN $Справочник.Контрагенты AS Контр With (NOLOCK) ON Контр.ID = $Реализация.Контрагент LEFT JOIN $Справочник.Проекты AS Проекты With (NOLOCK) ON Проекты.ID = $Справочник.Контрагенты.ВашМенеджер WHERE (Журнал.ISMARK=0) AND (Журнал.iddocdef=$ВидДокумента.Реализация) AND (Журнал.date_time_iddoc between :НачДата and :КонДата~) AND (Журнал.$ОбщийРеквизит.Фирма = :ФирмаЗ) |
|||
7
zenon46
10.12.19
✎
21:29
|
"ВашМенеджер" - оказался периодическим реквизитом, я в метаданные не смотрел, у меня был только "черный" запрос, а ему на периодичность в принципе пофиг, он сам каким-то образом это дело вытаскивает.
|
|||
8
zenon46
11.12.19
✎
09:20
|
Сделал так все равно поле ВашМенеджер пустое:
SELECT Журнал.IDDoc AS [ТекДок $Документ], Журнал.IDDocDef AS ТекДок_вид, $Реализация.Контрагент AS [Контрагент $Справочник.Контрагенты], ISNULL($Реализация.СуммаВзаиморасчетов,0) AS [СумОтгруз $Число], Проекты.ID AS [ВашМенеджер $Справочник.Проекты] FROM _1SJOURN AS Журнал With (NOLOCK) LEFT JOIN $Документ.Реализация AS Реализация With (NOLOCK) ON Реализация.IDDOC = Журнал.IDDOC AND $Реализация.ТипЦен <> :ТипНулевой LEFT JOIN $Справочник.Контрагенты AS Контр With (NOLOCK) ON Контр.ID = $Реализация.Контрагент LEFT JOIN $Справочник.Проекты AS Проекты With (NOLOCK) ON Проекты.ID = ($ПоследнееЗначение.Контрагенты.ВашМенеджер(Проекты.ID,:КонДата)) WHERE (Журнал.ISMARK=0) AND (Журнал.iddocdef=$ВидДокумента.Реализация) AND (Журнал.date_time_iddoc between :НачДата and :КонДата~) AND (Журнал.$ОбщийРеквизит.Фирма = :ФирмаЗ) |
|||
9
dk
11.12.19
✎
09:31
|
$Справочник.Проекты AS Проекты With (NOLOCK) ON Проекты.ID = ($ПоследнееЗначение.Контрагенты.ВашМенеджер(Контр.ID,:КонДата))
|
|||
10
dk
11.12.19
✎
09:32
|
смотри какой тип передаешь в последнее значение
|
|||
11
dk
11.12.19
✎
09:34
|
можно соединение с контрагентами вообще убрать - ибо лишнее
$Справочник.Проекты AS Проекты With (NOLOCK) ON Проекты.ID = ($ПоследнееЗначение.Контрагенты.ВашМенеджер($Реализация.Контрагент,:КонДата)) |
|||
12
dk
11.12.19
✎
09:37
|
и соединение с проектами тут тоже не нужно )
|
|||
13
zenon46
11.12.19
✎
09:39
|
(9) да спасибо, не обратил внимание. так рабоатет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |