|
Остатки и обороты | ☑ | ||
---|---|---|---|---|
0
Zixxx
17.01.22
✎
18:40
|
По конкретной номенклатуре получаю остатки и обороты за год. За этот год у нее нет движений, есть только начальный и конечный остаток.
Параметр &ВыбиратьВсе = Истина. Такой запрос ничего не выводит ВЫБРАТЬ ПартииТоваров.Номенклатура КАК Номенклатура ИЗ РегистрНакопления.ПартииТоваров.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Номенклатура = &Номенклатура) КАК ПартииТоваров ГДЕ ВЫБОР КОГДА &ВыбратьВсе ТОГДА ИСТИНА ИНАЧЕ ПартииТоваров.КоличествоПриход <> 0 КОНЕЦ Показать Пробую менять условия: 1. "ИНАЧЕ ПартииТоваров.КоличествоПриход <> 0" заменить на "ИНАЧЕ ЛОЖЬ" тогда данные появятся. 2. Если убрать "ИНАЧЕ ПартииТоваров.КоличествоПриход <> 0" данные тоже будут. 3. Если "ТОГДА ИСТИНА" заменить на "ТОГДА ЛОЖЬ" то данные не выводятся. Почему так происходит? |
|||
1
aka MIK
17.01.22
✎
18:42
|
Потому что так написано
|
|||
2
aka MIK
17.01.22
✎
18:43
|
Если нет оборотов то КоличествоПриход = 0 ) неожиданно, да?
|
|||
3
Zixxx
17.01.22
✎
18:45
|
(1) Условие в итоге получается ГДЕ ИСТИНА, но почему при добавлении ИНАЧЕ она перестает выводить данные?
|
|||
4
Zixxx
17.01.22
✎
18:45
|
(2) Я знаю что так КоличествоПриход = 0, но в ИНАЧЕ же мы не попадаем чтобы на него установилось условие
|
|||
5
Ёпрст
17.01.22
✎
18:47
|
(0) потому, что в выбратьвсе вмегда истина
|
|||
6
Ёпрст
17.01.22
✎
18:47
|
Че ты в параметр то пихаешь?
|
|||
7
Zixxx
17.01.22
✎
18:50
|
(6) Параметр &ВыбиратьВсе = Истина, все работает пока не добавлю ИНАЧЕ ПартииТоваров.КоличествоПриход <> 0
|
|||
8
azernot
17.01.22
✎
18:52
|
Добавь в поля начальный и конечный остаток и всё будет работать так, как ты хочешь
Это особенность работы виртуальной таблицы. Результат зависит от того, какие поля выбираешь. |
|||
9
Ёпрст
17.01.22
✎
18:52
|
(7) значит параметр устанавливаешь в ложь.
|
|||
10
Zixxx
17.01.22
✎
18:53
|
(6) Начальный остаток = 1, если добавлю ИНАЧЕ ПартииТоваров.КоличествоПриход = 0, то данные появятся, т.е. в ИНАЧЕ он не попадает, значит и не должен и смотреть на ПартииТоваров.КоличествоПриход <> 0
|
|||
11
Zixxx
17.01.22
✎
18:54
|
(9) 1. "ИНАЧЕ ПартииТоваров.КоличествоПриход <> 0" заменить на "ИНАЧЕ ЛОЖЬ" тогда данные появятся.
Тогда в этом случае тоже не должны данные выводится если параметр ложь |
|||
12
Zixxx
17.01.22
✎
18:55
|
(8) Да, на этот момент тоже обратил внимание. Но как понять как эта особенность правильно работает?
|
|||
13
Ёпрст
17.01.22
✎
18:55
|
(11) ты себе противоречишь, см. п.3 из (0)
|
|||
14
Zixxx
17.01.22
✎
18:58
|
(13) и где там противоречие? Если Параметр = Истина Тогда Ложь - данные не выводятся
|
|||
15
Zixxx
17.01.22
✎
18:58
|
(13) ... это как раз говорит о том что параметр 100% Истина
|
|||
16
azernot
17.01.22
✎
18:59
|
(12) Если в запросе не фигурирует никаких полей, значит тебе нужны "все", если в запросе есть какие-то поля - то используются только они.
В твоем случае, система "оптимизирует" запрос, поскольку видит, что используется только "КоличествоПриход", и не выдаёт никаких записей не содержащих эти данные. |
|||
17
Zixxx
17.01.22
✎
19:00
|
(13) в (8) правильно говорит, но не понятно как именно это связано. Обязательно нужно выбирать все ресурсы, только для того чтобы наложить условие в ГДЕ?
|
|||
18
Жан Пердежон
17.01.22
✎
19:01
|
(17) не все, а те, что в условии
|
|||
19
Dmitrii
гуру
17.01.22
✎
19:06
|
(0) А если попробовать заменить "ИНАЧЕ ПартииТоваров.КоличествоПриход <> 0" на "ИНАЧЕ ЕСТЬNULL(ПартииТоваров.КоличествоПриход, 0) <> 0". Что выдаст?
|
|||
20
Zixxx
17.01.22
✎
19:10
|
(19) ничего не выдаст, ожидаемо из написанного в (16) и (18)
|
|||
21
youalex
17.01.22
✎
19:14
|
емнип, таблица оборотов/остатков и оборотов - добавляет условие having sum() <> 0 в совокупности для всех ресурсов, используемых в запросе вирт. таблицы.
|
|||
22
youalex
17.01.22
✎
19:20
|
т.е. схематично, запрос из (0) выглядит как
ВЫБРАТЬ вирт.Номенклатура, вирт.КоличествоПриход ИЗ (ВЫБРАТЬ Номенклатура, Сумма(Количество) КАК КоличествоПриход ИЗ ТаблицаИтоговПлюсЧтоТоИзДвижений ИМЕЮЩИЕ Сумма(Количество) <> 0) вирт ГДЕ ИСТИНА //а результат вирт. таблицы - пустой. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |