|
Запрос выбирает лишних сотрудников | ☑ | ||
---|---|---|---|---|
0
LivingStar
18.06.19
✎
10:59
|
Есть запрос. По проверке выявлено что он отобрал данные по двум лишним сотрудникам, за установленный период.
Так как в запрос передается фильтр, таблица значений с нужными сотрудниками он должен отбирать данные только по ним. Почему отбираются лишние данные запросом? Его параметры: ДиаграммаГантаОтборПоСправочникамСотрудников - тз с нужными сотрудниками ДиаграммаГантаОтборСотрудников - значение "ВсеСотрудники" НачДата - начальная дата КонДата - конечная дата СписокМастеров - тз с нужными сотрудниками СписокСотрудников - пусто //////////////////////////////////////////// //////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ ЕСТЬNULL(СЦентр_ЗагрузкаМастеров.Документ, НЕОПРЕДЕЛЕНО) КАК Документ, СЦентр_ЗагрузкаМастеров.НачалоПериода КАК НачалоПериода, СЦентр_ЗагрузкаМастеров.КонецПериода КАК КонецПериода, ВЫРАЗИТЬ(РАЗНОСТЬДАТ(СЦентр_ЗагрузкаМастеров.НачалоПериода, СЦентр_ЗагрузкаМастеров.КонецПериода, СЕКУНДА) / 60 / 60 * 10 / 6 КАК ЧИСЛО(15, 2)) КАК ДлительностьЧасов, СЦентр_ЗагрузкаМастеров.НомерСтрокиВДокументе КАК НомерСтрокиВДокументе, СЦентр_ЗагрузкаМастеров.РаботаУслуга КАК РаботаУслуга, СотрудникиСрезПоследних.ГрафикРаботы КАК ГрафикРаботы, СЦентр_ЗагрузкаМастеров.ДокументОснование КАК ДокументОснование, ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ЕСТЬNULL(СЦентр_ЗагрузкаМастеров.Документ, НЕОПРЕДЕЛЕНО)) = ТИП(Документ.ЗаказПокупателя) ИЛИ ТИПЗНАЧЕНИЯ(ЕСТЬNULL(СЦентр_ЗагрузкаМастеров.Документ, НЕОПРЕДЕЛЕНО)) = ТИП(Документ.ЗаданиеНаРаботу) ТОГДА СЦентр_ЗагрузкаМастеров.Документ.СЦентр_ПринятВРаботу КОГДА ТИПЗНАЧЕНИЯ(ЕСТЬNULL(СЦентр_ЗагрузкаМастеров.Документ, НЕОПРЕДЕЛЕНО)) = ТИП(Документ.СЦентр_ВыездМастера) ТОГДА СЦентр_ЗагрузкаМастеров.Документ.ПринятВРаботу КОНЕЦ КАК ПринятВРаботу, СЦентр_ЗагрузкаМастеров.Сотрудник КАК Сотрудник, СЦентр_ЗагрузкаМастеров.Номенклатура КАК Номенклатура, СЦентр_ЗагрузкаМастеров.Характеристика КАК Характеристика ИЗ РегистрСведений.СЦентр_ЗагрузкаМастеров КАК СЦентр_ЗагрузкаМастеров ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Сотрудники.СрезПоследних КАК СотрудникиСрезПоследних ПО СЦентр_ЗагрузкаМастеров.Сотрудник = СотрудникиСрезПоследних.Сотрудник ГДЕ СЦентр_ЗагрузкаМастеров.Сотрудник В(&СписокМастеров) И ВЫБОР КОГДА &ДиаграммаГантаОтборСотрудников = "СвободныеСотрудники" ТОГДА СЦентр_ЗагрузкаМастеров.Сотрудник В (&СписокСотрудников) КОГДА &ДиаграммаГантаОтборСотрудников = "ЗанятыеСотрудники" ТОГДА НЕ СЦентр_ЗагрузкаМастеров.Сотрудник В (&СписокСотрудников) ИНАЧЕ ИСТИНА КОНЕЦ И ВЫБОР КОГДА &ДиаграммаГантаОтборПоСправочникамСотрудников ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ СЦентр_ЗагрузкаМастеров.Сотрудник В (&ДиаграммаГантаОтборПоСправочникамСотрудников) КОНЕЦ И (СЦентр_ЗагрузкаМастеров.НачалоПериода МЕЖДУ &НачДата И &КонДата) или (СЦентр_ЗагрузкаМастеров.КонецПериода МЕЖДУ &НачДата И &КонДата) или (&НачДата >= СЦентр_ЗагрузкаМастеров.НачалоПериода и &КонДата <= СЦентр_ЗагрузкаМастеров.КонецПериода) УПОРЯДОЧИТЬ ПО Сотрудник, НачалоПериода, Документ |
|||
1
Антиквар
18.06.19
✎
11:04
|
И (СЦентр_ЗагрузкаМастеров.НачалоПериода МЕЖДУ &НачДата И &КонДата)
или (СЦентр_ЗагрузкаМастеров.КонецПериода МЕЖДУ &НачДата И &КонДата) или (&НачДата >= СЦентр_ЗагрузкаМастеров.НачалоПериода и &КонДата <= СЦентр_ЗагрузкаМастеров.КонецПериода) Тут явно скобочек не хватает, ИЛИ срабатывает, и там уже не важно какой сотрудник |
|||
2
LivingStar
18.06.19
✎
11:04
|
Бывает даже в запрос, передается один сотрудник. А не таблица значений с сотрудниками.
Все равно не фильтрует. |
|||
3
catena
18.06.19
✎
11:07
|
(2)Ложь или Истина = Истина. У логических операторов, так же, как у арифметических есть порядок выполнения. Вот "или" - это сложение, а "и" - умножение. А у тебя скобочки не расставлены.
|
|||
4
Simod
18.06.19
✎
11:20
|
(2) Как уже написали в (1) у тебя в секции ГДЕ три (!) условия по ИЛИ
<CODE> ГДЕ <условие 1> ИЛИ <условие 2> ИЛИ <условие 3> </CODE> с проверкой сотрудников только в первом условии. |
|||
5
LivingStar
18.06.19
✎
11:25
|
сделал так
| И ((СЦентр_ЗагрузкаМастеров.НачалоПериода МЕЖДУ &НачДата И &КонДата) | или (СЦентр_ЗагрузкаМастеров.КонецПериода МЕЖДУ &НачДата И &КонДата) | или (&НачДата >= СЦентр_ЗагрузкаМастеров.НачалоПериода и &КонДата <= СЦентр_ЗагрузкаМастеров.КонецПериода)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |