Имя: Пароль:
1C
1С v8
помогите с запросом!
0 vip67
 
26.07.13
13:45
Всем привет! пятница - башка не варит:
текст
    Пока ВыборкаПлатежа.Следующий() Цикл
            
        СделкаПлат = ВыборкаПлатежа.Сделка;
        
        ЗапросПрихМатТекМес = Новый Запрос;
        ЗапросПрихМатТекМес.Текст =
            "ВЫБРАТЬ
            |    ПОДСТРОКА(ПриходМатТекМес.СубконтоДт1.Код, 1, 2) КАК ГрМат,
            |    ПриходМатТекМес.СуммаОборот КАК Сумма20,
            |    ПриходМатТекМес.СубконтоКт3 КАК Сделка,
            |    ПриходМатТекМес.Регистратор.Номер КАК НомерАкта,
            |    НДСтекМес.СуммаОборот КАК СуммаНДС,
            |    ЕСТЬNULL(Сумма631.СуммаОборот, 0) - ЕСТЬNULL(Остатки631.СуммаОстатокКт, 0) КАК СуммаОплатыТекМес
            |ИЗ
            |    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПериода, &КонПериода, Запись, СчетДт В ИЕРАРХИИ (&Счет20), , , , ) КАК ПриходМатТекМес
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПериода, &КонПериода, Регистратор, СчетДт В ИЕРАРХИИ (&СчетНДСнп), , , , ) КАК НДСтекМес
            |        ПО ПриходМатТекМес.Регистратор = НДСтекМес.Регистратор
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПериода, &КонПериода, Регистратор, , , СчетКт В ИЕРАРХИИ (&Счет631), , ) КАК Сумма631
            |        ПО ПриходМатТекМес.Регистратор = Сумма631.Регистратор
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&НачПериода, Счет В ИЕРАРХИИ (&счет631), , ) КАК Остатки631
            |        ПО ПриходМатТекМес.СубконтоКт3 = Остатки631.Субконто3
            |ГДЕ
            |    ПриходМатТекМес.СубконтоКт3 = &СделкаПлат
            |    И ЕСТЬNULL(Сумма631.СуммаОборот, 0) - ЕСТЬNULL(Остатки631.СуммаОстатокКт, 0) > 0
            |
            |СГРУППИРОВАТЬ ПО
            |    ПриходМатТекМес.СубконтоКт3,
            |    ПриходМатТекМес.Регистратор.Номер,
            |    ПОДСТРОКА(ПриходМатТекМес.СубконтоДт1.Код, 1, 2),
            |    ЕСТЬNULL(Сумма631.СуммаОборот, 0) - ЕСТЬNULL(Остатки631.СуммаОстатокКт, 0),
            |    ПриходМатТекМес.СуммаОборот,
            |    НДСтекМес.СуммаОборот
            |ИТОГИ
            |    СУММА(Сумма20),
            |    СУММА(СуммаНДС),
            |    СУММА(СуммаОплатыТекМес)
            |ПО
            |    Сделка,
            |    НомерАкта,
            |    ГрМат";

        ЗапросПрихМатТекМес.УстановитьПараметр("КонПериода", КонПериода);
        ЗапросПрихМатТекМес.УстановитьПараметр("НачПериода", НачПериода);
        ЗапросПрихМатТекМес.УстановитьПараметр("СделкаПлат", СделкаПлат);
        ЗапросПрихМатТекМес.УстановитьПараметр("Счет20", Счет20);
        ЗапросПрихМатТекМес.УстановитьПараметр("Счет631", Счет631);
        ЗапросПрихМатТекМес.УстановитьПараметр("СчетНДСнп", СчетНДСнп);
        
        РезультатПрихМатТекМес = ЗапросПрихМатТекМес.Выполнить();
    
        ВыборкаСделка = РезультатПрихМатТекМес.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

        Пока ВыборкаСделка.Следующий() Цикл
            ВыборкаРегистратор = ВыборкаСделка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаРегистратор.Следующий() Цикл
                СтрокаТаб = Таблица.Добавить();
                СтрокаТаб.Контрагент = ВыборкаПлатежа.Контрагент;
                СтрокаТаб.НомерСчета = ВыборкаПлатежа.Сделка.НомерВходящегоДокумента;
                СтрокаТаб.Сумма631 = ВыборкаРегистратор.СуммаОплатыТекМес;
                СтрокаТаб.НДС = ВыборкаРегистратор.СуммаНДС;
                СтрокаТаб.Сумма20 = ВыборкаРегистратор.Сумма20;
                
                ВыборкаГрМат = ВыборкаРегистратор.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                Пока ВыборкаГрМат.Следующий() Цикл
                    СтрокаТаб = Таблица.Добавить();
                    СтрокаТаб.НомерАкта = ВыборкаГрМат.НомерАкта;
                    СтрокаТаб.ГруппаМатериала = ВыборкаГрМат.ГрМат;
                    СтрокаТаб.Сумма20 = ВыборкаГрМат.Сумма20;
                    Выборка1 = ВыборкаГрМат.Выбрать();
                    Пока Выборка1.Следующий() Цикл
                        
                    КонецЦикла;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
        
    КонецЦикла;

