Вход | Регистрация
 

Получить Номенклатуру с нулевыми остатками и без движений за определенный период

Получить Номенклатуру с нулевыми остатками и без движений за определенный период
Я
   almaz102
 
30.07.19 - 12:42
Ребята добрый день! Помогите пож-та разобраться с запросом. Задача такая: Нужно получить из справочника номенклатура те позиции которые с нулевыми остатками на конец периода (&ДатаОкончания) и нет по ним движений в разрезе периода. Высылаю текст запроса, что я делаю ни так?  

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ ВТДвижения
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, , Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток = 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    спрНоменклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Ссылка
ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО спрНоменклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец
ГДЕ
    НЕ спрНоменклатура.ЭтоГруппа
    И НЕ спрНоменклатура.ПометкаУдаления
    И НЕ (спрНоменклатура.Ссылка, ХарактеристикиНоменклатуры.Ссылка) В
                (ВЫБРАТЬ
                    ВТДвижения.Номенклатура,
                    ВТДвижения.ХарактеристикаНоменклатуры
                ИЗ
                    ВТДвижения КАК ВТДвижения)
    И спрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры)

СГРУППИРОВАТЬ ПО
    спрНоменклатура.Ссылка,
    ХарактеристикиНоменклатуры.Ссылка
 
 
   palsergeich
 
1 - 30.07.19 - 12:44
(0) таблица номенклатуры слева таблица остатков справа.
Соединение левое.
IsNull(количество,0)
   palsergeich
 
2 - 30.07.19 - 12:45
И условие isNull(Количество,0)
   palsergeich
 
3 - 30.07.19 - 12:47
И условие isNull(Количество,0) = 0
Требует промежуточного соединения, если нужно в разрезе характеристик.
   catena
 
4 - 30.07.19 - 12:50
Условие на конечный остаток лишнее в первой таблице.
   1Сергей
 
5 - 30.07.19 - 12:51
Левое соединени и Есть NULL
   almaz102
 
6 - 30.07.19 - 13:06
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.Характеристика КАК Характеристика,
    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0) КАК Остаток
ПОМЕСТИТЬ ВТДвижения
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, , Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0) = 0
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    спрНоменклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО спрНоменклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец
ГДЕ
    НЕ спрНоменклатура.ЭтоГруппа
    И НЕ спрНоменклатура.ПометкаУдаления
    И НЕ (спрНоменклатура.Ссылка, ХарактеристикиНоменклатуры.Ссылка) В
                (ВЫБРАТЬ
                    ВТДвижения.Номенклатура,
                    ВТДвижения.Характеристика
                ИЗ
                    ВТДвижения КАК ВТДвижения)
    И спрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры)

СГРУППИРОВАТЬ ПО
    спрНоменклатура.Ссылка,
    ХарактеристикиНоменклатуры.Ссылка
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ_Номенклатура.Номенклатура КАК Номенклатура,
    ВТ_Номенклатура.Характеристика КАК Характеристика,
    ВТДвижения.Остаток КАК Остаток
ИЗ
    ВТ_Номенклатура КАК ВТ_Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ ВТДвижения КАК ВТДвижения
        ПО ВТ_Номенклатура.Номенклатура = ВТДвижения.Номенклатура
            И ВТ_Номенклатура.Характеристика = ВТДвижения.Характеристика

Получается так?
   Maniac
 
7 - 30.07.19 - 13:10
Соединение номенклатуры с остатками и обычные условия
Начостаток = 0
Приход
Расход тоже равны нулю.
Все.

ГДЕ ИМЕЮЩИЕ
   Maniac
 
8 - 30.07.19 - 13:10
просто ИМЕЮЩИЕ - это аналог где но на результаты группировок
   almaz102
 
9 - 30.07.19 - 13:22
(8) "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
        |    ТоварыНаСкладахОстаткиИОбороты.Характеристика КАК Характеристика,
        |    СУММА(ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0)) КАК Остаток
        |ПОМЕСТИТЬ ВТДвижения
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, , Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстаткиИОбороты
        |
        |СГРУППИРОВАТЬ ПО
        |    ТоварыНаСкладахОстаткиИОбороты.Характеристика,
        |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура
        |
        |ИМЕЮЩИЕ
        |    СУММА(ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0)) = 0
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    спрНоменклатура.Ссылка КАК Номенклатура,
        |    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
        |ПОМЕСТИТЬ ВТ_Номенклатура
        |ИЗ
        |    Справочник.Номенклатура КАК спрНоменклатура
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        |        ПО спрНоменклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец
        |ГДЕ
        |    НЕ спрНоменклатура.ЭтоГруппа
        |    И НЕ спрНоменклатура.ПометкаУдаления
        |    И НЕ (спрНоменклатура.Ссылка, ХарактеристикиНоменклатуры.Ссылка) В
        |                (ВЫБРАТЬ
        |                    ВТДвижения.Номенклатура,
        |                    ВТДвижения.Характеристика
        |                ИЗ
        |                    ВТДвижения КАК ВТДвижения)
        |    И спрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры)
        |
        |СГРУППИРОВАТЬ ПО
        |    спрНоменклатура.Ссылка,
        |    ХарактеристикиНоменклатуры.Ссылка
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    ВТ_Номенклатура.Номенклатура КАК Номенклатура,
        |    ВТ_Номенклатура.Характеристика КАК Характеристика,
        |    ВТДвижения.Остаток КАК Остаток
        |ИЗ
        |    ВТ_Номенклатура КАК ВТ_Номенклатура
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВТДвижения КАК ВТДвижения
        |        ПО ВТ_Номенклатура.Номенклатура = ВТДвижения.Номенклатура
        |            И ВТ_Номенклатура.Характеристика = ВТДвижения.Характеристика";
   almaz102
 
10 - 30.07.19 - 13:22
(8) так правильно?
   catena
 
11 - 30.07.19 - 13:24
(9)Тебе нужно получить номенклатуру с нулевым остатком или исключить? Ты делаешь выборку из регистра, "где Остаток = 0", а потом исключаешь эту номенклатуру из основной выборки "НЕ (Ссылка, Характеристики) В".

Так задача-то какая?
   catena
 
12 - 30.07.19 - 13:25
А потом соединяешь с той же таблицей, которую исключил...
   Maniac
 
13 - 30.07.19 - 13:25
Блин нафига ты стока виртуальных таблиц лепишь.
Все в одной с условием
ИМЕЮЩИЕ
   Maniac
 
14 - 30.07.19 - 13:26
никаких вложенных запросов и виртуальных таблиц.

Тупо один запрос на 15 строк. справочник + остатки и ИМЕЮЩИЕ.
все
   Maniac
 
15 - 30.07.19 - 13:27
Условий Номенклатура В - тоже нах НЕ НУЖНО

Тупо справочник + соединение.

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

то есть с остатком 0 ты выбрасываешь
   Cyberhawk
 
35 - 30.07.19 - 16:45
(21) До тех пор пока через точку от измерения не получаешь реквизиты


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.