0
HighFly
14.01.13
✎
10:35
|
Всем доброго времени суток!
Есть такой запрос:
|SELECT
| Основной.Сотрудник [Сотрудник $Справочник.Сотрудники],
| $ПоследнееЗначение.Сотрудники.Подразделение(Сотрудник,:КонецПериода) as [Отдел $Справочник.Подразделения],
| Основной.КоличествоДнейОтпуска,
| Основной.ДнейОтозвано,
| (select top 1 k.date
| from _1SConst k
| left join $Справочник.Должности Долж1 on Долж1.id = k.value
| where (k.ID = $ИсторияРеквизита.Сотрудники.Должность)
| and (k.OBJID = Основной.Сотрудник)
| order by k.date) Стаж
|FROM
| (SELECT Сотр.ID as Сотрудник
| , SUM(Документы.КолДней) КоличествоДнейОтпуска
| , SUM(CAST(Документы.ОкончаниеОтзыва as float) - Cast(Документы.НачалоОтзыва AS float) + 1) ДнейОтозвано
| FROM $Справочник.Сотрудники Сотр
| LEFT JOIN (Select
| $ДокОтпускПред.КоличествоДнейОтпуска as КолДней,
| $ДокОтпускПред.Сотрудник as Сотрудник ,
| $ДокОтзыва.Начало as НачалоОтзыва,
| $ДокОтзыва.Окончание as ОкончаниеОтзыва
| FROM $Документ.ПриказПоОтпуску ДокОтпускПред
| LEFT JOIN $Документ.ПриказОбОтзыве ДокОтзыва On $ДокОтзыва.ДокОснование = ДокОтпускПред.IDDOC and $ДокОтзыва.ПродлятьОтпуск=0
| INNER JOIN _1SJOURN AS j1 ON ДокОтпускПред.IDDOC = j1.IDDOC and (j1.Closed & 1 = 1)
| Where $ДокОтпускПред.НачалоПериода >= :НачалоПериода and $ДокОтпускПред.НачалоПериода <= :КонецПериода
| ) Документы
| ON Сотр.ID = Документы.Сотрудник
|
| WHERE $ПоследнееЗначение.Сотрудники.СостояниеФизЛица(Документы.Сотрудник,:ДатаАктуальности) = :СотрудникОсновной
| and Сотр.id = $Сотр.ОсновнойЭлемент
| GROUP BY
| Сотр.ID
| ) Основной
По идее в нем должны отбираться все элементы справочника "сотрудники", но на деле он отбирает только те, у которых правая часть соединения не равна NULL. Если убрать условие на периоды в подзапросе Документы, то выводятся все элементы справочника, но правая часть, естественно, неправильная. Долго проверял запрос, никак не могу найти ошибку, может быть кто-то подскажет?
|
|
2
Ёпрст
гуру
14.01.13
✎
10:40
|
(0) ясен пень, ты вот этим:
WHERE $ПоследнееЗначение.Сотрудники.СостояниеФизЛица(Документы.Сотрудник,:ДатаАктуальности)
превратил left join
в inner join
|
|