в отчет сумма20 выводится нормально, а вот Сумма631 троится/двоится как и суммаНДС. Где ошибка? ткните носом!
1 Галахад
 
гуру
26.07.13
13:51
В условии ГДЕ.
2 vip67
 
26.07.13
13:53
(1) и что там не так?
3 Галахад
 
гуру
26.07.13
13:58
(2) Второе условие.
4 vip67
 
26.07.13
13:59
я его убирал - результат тот-же
5 vip67
 
26.07.13
14:03
вот что дает консоль запроса:

ГрМат    Сумма20    Сделка    НомерАкта    СуммаНДС    СуммаОплатыТекМес
    457,09    Счет на оплату поставщика бн000001170 от 07.06.2013 10:20:40        365,68    2 194,04
    457,09    Счет на оплату поставщика бн000001170 от 07.06.2013 10:20:40    08400012757    365,68    2 194,04
32    314,23    Счет на оплату поставщика бн000001170 от 07.06.2013 10:20:40    08400012757    182,84    1 097,02
32    115,75    Счет на оплату поставщика бн000001170 от 07.06.2013 10:20:40    08400012757    91,42    548,51
32    198,48    Счет на оплату поставщика бн000001170 от 07.06.2013 10:20:40    08400012757    91,42    548,51
33    130,46    Счет на оплату поставщика бн000001170 от 07.06.2013 10:20:40    08400012757    91,42    548,51
33    130,46    Счет на оплату поставщика бн000001170 от 07.06.2013 10:20:40    08400012757    91,42    548,51
64    12,4    Счет на оплату поставщика бн000001170 от 07.06.2013 10:20:40    08400012757    91,42    548,51
64    12,4    Счет на оплату поставщика бн000001170 от 07.06.2013 10:20:40    08400012757    91,42    548,51
6 vip67
 
26.07.13
14:03
1097,02 - правильно, а вот уже 2194,04 - удвоение
7 vip67
 
26.07.13
14:05
хотя - нет - брешу 548,51 - правильно, а остальное - двоится/тьорится - судя по всему - с уровнем группировки завязано
8 GenAcid
 
26.07.13
14:08
Что просил - то и получил. Может тебе не сумма по группировкам нужна-то?
9 vip67
 
26.07.13
14:10
нужна сумма по группе
10 GenAcid
 
26.07.13
14:12
(9) Так ты ее и получил.
Выведи в консоли в дерево, поймешь почему получилось так, как получилось.
11 vip67
 
26.07.13
14:16
вывел - не понял :)
12 vip67
 
26.07.13
14:23
Сумма631 и суммаНДС отражается в каждой записи в дереве, а в групе - она суммируется - отсюда и удвоение/утроение.
но это неправильные данные - эти суммы должны быть только на уровне выборкаРегистратор.
13 hhhh
 
26.07.13
14:28
(12) ну так и делай. Зачем ты ее в каждую строчку суешь?
14 vip67
 
26.07.13
21:46
(13) истину глаголишь! спс всем! счас буду разбираться.