Имя: Пароль:
1C
 
Получить Номенклатуру с нулевыми остатками и без движений за определенный период
, ,
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) До тех пор пока через точку от измерения не получаешь реквизиты