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

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

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

Автор: astonvilla 24.10.17, 12:06

Нужно получить запросом обороты по клиенту за все месяцы, вне зависимости от наличия/отсутствия оборотов.

Сам регистр - оборотный. Бьюсь уже пол дня (((

Календарей и прочего в базе нет (((

Пришлось обойти проблему, предварительно вываливая все в ТЗ с уже заполненными строками с периодами. Но хотелось бы решить это на этапе формирования запроса.

Помогите, коллеги, не дайте в пасть в пучину ереси (((

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



 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 4,5
 

Автор: sava1 24.10.17, 13:00

Типо так

ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, 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 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)

Автор: astonvilla 24.10.17, 16:10

sava1 @ Сегодня, 14:00 * ,
ну этот код я уже видел на сайтах... Но это к дню относится, да и как его объединить с существующим мне пока не совсем понятно...

Автор: sava1 24.10.17, 17:23

выбрать различные
вместо день - МЕСЯЦ.

Автор: astonvilla 24.10.17, 17:37

Все - вопрос снят....
Все было до обидного элементарно.
В результатах запроса этих месяцев действительно нет (что собственно меня и сбивало с толку).
НО! Чтобы они появились достаточно было в обходе группировок указать "Все"...

ВыборкаПериод = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период", "ВСЕ"); 
Пока ВыборкаПериод.Следующий() Цикл
    ОбластьПериод.Параметры.Заполнить(ВыборкаПериод);
    ТабДок.Вывести(ОбластьПериод, ВыборкаПериод.Уровень());
КонецЦикла;


http://pro1c.org.ua/redirect.php?https://its.1c.ru/db/metod8dev/content/2660/hdoc

Автор: sava1 24.10.17, 17:43

icon_beer17.gif

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