|
Получить Номенклатуру с нулевыми остатками и без движений за определенный период | ☑ | ||
---|---|---|---|---|
0
almaz102
30.07.19
✎
12:42
|
Ребята добрый день! Помогите пож-та разобраться с запросом. Задача такая: Нужно получить из справочника номенклатура те позиции которые с нулевыми остатками на конец периода (&ДатаОкончания) и нет по ним движений в разрезе периода. Высылаю текст запроса, что я делаю ни так?
ВЫБРАТЬ РАЗЛИЧНЫЕ ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры ПОМЕСТИТЬ ВТДвижения ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, , Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстаткиИОбороты ГДЕ ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток = 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ спрНоменклатура.Ссылка КАК Номенклатура, ХарактеристикиНоменклатуры.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК спрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры ПО спрНоменклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец ГДЕ НЕ спрНоменклатура.ЭтоГруппа И НЕ спрНоменклатура.ПометкаУдаления И НЕ (спрНоменклатура.Ссылка, ХарактеристикиНоменклатуры.Ссылка) В (ВЫБРАТЬ ВТДвижения.Номенклатура, ВТДвижения.ХарактеристикаНоменклатуры ИЗ ВТДвижения КАК ВТДвижения) И спрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры) СГРУППИРОВАТЬ ПО спрНоменклатура.Ссылка, ХарактеристикиНоменклатуры.Ссылка |
|||
1
palsergeich
30.07.19
✎
12:44
|
(0) таблица номенклатуры слева таблица остатков справа.
Соединение левое. IsNull(количество,0) |
|||
2
palsergeich
30.07.19
✎
12:45
|
И условие isNull(Количество,0)
|
|||
3
palsergeich
30.07.19
✎
12:47
|
И условие isNull(Количество,0) = 0
Требует промежуточного соединения, если нужно в разрезе характеристик. |
|||
4
catena
30.07.19
✎
12:50
|
Условие на конечный остаток лишнее в первой таблице.
|
|||
5
1Сергей
30.07.19
✎
12:51
|
Левое соединени и Есть NULL
|
|||
6
almaz102
30.07.19
✎
13:06
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстаткиИОбороты.Характеристика КАК Характеристика, ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0) КАК Остаток ПОМЕСТИТЬ ВТДвижения ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, , Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстаткиИОбороты ГДЕ ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0) = 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ спрНоменклатура.Ссылка КАК Номенклатура, ХарактеристикиНоменклатуры.Ссылка КАК Характеристика ПОМЕСТИТЬ ВТ_Номенклатура ИЗ Справочник.Номенклатура КАК спрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры ПО спрНоменклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец ГДЕ НЕ спрНоменклатура.ЭтоГруппа И НЕ спрНоменклатура.ПометкаУдаления И НЕ (спрНоменклатура.Ссылка, ХарактеристикиНоменклатуры.Ссылка) В (ВЫБРАТЬ ВТДвижения.Номенклатура, ВТДвижения.Характеристика ИЗ ВТДвижения КАК ВТДвижения) И спрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры) СГРУППИРОВАТЬ ПО спрНоменклатура.Ссылка, ХарактеристикиНоменклатуры.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Номенклатура.Номенклатура КАК Номенклатура, ВТ_Номенклатура.Характеристика КАК Характеристика, ВТДвижения.Остаток КАК Остаток ИЗ ВТ_Номенклатура КАК ВТ_Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ ВТДвижения КАК ВТДвижения ПО ВТ_Номенклатура.Номенклатура = ВТДвижения.Номенклатура И ВТ_Номенклатура.Характеристика = ВТДвижения.Характеристика Получается так? |
|||
7
Maniac
30.07.19
✎
13:10
|
Соединение номенклатуры с остатками и обычные условия
Начостаток = 0 Приход Расход тоже равны нулю. Все. ГДЕ ИМЕЮЩИЕ |
|||
8
Maniac
30.07.19
✎
13:10
|
просто ИМЕЮЩИЕ - это аналог где но на результаты группировок
|
|||
9
almaz102
30.07.19
✎
13:22
|
(8) "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.Характеристика КАК Характеристика, | СУММА(ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0)) КАК Остаток |ПОМЕСТИТЬ ВТДвижения |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, , Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстаткиИОбороты | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Характеристика, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура | |ИМЕЮЩИЕ | СУММА(ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0)) = 0 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | спрНоменклатура.Ссылка КАК Номенклатура, | ХарактеристикиНоменклатуры.Ссылка КАК Характеристика |ПОМЕСТИТЬ ВТ_Номенклатура |ИЗ | Справочник.Номенклатура КАК спрНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры | ПО спрНоменклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец |ГДЕ | НЕ спрНоменклатура.ЭтоГруппа | И НЕ спрНоменклатура.ПометкаУдаления | И НЕ (спрНоменклатура.Ссылка, ХарактеристикиНоменклатуры.Ссылка) В | (ВЫБРАТЬ | ВТДвижения.Номенклатура, | ВТДвижения.Характеристика | ИЗ | ВТДвижения КАК ВТДвижения) | И спрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры) | |СГРУППИРОВАТЬ ПО | спрНоменклатура.Ссылка, | ХарактеристикиНоменклатуры.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_Номенклатура.Номенклатура КАК Номенклатура, | ВТ_Номенклатура.Характеристика КАК Характеристика, | ВТДвижения.Остаток КАК Остаток |ИЗ | ВТ_Номенклатура КАК ВТ_Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ ВТДвижения КАК ВТДвижения | ПО ВТ_Номенклатура.Номенклатура = ВТДвижения.Номенклатура | И ВТ_Номенклатура.Характеристика = ВТДвижения.Характеристика"; |
|||
10
almaz102
30.07.19
✎
13:22
|
(8) так правильно?
|
|||
11
catena
30.07.19
✎
13:24
|
(9)Тебе нужно получить номенклатуру с нулевым остатком или исключить? Ты делаешь выборку из регистра, "где Остаток = 0", а потом исключаешь эту номенклатуру из основной выборки "НЕ (Ссылка, Характеристики) В".
Так задача-то какая? |
|||
12
catena
30.07.19
✎
13:25
|
А потом соединяешь с той же таблицей, которую исключил...
|
|||
13
Maniac
30.07.19
✎
13:25
|
Блин нафига ты стока виртуальных таблиц лепишь.
Все в одной с условием ИМЕЮЩИЕ |
|||
14
Maniac
30.07.19
✎
13:26
|
никаких вложенных запросов и виртуальных таблиц.
Тупо один запрос на 15 строк. справочник + остатки и ИМЕЮЩИЕ. все |
|||
15
Maniac
30.07.19
✎
13:27
|
Условий Номенклатура В - тоже нах НЕ НУЖНО
Тупо справочник + соединение. в конце ИМЕЮЩИЕ остатки приход и расход = 0. Все! |
|||
16
almaz102
30.07.19
✎
13:27
|
(11) Мне нужно получить номенклатуры первое условие нет в остатках и за период дата1 и дата2 не было ни каких движений
|
|||
17
Maniac
30.07.19
✎
13:28
|
(16) а я тебе ровно это и говорю.
|
|||
18
catena
30.07.19
✎
13:30
|
(16)Первый запрос возвращает только ту номенклатуру, которая была с движениями и остаток 0. Ту, по которой остаток не 0 ты вырезал и она спокойно останется до последней выборки.
|
|||
19
Maniac
30.07.19
✎
13:45
|
"ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Ссылка, | СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииНачальныйОстаток) КАК ВНаличииНачальныйОстаток, | СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииПриход) КАК ВНаличииПриход, | СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииРасход) КАК ВНаличииРасход, | СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииКонечныйОстаток) КАК ВНаличииКонечныйОстаток |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты() КАК СвободныеОстаткиОстаткиИОбороты | ПО СпрНоменклатура.Ссылка = СвободныеОстаткиОстаткиИОбороты.Номенклатура | |СГРУППИРОВАТЬ ПО | СпрНоменклатура.Ссылка | |ИМЕЮЩИЕ | СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииНачальныйОстаток) > 0 И | СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииПриход) > 0 И | СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииРасход) > 0 И | СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииКонечныйОстаток) > 0" |
|||
20
Maniac
30.07.19
✎
13:46
|
тьфу короче в условиях не > а =
|
|||
21
palsergeich
30.07.19
✎
13:49
|
(19) Мои глоза.
Зачем вообще группировки, если данные виртуальных таблиц априори получаются сгруппированные? Выкинь группировку и используй isNull |
|||
22
palsergeich
30.07.19
✎
13:51
|
Во вторых я очень сильно сомневаюсь, что Сумма (null) =0, скорее всего получится Null и любое условие, кроме специального даст ложь
|
|||
23
Maniac
30.07.19
✎
14:02
|
я еще писал что нет в заказах покупателей и поставщикам. нет просто в заказах (даже непроведенных), нет цен и еще какой то хрени.
|
|||
24
almaz102
30.07.19
✎
14:14
|
(19) Спасибо большое, Получилось!
|
|||
25
xXeNoNx
30.07.19
✎
14:43
|
(19) Соединение с вирт таблицей нах не нужно!
НаПочитай: https://its.1c.ru/db/metod8dev#content:5842:hdoc |
|||
26
Maniac
30.07.19
✎
14:47
|
Чуваки не ипите мозг.
Задача решена очень просто и как нужно |
|||
27
Maniac
30.07.19
✎
14:48
|
еще и можно будет к этому добавлять еще условия и всякую поипень. Не первый день работаю
|
|||
28
Maniac
30.07.19
✎
14:50
|
У него там за период. поэтому еще в параметры дата начала и дата конца.
|
|||
29
hhhh
30.07.19
✎
14:54
|
(22) не Сумма (null) =0, с этим они подшаманили
|
|||
30
palsergeich
30.07.19
✎
14:55
|
(29) ок, спасин, буду знать
|
|||
31
xXeNoNx
30.07.19
✎
14:59
|
(27) Мухаха..., условия он говорил..., задача решена он говорил
|
|||
32
ASU_Diamond
30.07.19
✎
15:11
|
так-то достаточно проверять конечный остаток и расход/приход
|
|||
33
almaz102
30.07.19
✎
15:27
|
(32) в условиях я это и оставил начальный остаток убрал, он не нужен
|
|||
34
hhhh
30.07.19
✎
15:36
|
(33) ну у тебя ведь наоборот получается
| И НЕ (спрНоменклатура.Ссылка, ХарактеристикиНоменклатуры.Ссылка) В | (ВЫБРАТЬ | ВТДвижения.Номенклатура, | ВТДвижения.Характеристика | ИЗ | ВТДвижения КАК ВТДвижения) то есть с остатком 0 ты выбрасываешь |
|||
35
Cyberhawk
30.07.19
✎
16:45
|
(21) До тех пор пока через точку от измерения не получаешь реквизиты
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |