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

1С:Предприятие :: 1С:Предприятие 8 общая

Товары без движения

Товары без движения
Я
   nulback
 
11.09.18 - 09:30
Добрый день, уважаемые форумчане.
Помогите решить проблему следующего характера.
Суть необходимо получить все товары по которым не было движений за период, а также те товары которых есть в справочнике номенклатуры, но  на складах их количество равно 0.
написал 2 запроса, через обьединить.
В первом запросе выбрал остаткииобороты по товарам на складах с условием что количество конечный остаток больше нуля, и вторым условием что количество приход и количество расход =0.
во втором запросе левым соединением к справочнику номенклатуры прицепил тот же регистр остатков и оборотов по товарам, но уже с отбором что количество конечный остаток равно 0 и второе условие такое же.
Вроде все правильно работало, но появилась такая ситуация.
На склад был приход товаров и возврат, в итоге количество конечный остаток стало равно 0 и выполнился запрос 2 когда количество остаток равно 0 и соединяется с номенклатурой.
Подскажите как правильно написать данный запрос, чтобы исключить такие ситуации, т.к. если в вирт таблице конечный остаток за период 0, он не показывает, что были приходы и расходы.
 
 
   МимохожийОднако
 
1 - 11.09.18 - 09:32
Снимай..ой.
Показывай запросы
   nulback
 
2 - 11.09.18 - 09:43
(1)

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

СГРУППИРОВАТЬ ПО
    ПартииТоваровНаСкладахОстаткиИОбороты.Склад,
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.Родитель,
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.Артикул,
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования

ОБЪЕДИНИТЬ ВСЕ

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

СГРУППИРОВАТЬ ПО
    СпрНоменклатура.Ссылка,
    ТоварыНаСкладахОстаткиИОбороты.Склад,
    СпрНоменклатура.Родитель,
    СпрНоменклатура.Артикул,
    СпрНоменклатура.ЕдиницаХраненияОстатков
;


   МимохожийОднако
 
3 - 11.09.18 - 09:48
Зачем ОБЪЕДИНИТЬ ВСЕ
   МимохожийОднако
 
4 - 11.09.18 - 09:48
*?
   nulback
 
5 - 11.09.18 - 09:50
(3) нужно вытащить ту номенклатуру которой нет на остатках, а есть в справочнике номенклатуры.
   bolobol
 
6 - 11.09.18 - 09:51
(Нет движений за период ИЛИ остаток=0) И Номенклатура = Номенклатура ЛЕВОЕ ОстаткиИОбороты ГДЕ ОстаткиИОбороты ЕСТЬ NULL ИЛИ Оборот = 0 ИЛИ Остаток = 0
   Гипервизор
 
7 - 11.09.18 - 09:54
То ли я не понял что надо, но судя по условию почему бы не отобрать сразу в одном запросе:
ГДЕ
    (ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход = 0
                И ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоРасход = 0
            ИЛИ ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоКонечныйОстаток = 0)
   bolobol
 
8 - 11.09.18 - 09:55
(7) есть нал забыл
   МимохожийОднако
 
9 - 11.09.18 - 09:57
Получить два массива по остаткам и по оборотам. Потом получить список номенклатуры, которая не входит в эти массивы.
   nulback
 
10 - 11.09.18 - 10:02
(6) не понял
в первом случае надо выбрать все товары которые на складах и по которым не было движений
во втором случае выбрать те товары которые есть в справочнике номенклатуры и их нет на складах и опять таки за период не было движений.
а ситуация получилась, что на момент периода конца отчета количество на складах по товару равно 0, т.е. его нет на складах, но он есть в справочнике номенклатуры, но за период выбранный в отчете по нему были движения приход и сразу возврат.
 
 Рекламное место пустует
   МимохожийОднако
 
11 - 11.09.18 - 10:05
(10) Пляши от противного. Как в (9)
   vvspb
 
12 - 11.09.18 - 10:07
(9) я это делала без программирования
   bolobol
 
13 - 11.09.18 - 10:34
(10) Это два разных отчёта, что ли?
Отчёт1: есть остаток, нет движений
Отчёт2: Товары без остатка И без движений
Так, что ли?
   bolobol
 
14 - 11.09.18 - 10:35
(12) Мой начальник каждый день так делает
   nulback
 
15 - 11.09.18 - 10:36
(13) да считай что 2, только в 1-м.
   bolobol
 
16 - 11.09.18 - 11:12
Параметром каким-то должно регулироваться, какой именно отчёт будет выполняться?
   bolobol
 
17 - 11.09.18 - 11:14
(Нет движений за период И остаток) ОстаткиИОбороты ГДЕ Оборот = 0 И Запрос1

Объединить

Номенклатура И (Нет движений за период И Нет остатков) = Номенклатура ЛЕВОЕ ОстаткиИОбороты ГДЕ ОстаткиИОбороты ЕСТЬ NULL И Запрос2
   nulback
 
18 - 11.09.18 - 13:45
(17) спс, но чего то не въеду.
   vvspb
 
19 - 11.09.18 - 13:47
(14) я раз в м-ц делала
   nulback
 
20 - 11.09.18 - 13:52
вся фишка в том, что когда возврат он приходом на -количество идет, в итоге в вирт таблице регистра, если не брать периодичность, то данных нет вообще

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