Имя: Пароль:
1C
 
Накопительный итог в запросе
0 Frantaser
 
17.05.11
04:50
Подскажите плиз как получить накопительный итог при запросе по регистру накопления, например нужно получить из регистра Взаиморасчеты с контрагентами таблицу типа
Документ продажи   Сумма   Сумма нараст. итогом
 док1            1000             1000
 док2            2000             3000
 док3            150              3150...

как подключить к основному запросу получающему выборку документов запрос выдающий накопительный итог по этим докам?


   //Текст сформирован автоматически обработкой Универсальная консоль отчетов 2.7.8
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    ВзаиморасчетыСКонтрагентами.ПериодСекунда КАК Период,
   |    ВзаиморасчетыСКонтрагентами.Регистратор КАК Документ,
   |    ВзаиморасчетыСКонтрагентами.СуммаУпрПриход КАК Сумма
   |ПОМЕСТИТЬ Взаиморасчеты
   |ИЗ
   |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, Движения, ) КАК ВзаиморасчетыСКонтрагентами
   |ГДЕ
   |    ВзаиморасчетыСКонтрагентами.СуммаУпрПриход > 0
   |{УПОРЯДОЧИТЬ ПО
   |    Период}
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    Взаиморасчеты.Период,
   |    Взаиморасчеты.Документ,
   |    Взаиморасчеты.Сумма
   |ИЗ
   |    Взаиморасчеты КАК Взаиморасчеты";
   //Параметры запроса
   Запрос.УстановитьПараметр("КонецПериода",КонецПериода);// Дата
   Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода);// Дата
   Результат = Запрос.Выполнить();
1 Frantaser
 
17.05.11
04:51
как к этому обычному запросу можно подключить накопительную выборку показателя СуммаУпрПриход?
2 Frantaser
 
17.05.11
05:00
всем спасибо что прочитали, разобрался...
3 Нуф-Нуф
 
17.05.11
05:03
делал полгода назад что-то подобное. тоже ветку заводил здесь, тогда подсказали. сейчас если найду ту обработку - скину идею
4 Мизантроп
 
17.05.11
05:07
(2) напиши как сделал, многим интересно будет
5 catena
 
17.05.11
05:08
6 catena
 
17.05.11
05:09
На работу приду, кину еще ссылку на тему, где несколько способов обсуждали.
7 guitar_player
 
17.05.11
05:11
(0) Итоговую таблицу объединить саму с собой по уникальному условию (например Дата > Дата)
8 Frantaser
 
17.05.11
05:55
в этом запросе к типовому регистру ВзаиморасчетыСКонтрагентами есть соединения по измерению Подразделение, его нет в типовых конфигурациях, удалите если что...

   //Текст сформирован автоматически обработкой Универсальная консоль отчетов 2.7.8
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    ВзаиморасчетыСКонтрагентами.ПериодСекунда КАК Период,
   |    ВзаиморасчетыСКонтрагентами.Регистратор КАК Документ,
   |    ВзаиморасчетыСКонтрагентами.СуммаУпрПриход КАК Сумма,
   |    СУММА(ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрПриход) КАК СуммаУпрПриход,
   |    ВзаиморасчетыСКонтрагентами.Организация,
   |    ВзаиморасчетыСКонтрагентами.Подразделение,
   |    ВзаиморасчетыСКонтрагентами.Контрагент,
   |    ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента
   |ПОМЕСТИТЬ Вз1
   |ИЗ
   |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, Движения, ) КАК ВзаиморасчетыСКонтрагентами
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ВзаиморасчетыСКонтрагентамиОбороты
   |        ПО (ВЫБОР
   |                КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Организация = ВзаиморасчетыСКонтрагентами.Организация
   |                        И ВзаиморасчетыСКонтрагентамиОбороты.Подразделение = ВзаиморасчетыСКонтрагентамиОбороты.Подразделение
   |                        И ВзаиморасчетыСКонтрагентамиОбороты.Контрагент = ВзаиморасчетыСКонтрагентамиОбороты.Контрагент
   |                        И ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента
   |                        И (ВзаиморасчетыСКонтрагентамиОбороты.ПериодСекунда МЕЖДУ &НачалоПериода И ВзаиморасчетыСКонтрагентами.ПериодСекунда)
   |                    ТОГДА ИСТИНА
   |                ИНАЧЕ ЛОЖЬ
   |            КОНЕЦ)
   |ГДЕ
   |    ВзаиморасчетыСКонтрагентами.СуммаУпрПриход > 0
   |
   |СГРУППИРОВАТЬ ПО
   |    ВзаиморасчетыСКонтрагентами.ПериодСекунда,
   |    ВзаиморасчетыСКонтрагентами.Регистратор,
   |    ВзаиморасчетыСКонтрагентами.СуммаУпрПриход,
   |    ВзаиморасчетыСКонтрагентами.Организация,
   |    ВзаиморасчетыСКонтрагентами.Подразделение,
   |    ВзаиморасчетыСКонтрагентами.Контрагент,
   |    ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента
   |{УПОРЯДОЧИТЬ ПО
   |    Период}
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    Взаиморасчеты.Период,
   |    Взаиморасчеты.Документ,
   |    Взаиморасчеты.Сумма,
   |    Взаиморасчеты.СуммаУпрПриход,
   |    СУММА(ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход) КАК итСуммаУпрРасход
   |ПОМЕСТИТЬ Вз2
   |ИЗ
   |    Вз1 КАК Взаиморасчеты
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ВзаиморасчетыСКонтрагентамиОбороты
   |        ПО (ВЫБОР
   |                КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Организация = Взаиморасчеты.Организация
   |                        И ВзаиморасчетыСКонтрагентамиОбороты.Подразделение = Взаиморасчеты.Подразделение
   |                        И ВзаиморасчетыСКонтрагентамиОбороты.Контрагент = Взаиморасчеты.Контрагент
   |                        И ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента = Взаиморасчеты.ДоговорКонтрагента
   |                        И (ВзаиморасчетыСКонтрагентамиОбороты.ПериодСекунда МЕЖДУ &НачалоПериода И &КонецПериода)
   |                    ТОГДА ИСТИНА
   |                ИНАЧЕ ЛОЖЬ
   |            КОНЕЦ)
   |
   |СГРУППИРОВАТЬ ПО
   |    Взаиморасчеты.Период,
   |    Взаиморасчеты.Документ,
   |    Взаиморасчеты.Сумма,
   |    Взаиморасчеты.СуммаУпрПриход
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
   |    Вз2.Период,
   |    Вз2.Документ,
   |    Вз2.Сумма,
   |    Вз2.СуммаУпрПриход,
   |    Вз2.итСуммаУпрРасход,
   |    ВЫБОР
   |        КОГДА ВЫБОР
   |                КОГДА Вз2.итСуммаУпрРасход - Вз2.СуммаУпрПриход < 0
   |                    ТОГДА Вз2.СуммаУпрПриход - Вз2.итСуммаУпрРасход
   |                ИНАЧЕ 0
   |            КОНЕЦ > Вз2.Сумма
   |            ТОГДА Вз2.Сумма
   |        ИНАЧЕ ВЫБОР
   |                КОГДА Вз2.итСуммаУпрРасход - Вз2.СуммаУпрПриход < 0
   |                    ТОГДА Вз2.СуммаУпрПриход - Вз2.итСуммаУпрРасход
   |                ИНАЧЕ 0
   |            КОНЕЦ
   |    КОНЕЦ КАК ДолгПоДоку
   |ИЗ
   |    Вз2 КАК Вз2";
   //Параметры запроса
   Запрос.УстановитьПараметр("КонецПериода",КонецПериода);// Дата
   Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода);// Дата
   Результат = Запрос.Выполнить();
9 Frantaser
 
17.05.11
05:56
По сути этот запрос быстро рассчитывает сумму долга по документам отгрузки с учетом оплат по фифо.
10 Frantaser
 
17.05.11
05:57
но скажу сразу сырой еще, он сейчас не учитывает сальдо на начало периода запроса, мне для решения текущей задачи эта заготовка подошла и не более того :)
11 mikeA
 
17.05.11
07:10
(7) даты могут быть одинаковыми
12 guitar_player
 
