Имя: Пароль:
1C
1С v8
Как получить начальные остатки по месяцам
0 pavlushov
 
30.06.15
15:03
Есть регистр "Взаиморасчеты", измерение: ДокументРасчетов и ресурс: Сумма, нужно помесячно за указанный период получить нач. остаток по каждому документу расчетов.

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

получаю:

01.01.2015 0:00:00
    Реализация товаров и услуг УТРАД001077 от 07.11.2014 17:34:41 14 000
01.02.2015 0:00:00
01.03.2015 0:00:00
    Реализация товаров и услуг УТРАД001077 от 07.11.2014 17:34:41 14 000

что не так?
1 pavlushov
 
30.06.15
15:20
Извиняюсь, сам тупил:

решается так:

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

Результат:

Реализация товаров и услуг УТРАД001077 от 07.11.2014 17:34:41
    01.01.2015 0:00:00 14 000
    01.02.2015 0:00:00 14 000
    01.03.2015 0:00:00 14 000
    01.04.2015 0:00:00 0
    01.05.2015 0:00:00 0
    01.06.2015 0:00:00 0
    01.07.2015 0:00:00 0
    01.08.2015 0:00:00 0
    01.09.2015 0:00:00 0
    01.10.2015 0:00:00 0
    01.11.2015 0:00:00 0
    01.12.2015 0:00:00 0
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший