Имя: Пароль:
1C
1С v8
Запрос. Полное соединение. Не берет все нужные документы.
0 ЗлаяЗая
 
17.06.19
08:53
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             |    Док1.Сотрудник,
             |    Док1.Ссылка.Подразделение,
             |    Док1.Ссылка.Смена,
             |    Док1.Тариф,
             |    Док1.ВремяПлан,
             |    Док1.ПланФОТ,
             |    Док2.ВремяФакт,
             |    Док2.ФактФОТ
             |ИЗ
             |    Документ.Док1 КАК Док1
             |        ПОЛНОЕ СОЕДИНЕНИЕ Документ.Док2 КАК Док2
             |        ПО Док1.Смена = Док2.Смена
             |            И Док1.Сотрудник = Док2.Сотрудник
             |ГДЕ
             |    Док1.Проведен = ИСТИНА
             |    И Док1.Дата МЕЖДУ &Дата1 И &Дата2
             |    И Док1.Подразделение = &Подразделение
             |    И Док2.Проведен = ИСТИНА
             |    И Док2.Дата МЕЖДУ &Дата1 И &Дата2
             |    И Док2.Подразделение = &Подразделение";
Если нет документа Док2, то данные Док1 тоже не попадают в результат.
1 garantNo4x
 
17.06.19
08:57
Ну зато условие выполняется
2 ЗлаяЗая
 
17.06.19
08:59
а как сделать?
делать 2 запроса и объединять?
3 тарам пам пам
 
17.06.19
09:02
Условие из "где" перенеси в "по" - потому что "где" выполняется условно говоря после соединения. Т. е.

ПО Док1.Смена = Док2.Смена
И Док1.Сотрудник = Док2.Сотрудник
И Док1.Проведен = ИСТИНА

и так далее
4 PuhUfa
 
17.06.19
09:02
(2) Исправить условия
5 ЗлаяЗая
 
17.06.19
09:17
|    Документ.Док1 КАК Док1
             |        ПОЛНОЕ СОЕДИНЕНИЕ Документ.Док2 КАК Док2
             |        ПО Док1.Смена = Док2.Смена
             |            И Док1.Сотрудник = Док2.Сотрудник
             |            И Док1.Подразделение = Док2.Подразделение
             |            И (Док2.Проведен = ИСТИНА)
             |            И (Док1.Проведен = ИСТИНА)
             |            И (Док2.Дата МЕЖДУ &Дата1 И &Дата2)
             |            И (Док1.Дата МЕЖДУ &Дата1 И &Дата2)
             |            И (Док2.Подразделение = &Подразделение)
             |            И (Док1.Подразделение = &Подразделение)";
6 ЗлаяЗая
 
17.06.19
09:17
не помогло
7 Широкий
 
17.06.19
09:57
|    Док1.Проведен = ИСТИНА
             |    И Док1.Дата МЕЖДУ &Дата1 И &Дата2
             |    И Док1.Подразделение = &Подразделение
             |    И Док2.Проведен = ИСТИНА
             |    И Док2.Дата МЕЖДУ &Дата1 И &Дата2
             |    И Док2.Подразделение = &Подразделение";

Ты этим условием во внутреннее соединение превращаешь
8 unf13
 
17.06.19
10:26
на вскидку:

"ГДЕ

ВЫБОР КОГДА Док1.Проведен ЕСТЬ NULL  ТОГДА ИСТИНА ИНАЧЕ Док1.Проведен КОНЕЦ

И ВЫБОР КОГДА Док2.Проведен ЕСТЬ NULL  ТОГДА ИСТИНА ИНАЧЕ Док2.Проведен КОНЕЦ

И ..."
9 Simod
 
17.06.19
10:39
(0) Использование "И" для всех условий в секции "ГДЕ" делает обязательным наличие обоих документов (Док1, Док2), т.е. ПОЛНОЕ СОЕДИНЕНИЕ превращается во ВНУТРЕННЕЕ.
Независимо от того, куда вы едете — это в гору и против ветра!