Версия для печати темы (https://pro1c.org.ua/index.php?s=19bca44322cd0d329c310c2a2a8186e4&showtopic=59969)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Вывод нулевых остатков в отчёт

Автор: fenrishawke 01.07.20, 9:53

Добрый день. Есть отчёт для показа остатков на складе. Только эта icon_cuss.gif не выводит нулевые остатки. Помогите тупенькому пожалуйста 64000000.gif

Код запроса:

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


Автор: Vofka 01.07.20, 10:05

Из регистра нулевые остатки не получите. Если вы хотите вывести всю номенклатуру и возле каждой вывести остаток или 0 если такового нету, то надо сделать запрос к справочнику номенклатуры и левым соединением прицепить РегистрНакопления.СвободныеОстатки.Остатки. Как-то так:

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


На работоспособность не проверял, но идея должна быть понятна.

Автор: fenrishawke 01.07.20, 11:01

Vofka @ Сегодня, 10:05 * ,
Таким образом он выводит ТОЛЬКО нулевые. А мне нужно чтобы и нулевые и то что осталось выводил.
В справочнике номенклатуры нету поля с остатками. Они все проходят только через документ Поступления

Обманул, выводит biggrin.gif Но не сортирует по категориям

И сами категории выводит как нулевой остаток, прикольно

https://pro1c.org.ua/redirect.php?https://drive.google.com/file/d/1aMSDb_JcN8t45i9_J8kCyDzEUijJv7m4/view?usp=sharing

Автор: sava1 01.07.20, 11:13

Цитата(fenrishawke @ 01.07.20, 10:53) *
ВЫБОР КОГДА КоличествоОстаток = 0 ТОГДА "0" КОГДА НЕ СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель = НЕОПРЕДЕЛЕНО ТОГДА СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель ИНАЧЕ СвободныеОстаткиОстатки.Номенклатура.Родитель КОНЕЦ КАК Категория


а что тут прикольногго - как написали - так и вернуло

Автор: fenrishawke 01.07.20, 14:28

Помогите переписать чтобы работало .-.

Автор: Vofka 01.07.20, 14:31

Цитата(fenrishawke @ 01.07.20, 12:01) *
И сами категории выводит как нулевой остаток, прикольно

Это не на какие мысли не наводит?
Цитата(fenrishawke @ 01.07.20, 12:01) *
КОГДА КоличествоОстаток = 0 ТОГДА "0"

Автор: sava1 01.07.20, 15:14

Цитата(Vofka @ 01.07.20, 11:05) *
ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, ВЫБОР КОГДА ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) = 0 ТОГДА "0" КОГДА НЕ СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель = НЕОПРЕДЕЛЕНО ТОГДА СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель ИНАЧЕ СвободныеОстаткиОстатки.Номенклатура.Родитель КОНЕЦ КАК Категория


заменить на

IsNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) КоличествоОстаток,
ВЫБОР КОГДА НЕ СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель = НЕОПРЕДЕЛЕНО
ТОГДА СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель
ИНАЧЕ СвободныеОстаткиОстатки.Номенклатура.Родитель
КОНЕЦ КАК Категория
....

при выводе отчета - форматируйте значение КоличествоОстаток

Автор: fenrishawke 01.07.20, 15:32

Vofka @ Сегодня, 14:31 * ,
Я слишком тупенький biggrin.gif
Но если подумать, то он выводит этим запросом ВСЁ что равно по количеству нулю
т.е. и группы тоже
Но блин
как достать тогда оттуда группы? Чтобы он выводил чисто товар и ещё группировал его

Автор: sava1 01.07.20, 15:44

Цитата(fenrishawke @ 01.07.20, 16:32) *
Чтобы он выводил чисто товар и ещё группировал его


Кто такой ОН ?
Как группировать ?

Автор: fenrishawke 01.07.20, 16:02

sava1 @ Сегодня, 15:44 * ,
ОН - Отчёт

Группировать по группам товара
Вот как тут
Чтобы он и нулевые остатки тоже группировал


Автор: Vofka 01.07.20, 16:52

fenrishawke, в суть особо не вникал, но предположу, что вам вместо

ВЫБОР
        КОГДА ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) = 0 ТОГДА "0"
                    КОГДА НЕ СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель = НЕОПРЕДЕЛЕНО
            ТОГДА СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель
            ИНАЧЕ СвободныеОстаткиОстатки.Номенклатура.Родитель
    КОНЕЦ КАК Категория


надо написать

ВЫБОР
            КОГДА СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель <> НЕОПРЕДЕЛЕНО
                   ТОГДА СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель
            ИНАЧЕ СвободныеОстаткиОстатки.Номенклатура.Родитель
    КОНЕЦ КАК Категория

Автор: sava1 01.07.20, 16:53

для непопадания групп добавьте в запрос

ГДЕ НЕ СпрНоменклатура.ЭтоГруппа

остальное - вполне рабочее

Автор: fenrishawke 01.07.20, 17:15

sava1 @ Сегодня, 16:53 * ,
И всё ещё нулевые остатки нужно сгруппировать по группам как в номенклатуре

Автор: sava1 01.07.20, 19:18

Вы хотите всю номенклатуру с нулевыми остатками в одну группу ?

Вы хотите всю номенклатуру с нулевыми остатками в одну группу ?

ВЫБОР
        КОГДА ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) = 0 ТОГДА "Нулевые"
                    КОГДА НЕ СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель = НЕОПРЕДЕЛЕНО
            ТОГДА Выразить(СвободныеОстаткиОстатки.Номенклатура.Родитель.Родитель.Наименование как Строка(256))
            ИНАЧЕ Выразить(СвободныеОстаткиОстатки.Номенклатура.Родитель.Наименование как Строка(256))
    КОНЕЦ КАК Категория

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua