Имя: Пароль:
1C
1С v8
СКД. Остатки и обороты на каждый день. Даже если не было оборотов.
0 Z_Z
 
27.08.13
15:12
Добрый день. Подскажите, возможно ли вывести в СКД остатки на начало дня, оборот и остаток на конец дня. Даже если не было оборотов в этот день?
Интересуют больше обороты. Так как остатки на каждый день по этой методике выводятся без проблем. http://1c-wiki.ru/wiki/Ежедневные_остатки
1 Xammsa
 
16.09.13
15:52
Up.
То же самое интересует. Если нет оборотов, должен получить ноль, а он просто не выбирает оборотов за период.
Выбираю обороты нарастающим итогом помесячно, так если в каком-то месяце нет оборотов, то и нарастающий итог за этот месяц не считает!

ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Период,
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК ОборотДт,
    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК ОборотКт
ПОМЕСТИТЬ ВТ_Обороты
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата1, &Дата2, Месяц, , Счет = &Счет0101, , ) КАК ХозрасчетныйОстаткиИОбороты

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстаткиИОбороты.Период,
    ХозрасчетныйОстаткиИОбороты.Субконто1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Обороты.Период КАК Период,
    ВТ_Обороты.Субконто1 КАК Субконто1,
    ВТ_Обороты.ОборотДт,
    ВТ_Обороты.ОборотКт,
    СУММА(ВТ_Обороты1.ОборотДт) КАК ОборотДтНарастающий,
    СУММА(ВТ_Обороты1.ОборотКт) КАК ОборотКтНарастающий
ИЗ
    ВТ_Обороты КАК ВТ_Обороты
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Обороты КАК ВТ_Обороты1
        ПО ВТ_Обороты.Период >= ВТ_Обороты1.Период
            И ВТ_Обороты.Субконто1 = ВТ_Обороты1.Субконто1

СГРУППИРОВАТЬ ПО
    ВТ_Обороты.Период,
    ВТ_Обороты.Субконто1,
    ВТ_Обороты.ОборотДт,
    ВТ_Обороты.ОборотКт

УПОРЯДОЧИТЬ ПО
    Субконто1,
    Период
АВТОУПОРЯДОЧИВАНИЕ
2 Xammsa
 
16.09.13
15:55
Например, оборот по счету:

Январь: 1000
Февраль: 0
Март: 500

Результат запроса:

Январь: оборот - 1000, нарастающий - 1000
Февраль: данные отсутствуют вообще
Март: оборот: - 500, нарастающий - 1500
3 Bober
 
16.09.13
15:59
(0) сделать "простой" запрос к регистру, и когда добавишь группировку по дню сделать дополнение периода.
4 ОбычныйЧеловек
 
16.09.13
16:00
в СКД "ТипДополнения" у группировки разве не работает?
5 Xammsa
 
16.09.13
16:18
(3) Не понял
(4) Это лишь часть большого запроса, по этим данным группировок не будет. Поэтому нужны нарастающие итоги, так сказать, в чистом виде.
6 Xammsa
 
16.09.13
16:33
(3) Если что-то вроде такого
http://www.1c-pro.ru/topic17843.html
Так же не получается нихрена. Отсутствуют записи за периоды, в которых не было оборотов
7 catena
 
16.09.13
16:37
(6)Соединить с таблицей, содержащей все нужные периоды.
8 balak05
 
16.09.13
16:40
(1) Null приведи к нулю
9 c00Lo
 
16.09.13
16:48
[:|||||:]
(7)Дополнение периодов в скд уже перестало работать?)))
10 catena
 
16.09.13
16:49
(9)И каде ж тут за СКД?
11 catena
 
16.09.13
16:49
(9)Пардон, сама слепая :)
12 Xammsa
 
16.09.13
17:05
(7) А каким образом соединить? И так уже, и эдак, и с Движениями и без.
Не выводит оборотов за февраль и все тут.

ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&Дата1, МЕСЯЦ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период
ПОМЕСТИТЬ ВТ_Даты
ИЗ
    (ВЫБРАТЬ
        0 КАК a
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        1
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        2
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        3
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        4
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        5
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        6
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        7
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        8
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        9) КАК aa
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК b
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК bb
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК c
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК cc
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК d
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК dd
        ПО (ИСТИНА)
ГДЕ
    aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&Дата1, &Дата2, МЕСЯЦ)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Период,
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК ОборотДт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК ОборотКт,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата1, &Дата2, Месяц, Движения, Счет = &Счет0102, , ) КАК ХозрасчетныйОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Даты КАК ВТ_Даты
        ПО ВТ_Даты.Период = ХозрасчетныйОстаткиИОбороты.Период

УПОРЯДОЧИТЬ ПО
    Субконто1
АВТОУПОРЯДОЧИВАНИЕ
13 lapinio
 
16.09.13
17:07
В настройках СКД есть Дополнять периодами в  группировке например день.
14 spacehelp
 
16.09.13
17:09
Можно так:
ВЫБРАТЬ
    ВашЗапрос.Период,
    ...
    ВашЗапрос.Субконто1
ПОМЕСТИТЬ ДанныеВашЗапросНарастающимИтогом
ИЗ
    ...
;

////////////////////////////////////////////////////////////ВЫБРАТЬ
    0 КАК Цифра
