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

Объединить

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