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

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

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


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