Имя: Пароль:
1C
1С v8
Подскажите, как лучше реализовать такую задачку
0 razbiralshik
 
25.09.13
09:17
Нужно сделать запросом следующее.

ВЫБРАТЬ
    SCРеквизитыПользователейСрезПоследних.Пользователь КАК Пользователь,
    SCРеквизитыПользователейСрезПоследних.Проект КАК Проект,
    SCРеквизитыПользователейСрезПоследних.Подразделение КАК Подразделение,
    SCРеквизитыПользователейСрезПоследних.Регион КАК Регион,
    SCРеквизитыПользователейСрезПоследних.Должность КАК Должность,
    SCРеквизитыПользователейСрезПоследних.Период КАК НачПериода,
    ВЫБОР
        КОГДА SCРеквизитыПользователейСрезПоследних1.Период > SCРеквизитыПользователейСрезПоследних.Период
            ТОГДА ДОБАВИТЬКДАТЕ(SCРеквизитыПользователейСрезПоследних1.Период, СЕКУНДА, -1)
        ИНАЧЕ &КонПериода
    КОНЕЦ КАК КонПериода
ИЗ
    РегистрСведений.SCРеквизитыПользователей.СрезПоследних КАК SCРеквизитыПользователейСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.SCРеквизитыПользователей.СрезПоследних КАК SCРеквизитыПользователейСрезПоследних1
        ПО SCРеквизитыПользователейСрезПоследних.Пользователь = SCРеквизитыПользователейСрезПоследних1.Пользователь
ГДЕ
    SCРеквизитыПользователейСрезПоследних.Период МЕЖДУ &НачПериода И &КонПериода
    И SCРеквизитыПользователейСрезПоследних1.Период МЕЖДУ &НачПериода И &КонПериода
    И SCРеквизитыПользователейСрезПоследних.Пользователь = &Сотрудник
    И SCРеквизитыПользователейСрезПоследних1.Пользователь = &Сотрудник

СГРУППИРОВАТЬ ПО
    SCРеквизитыПользователейСрезПоследних.Пользователь,
    SCРеквизитыПользователейСрезПоследних.Проект,
    SCРеквизитыПользователейСрезПоследних.Подразделение,
    SCРеквизитыПользователейСрезПоследних.Регион,
    SCРеквизитыПользователейСрезПоследних.Должность,
    SCРеквизитыПользователейСрезПоследних.Период,
    ВЫБОР
        КОГДА SCРеквизитыПользователейСрезПоследних1.Период > SCРеквизитыПользователейСрезПоследних.Период
            ТОГДА ДОБАВИТЬКДАТЕ(SCРеквизитыПользователейСрезПоследних1.Период, СЕКУНДА, -1)
        ИНАЧЕ &КонПериода
    КОНЕЦ


Периодичность год.

Может быть такой случай:
П1 01.01.01.
П2 01.01.01.
Для него все отрабатывается нормально:
П1 01.01.01. 31.12.01.
П2 01.10.01. 31.12.01.

А может быть еще и такой случай:
П1 01.01.01.
П2 01.10.01.
Нужно получить такой вид:
П1 01.01.01. 30.09.01.
П2 01.10.01. 31.12.01.
Но у мене почемуто получается такой вид:
П1 01.01.01. 30.09.01.
П2 01.10.01. 31.12.01.
П1 01.01.01. 31.12.01.



Подскажите пожалуйста, что именно не верно в запросе, или как лучше сделать чтобы верно стало?
1 razbiralshik
 
25.09.13
09:25
А все разобрался, извините за внимание...
2 GANR
 
25.09.13
09:31
(0) Ошибка как нельзя банальнее - условие в секции ГДЕ на правую таблицу при ЛЕВОЕ СОЕДИНЕНИЕ превращает это левое соединение во ВНУТРЕННЕЕ СОЕДИНЕНИЕ, обрезая случаи, когда в правой таблице нет записи, соответствующей условию соединения.