17.05.11
08:07
(11) нужны уникальные поля.
Вот мой вариант:

   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ИтоговаяТаблица.ПериодС КАК ПериодС,
   |    ИтоговаяТаблица.Сотрудник КАК Сотрудник,
   |    ИтоговаяТаблица.Регистратор КАК Регистратор,
   |    ИтоговаяТаблица.НомерСтроки КАК НомерСтроки,
   |    ИтоговаяТаблица.ЗанимаемыхСтавок КАК ЗанимаемыхСтавок,
   |    ИтоговаяТаблица.ПериодПо КАК ПериодПо,
   |    ИтоговаяТаблица.МоментВремени КАК МоментВремени,
   |    ИтоговаяТаблица.ВсегоСтавок - ИтоговаяТаблица.ЗанимаемыхСтавок КАК КоличествоСвободныхСтавок,
   |    ИтоговаяТаблица.ВсегоСтавок КАК ВсегоСтавок,
   |    ПРЕДСТАВЛЕНИЕ(ИтоговаяТаблица.Регистратор) КАК РегистраторПредставление,
   |    ПРЕДСТАВЛЕНИЕ(ИтоговаяТаблица.Сотрудник) КАК СотрудникПредставление,
   |    ИтоговаяТаблица.ТипДвижения
   |ИЗ
   |    (ВЫБРАТЬ
   |        ВТ_ИсторияДвиженияСтавок.ПериодС КАК ПериодС,
   |        ВТ_ИсторияДвиженияСтавок.Сотрудник КАК Сотрудник,
   |        ВТ_ИсторияДвиженияСтавок.Регистратор КАК Регистратор,
   |        ВТ_ИсторияДвиженияСтавок.НомерСтроки КАК НомерСтроки,
   |        СУММА(ВТ_ИсторияДвиженияСтавокДополнение.ЗанимаемыхСтавок) КАК ЗанимаемыхСтавок,
   |        ВТ_ИсторияДвиженияСтавок.ПериодПо КАК ПериодПо,
   |        ВТ_ИсторияДвиженияСтавок.ВсегоСтавок КАК ВсегоСтавок,
   |        ВТ_ИсторияДвиженияСтавок.МоментВремени КАК МоментВремени,
   |        ВТ_ИсторияДвиженияСтавок.ПервоначальныйПериодЗавершения КАК ПервоначальныйПериодЗавершения,
   |        ВТ_ИсторияДвиженияСтавок.ТипДвижения КАК ТипДвижения
   |    ИЗ
   |        ВТ_ИсторияДвиженияСтавок КАК ВТ_ИсторияДвиженияСтавок
   |            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ИсторияДвиженияСтавок КАК ВТ_ИсторияДвиженияСтавокДополнение
   |            ПО (ВЫБОР
   |                    КОГДА ВТ_ИсторияДвиженияСтавок.ПериодС > ВТ_ИсторияДвиженияСтавокДополнение.ПериодС
   |                        ТОГДА ИСТИНА
   |                    КОГДА ВТ_ИсторияДвиженияСтавок.ПериодС = ВТ_ИсторияДвиженияСтавокДополнение.ПериодС
   |                            И ВТ_ИсторияДвиженияСтавок.МоментВремени > ВТ_ИсторияДвиженияСтавокДополнение.МоментВремени
   |                        ТОГДА ИСТИНА
   |                    КОГДА ВТ_ИсторияДвиженияСтавок.ПериодС = ВТ_ИсторияДвиженияСтавокДополнение.ПериодС
   |                            И ВТ_ИсторияДвиженияСтавок.МоментВремени = ВТ_ИсторияДвиженияСтавокДополнение.МоментВремени
   |                            И ВТ_ИсторияДвиженияСтавок.НомерСтроки > ВТ_ИсторияДвиженияСтавокДополнение.НомерСтроки
   |                        ТОГДА ИСТИНА
   |                    КОГДА ВТ_ИсторияДвиженияСтавок.ПериодС = ВТ_ИсторияДвиженияСтавокДополнение.ПериодС
   |                            И ВТ_ИсторияДвиженияСтавок.МоментВремени = ВТ_ИсторияДвиженияСтавокДополнение.МоментВремени
   |                            И ВТ_ИсторияДвиженияСтавок.НомерСтроки = ВТ_ИсторияДвиженияСтавокДополнение.НомерСтроки
   |                        ТОГДА ИСТИНА
   |                    ИНАЧЕ ЛОЖЬ
   |                КОНЕЦ)
   |    
   |    СГРУППИРОВАТЬ ПО
   |        ВТ_ИсторияДвиженияСтавок.ПериодС,
   |        ВТ_ИсторияДвиженияСтавок.Сотрудник,
   |        ВТ_ИсторияДвиженияСтавок.Регистратор,
   |        ВТ_ИсторияДвиженияСтавок.НомерСтроки,
   |        ВТ_ИсторияДвиженияСтавок.ПериодПо,
   |        ВТ_ИсторияДвиженияСтавок.ВсегоСтавок,
   |        ВТ_ИсторияДвиженияСтавок.МоментВремени,
   |        ВТ_ИсторияДвиженияСтавок.ПервоначальныйПериодЗавершения,
   |        ВТ_ИсторияДвиженияСтавок.ТипДвижения) КАК ИтоговаяТаблица
13 catena
 
17.05.11
08:26
(11)Прям до секунды?
14 catena
 
17.05.11
08:27