ПОМЕСТИТЬ Единицы

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

ВЫБРАТЬ
    1

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

ВЫБРАТЬ
    2

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

ВЫБРАТЬ
    3

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

ВЫБРАТЬ
    4

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

ВЫБРАТЬ
    5

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

ВЫБРАТЬ
    6

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

ВЫБРАТЬ
    7

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

ВЫБРАТЬ
    8

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

ВЫБРАТЬ
    9
;

////////////////////////////////////////////////////////////ВЫБРАТЬ
    Десятки.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ Десятки
ИЗ
    Единицы КАК Десятки
ГДЕ
    Десятки.Цифра * 10 < РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////ВЫБРАТЬ
    Сотни.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ Сотни
ИЗ
    Десятки КАК Сотни
ГДЕ
    Сотни.Цифра * 10 < РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////ВЫБРАТЬ
    Тысячи.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ Тысячи
ИЗ
    Сотни КАК Тысячи
ГДЕ
    Тысячи.Цифра * 10 < РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////ВЫБРАТЬ
    ДесяткиТысяч.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ ДесяткиТысяч
ИЗ
    Тысячи КАК ДесяткиТысяч
ГДЕ
    ДесяткиТысяч.Цифра * 10 < РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////ВЫБРАТЬ
    СотниТысяч.Цифра * 10 КАК Цифра
ПОМЕСТИТЬ СотниТысяч
ИЗ
    ДесяткиТысяч КАК СотниТысяч
ГДЕ
    СотниТысяч.Цифра * 10 < РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, СотниТысяч.Цифра + ДесяткиТысяч.Цифра + Тысячи.Цифра + Сотни.Цифра + Десятки.Цифра + Единицы.Цифра) КАК ДатаПериода
ПОМЕСТИТЬ Даты
ИЗ
    СотниТысяч КАК СотниТысяч,
    ДесяткиТысяч КАК ДесяткиТысяч,
    Тысячи КАК Тысячи,
    Сотни КАК Сотни,
    Десятки КАК Десятки,
    Единицы КАК Единицы
ГДЕ
    СотниТысяч.Цифра + ДесяткиТысяч.Цифра + Тысячи.Цифра + Сотни.Цифра + Десятки.Цифра + Единицы.Цифра <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////ВЫБРАТЬ
    Даты.ДатаПериода КАК ДатаПериода,
    ...
    ДанныеВашЗапросНарастающимИтогом.Субконто1
ИЗ
    Даты КАК Даты
        ЛЕВОЕ СОЕДИНЕНИЕ ДанныеВашЗапросНарастающимИтогом КАК ДанныеВашЗапросНарастающимИтогом
        ПО Даты.ДатаПериода = ДанныеВашЗапросНарастающимИтогом.Период

УПОРЯДОЧИТЬ ПО
    ...
;
15 catena
 
16.09.13
17:15
(12)Если чисто запросом:

(периоды можете сами задавать, как угодно, я не стала с линейками заморачиваться)


ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Период,
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК ОборотДт,
    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК ОборотКт
ПОМЕСТИТЬ ВТ_Обороты
ИЗ
    РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&Дата1, &Дата2, Месяц, , Счет = &Счет0101, , ) КАК ХозрасчетныйОстаткиИОбороты

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстаткиИОбороты.Период,
    ХозрасчетныйОстаткиИОбороты.Субконто1
;
Выбрать Периоды.Период,ВТ_Обороты.Субконто1 поместить втПериоды из(Выбрать различные НачалоПериода(ДатаКалендаря,Месяц) как период из РегистрСведений.РегламентированныйПроизводственныйКалендарь где
ДатаКалендаря между &Дата1 и &Дата2) как периоды
, (выбрать различные Субконто1 из ВТ_Обороты) как ВТ_Обороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втПериоды.Период КАК Период,
    втПериоды.Субконто1 КАК Субконто1,
    ЕстьNULL(ВТ_Обороты.ОборотДт,0),
    ЕстьNULL(ВТ_Обороты.ОборотКт,0),
    СУММА(ЕстьNULL(ВТ_Обороты1.ОборотДт,0)) КАК ОборотДтНарастающий,
    СУММА(ЕстьNULL(ВТ_Обороты1.ОборотКт,0)) КАК ОборотКтНарастающий
ИЗ
    втПериоды как втПериоды
    Левое соединение ВТ_Обороты КАК ВТ_Обороты
    по ВТ_Обороты.Период = втПериоды.Период
    и ВТ_Обороты.Субконто1 = втПериоды.Субконто1
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Обороты КАК ВТ_Обороты1
        ПО втПериоды.Период >= ВТ_Обороты1.Период
            И втПериоды.Субконто1 = ВТ_Обороты1.Субконто1

СГРУППИРОВАТЬ ПО
    втПериоды.Период,
    втПериоды.Субконто1,
    ВТ_Обороты.ОборотДт,
    ВТ_Обороты.ОборотКт

УПОРЯДОЧИТЬ ПО
    Субконто1,
    Период
АВТОУПОРЯДОЧИВАНИЕ
16 Xammsa
 
17.09.13
14:30
Благодарю, получилось
Независимо от того, куда вы едете — это в гору и против ветра!