Имя: Пароль:
1C
1С v8
СКД, дополнить таблицу нулями
0 ksenod
 
30.11.18
10:19
Добрый день, с помощью соединения наборов данных получаю остатки на конец нужных мне периодов в формате(для периода 02.01.18-05.03.18, по месяцам)
02.01.18 номенклатура1 100     \  
01.02.18 номенклатура1 50       -остатки на конец месяца
01.03.18 номенклатура1 50      /

02.01.18 номенклатура2 100     \  
01.02.18 номенклатура2 50       -остатки на конец месяца
"""01.03.18 нет так там не было остатков"""

Хотел бы получить

02.01.18 номенклатура2 100     \  
01.02.18 номенклатура2 50       -остатки на конец месяца
01.03.18 номенклатура2 0      /


Вариант с использованием справочника номенклатуры для получения всех остатков не подходит, т.к. тогда появится слишком много пустых строк которые мне не нужны
Использую следующий запрос в нем &период- даты окончания месяцев из периода заданного пользователем



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

СГРУППИРОВАТЬ ПО
    ПартииТоваровНаСкладахОстатки.Номенклатура,
    ПартииТоваровНаСкладахОстатки.КоличествоОстаток,
    ПартииТоваровНаСкладахОстатки.СтоимостьОстаток,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток
;
1 Fragster
 
гуру
30.11.18
10:22
2 ksenod
 
30.11.18
10:25
(1) к сожалению это не то
3 Fragster
 
гуру
30.11.18
10:26
(2) то
4 Eiffil123
 
30.11.18
10:26
(0) "Вариант с использованием справочника номенклатуры для получения всех остатков не подходит, т.к. тогда появится слишком много пустых строк которые мне не нужны "

А какие тогда нужны? сначала нужно понять, какую номенклатуру с нулем показывать, а какую уже не надо.
Как вариант, брать оборот за какой-то предыдущий период, оттуда выбирать номенклатуру, и объединением в запрос подсовывать номенклатуру из этого отбора (объединить с остатками на дату без слова "все")
5 ksenod
 
30.11.18
10:31
(4) Спасибо за идею, попробую если не придумаю ничего лучше.
Нужно все что имело остатки, резеры или движения за любой момент периода, я в следующих вирт таблицах использую конструкции вида(см в конце) и из за отсутствия последней записи периоды без остатков не выводятся

СУММА(ВЫБОР
            КОГДА Остатки.ПериодДляВывода = Обороты.Периодичность_
                ТОГДА ЕСТЬNULL(Обороты.Приход_, 0)
        КОНЕЦ) КАК Приход_,
6 ksenod
 
30.11.18
10:40
(3) Я получаю вот такие записи
http://prntscr.com/lou4b1
как мне в этом поможет дополнение?
7 ksenod
 
30.11.18
11:14
(4) Спасибо за помощь, твой вариант работает и довольно быстро!
8 Fragster
 
гуру
30.11.18
11:37
(6) ты просто не умеешь их готовить
9 Fragster
 
гуру
30.11.18
11:37
учись готовить дополнения
10 Fragster
 
гуру
30.11.18
11:37
в данной ситуации надо разделить запрос на наборы данных типа объединения
11 Fragster
 
гуру
30.11.18
11:38
чтобы в каждом наборе были правильные роли
12 Fragster
 
гуру
30.11.18
11:38
а потом слепить
13 Fragster
 
гуру
30.11.18
11:38
с помощью настроек и компоновок