|   |   | 
| 
 | 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) да спасибо, не обратил внимание. так рабоатет.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |