Имя: Пароль:
1C
1С v8
Не могу никак толком запрос построить
0 PiNHeaD
 
19.06.15
21:38
Добрый день

Необходимо сформировать план-фактный отчет по периодам. Сделал запрос вот таким образом:

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

В итоге когда ввожу начало и конец месяцы в периоды соответвенно - выдает все нормально. Как только пишу более мелкий период (допустим неделю) выдает пустой запрос. Где может быть ошибка, подскажите пожалуйста
1 Лефмихалыч
 
19.06.15
21:40
оборотов по бюджету за месяц нет, вот и ноль. Параметры периода у бюджета должны быть не такими, как у оборотов
2 Лефмихалыч
 
19.06.15
21:43
ну, и это...
БюджетДвиженияДенегОбороты.Подразделение и  УправленческийОбороты.Подразделение - это уже ссылки, так что ".Ссылка" удали и ни кому не показывай - заклюют.

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

А еще всегда используй ВЫРАЗИТЬ(), когда обращаешься к реквизитам субконто через точку. Которые не используют ВЫРАЗИТЬ в таких случаях, у них потом половое бессилие наступает и близорукость.

ну и Счет В(&СписокСчетов) будет почти наверняка работать резвее того, что у тебя. Не медленнее - точно.
3 PiNHeaD
 
19.06.15
21:53
Лефмихалыч, спасибо тебе добрый человек!!! Я в запросах полный нуб, как слепошарый кот тыкаюсь. Но задание выполнять надо...Буду пробовать твои советы.
4 PiNHeaD
 
19.06.15
22:08
Короче получается такая шляпа, что если бюджета не было или движения денег, то запрос пустой. Как организовать этот запрос, что бы выводилось корректно все? Может объединением? Или вложеными запросам? Вообще ума не приложу
5 Лефмихалыч
 
19.06.15
23:03
объединением
6 PiNHeaD
 
19.06.15
23:16
Спасибо. Вроди бы теперь выбирает...НО он валит в отчет все подряд, а мн надо произвести анализ статей движения денег в бюджете (план) с реальным движением денег (факт). А запрос:

ВЫБРАТЬ
    БюджетДвиженияДенегОбороты.СтатьяДвиженияДенег КАК СтатьяДвиженияДенег,
    БюджетДвиженияДенегОбороты.Подразделение КАК Подразделение,
    БюджетДвиженияДенегОбороты.СуммаОборот КАК План,
    NULL КАК Факт
ИЗ
    РегистрНакопления.БюджетДвиженияДенег.Обороты(
            &ДатаС,
            &ДатаПо,
            ,
            ДатаНачало <> ДАТАВРЕМЯ(1, 1, 1)
                И ДатаОкончание <> ДАТАВРЕМЯ(1, 1, 1)) КАК БюджетДвиженияДенегОбороты
ГДЕ
    БюджетДвиженияДенегОбороты.СуммаОборот < 0

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

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

Валит все без разбору
7 leonidkorolev
 
19.06.15
23:32
(6) У вас период планирования какой? Месяц скорей всего?
Добавьте в запрос колонку что-то типа НачалоПериода(Дата, Месяц)
8 PiNHeaD
 
20.06.15
10:01
leonidkorolev, период планирования неделя. А как ее добавить просто прописать?
|&НачалоПериода Как НачалоПериода,
9 ProgAL
 
20.06.15
13:32
Запрос из (6) поместить во вложенный запрос, его сгруппировать СтатьяДвиженияДенег, Подразделение   и агрегатнную функцию СУММА  для СУММА(План)  и СУММА(Факт) Вместо NULL используй 0, хотя может и так посчитает.
10 PiNHeaD
 
20.06.15
13:58
ProgAL, спасибо. БУду пробовать
Независимо от того, куда вы едете — это в гору и против ветра!