Вход | Регистрация


Запрос, переходящий остаток

Запрос, переходящий остаток
Я
   kennetmccormick
 
06.10.16 - 13:20
есть запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
    ХозрасчетныйОстаткиИОбороты.Период КАК Период,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
    "Остаток на конец дня" КАК Поле1
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Счет В ИЕРАРХИИ (&МассивСчетовБанк), , ) КАК ХозрасчетныйОстаткиИОбороты

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстаткиИОбороты.Организация,
    ХозрасчетныйОстаткиИОбороты.Период,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт


нужно этот "Остаток на конец дня" перенести как начальный остаток на след день. Понимаю что соединить с самим собой надо, но не получается
ЗЫ. Про "СуммаНачальныйОстатокДт" знаю- запрос просто для примера
 
 
   DrShad
 
1 - 06.10.16 - 13:49
вообще нифига не понятно
   vyaz
 
2 - 06.10.16 - 13:50
"Остаток на конец дня" КАК " начальный остаток на след день"
   trooba
 
3 - 06.10.16 - 13:52
(0) "Остаток на конец дня." вот тут нужно поставить точку. В этом ошибка, иначе не взлетит
   Ёпрст
 
4 - 06.10.16 - 14:03
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
   azernot
 
5 - 06.10.16 - 14:35
Цель в чём? Получить остаток на каждый день в запросе?
   kennetmccormick
 
6 - 06.10.16 - 14:44
надо из таблицы вида
01.01.16 | 1000.00 | Остаток на конец дня
03.01.16 |  500.00 | Остаток на конец дня
04.01.16 | 2300.00 | Остаток на конец дня
09.01.16 | 1800.00 | Остаток на конец дня

надо получить такую
01.01.16 | 1000.00 | Остаток на конец дня
03.01.16 | 1000.00 | Остаток на начало дня
03.01.16 |  500.00 | Остаток на конец дня
04.01.16 |  500.00 | Остаток на начало дня
04.01.16 | 2300.00 | Остаток на конец дня
09.01.16 | 2300.00 | Остаток на начало дня
09.01.16 | 1800.00 | Остаток на конец дня
   В тылу врага
 
7 - 06.10.16 - 14:47
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
    ХозрасчетныйОстаткиИОбороты.Период КАК Период,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК Остаток
1 КАК ФлагПорядка
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Счет В ИЕРАРХИИ (&МассивСчетовБанк), , ) КАК ХозрасчетныйОстаткиИОбороты

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

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
    ХозрасчетныйОстаткиИОбороты.Период КАК Период,    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйныйОстатокДт 
0 КАК ФлагПорядка
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Счет В ИЕРАРХИИ (&МассивСчетовБанк), , ) КАК ХозрасчетныйОстаткиИОбороты

УПОРЯДОЧИТЬ ПО Период, Организация, ФлагПорядка
   DrShad
 
8 - 06.10.16 - 14:48
(7) что за адский мегапизнец?
   DrShad
 
9 - 06.10.16 - 14:49
(6) в поиск Остатки на каждый день запросом
   azernot
 
10 - 06.10.16 - 14:53
(6) Ну поясни, чем тебя не устраивают поля
СуммаКонечныйОстатокДт
и
СуммаНачальныйОстатокДт
?

Или подразумевается, что вместо этих полей, какое-то своё мега поле, рассчитываемое по мега-супер-пупер-формуле?
 
 Рекламное место пустует
   В тылу врага
 
11 - 06.10.16 - 14:56
(8) как просил автор
   kennetmccormick
 
12 - 06.10.16 - 14:56
(10) запрос для примера, чтоб похожую исходную таблицу можно было получить. на деле там совсем по-другому и портянка с запросами большущая
   azernot
 
13 - 06.10.16 - 15:12
Если "каждый день" не самоцель, то как-то так:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ХозрасчетныйОстаткиИОбороты.Период КАК Дата,
    ХозрасчетныйОстаткиИОбороты.Организация,
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК ОстатокНаНачало,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК Остаток
ПОМЕСТИТЬ Остатки
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Счет В ИЕРАРХИИ (&МассивСчетовБанк), , ) КАК ХозрасчетныйОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ОстаткиКонечные.Организация,
    ОстаткиКонечные.Субконто1,
    ОстаткиКонечные.Дата КАК Дата,
    ЕСТЬNULL(ОстаткиНачальные.Остаток, ОстаткиКонечные.ОстатокНаНачало) КАК ОстатокНачальный,
    ОстаткиКонечные.Остаток КАК ОстатокКонечный
ИЗ
    Остатки КАК ОстаткиКонечные
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ОстаткиКонечные.Организация КАК Организация,
            ОстаткиКонечные.Субконто1 КАК Субконто1,
            ОстаткиКонечные.Дата КАК Дата,
            МАКСИМУМ(ОстаткиНачальные.Дата) КАК ДатаНачальногоОстатка
        ИЗ
            Остатки КАК ОстаткиКонечные
                ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК ОстаткиНачальные
                ПО ОстаткиКонечные.Организация = ОстаткиНачальные.Организация
                    И ОстаткиКонечные.Субконто1 = ОстаткиНачальные.Субконто1
                    И ОстаткиКонечные.Дата > ОстаткиНачальные.Дата
        
        СГРУППИРОВАТЬ ПО
            ОстаткиКонечные.Субконто1,
            ОстаткиКонечные.Организация,
            ОстаткиКонечные.Дата) КАК ДатыОстатков
            ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК ОстаткиНачальные
            ПО ДатыОстатков.Организация = ОстаткиНачальные.Организация
                И ДатыОстатков.Субконто1 = ОстаткиНачальные.Субконто1
                И ДатыОстатков.ДатаНачальногоОстатка = ОстаткиНачальные.Дата
        ПО ОстаткиКонечные.Организация = ДатыОстатков.Организация
            И ОстаткиКонечные.Субконто1 = ДатыОстатков.Субконто1
            И ОстаткиКонечные.Дата = ДатыОстатков.Дата

УПОРЯДОЧИТЬ ПО
    Дата

(на всякий случай добавил Субконто1, чтобы пример показывал как действовать с несколькими аналитиками, и взял на себя смелость предположить, что "самый первый начальный остаток" известен изначально, но при желании можно определить период &НачалоПериода - 1 день)
   DrShad
 
14 - 06.10.16 - 15:13
(12) уууууу, как все запущенно - обманывать не хорошо
   KishMish
 
15 - 06.10.16 - 15:33
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Организация,
      Период КАК Период,
    СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт

    Поместить вт_1
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Счет В ИЕРАРХИИ (&МассивСчетовБанк), , ) КАК ХозрасчетныйОстаткиИОбороты

СГРУППИРОВАТЬ ПО
 Организация,
    Период,
    СуммаКонечныйОстатокДт;

ВЫБРАТЬ  //ищем все меньшие периоды


        вт_1.Организация,   
        вт_1.Период,
        вт_Пред.Период КАК ПериодПред,
        вт_Пред.СуммаКонечныйОстатокДт
        
ПОМЕСТИТЬ вт_2
ИЗ
    вт_1 КАК вт_1    
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ вт_1 КАК вт_Пред
        ПО вт_1.Организация = вт_11.Организация
            И ( вт_1.Период > вт_Пред.Период);
    
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ    //ищем максимум периодов среди меньших периодов

    вт_2.Организация,
    вт_2.Период,
    вт_2.СуммаКонечныйОстатокДт,
    МАКСИМУМ(вт_2.Период1) КАК Период1
ПОМЕСТИТЬ вт_3
ИЗ
    вт_2 КАК вт_2

СГРУППИРОВАТЬ ПО
    вт_2.Организация,
    вт_2.Период,
    вт_2.СуммаКонечныйОстатокДт;
    

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ    //соеденям таблицы  

    вт_2.Организация,
    вт_2.Период КАК ТекущийПериод,
    вт_2.СуммаКонечныйОстатокДт КАК ТекущийОстток,
    вт_2.Период1 КАК ПредыдущийПериод,
    вт_2.СуммаКонечныйОстатокДт КАК ПРедыдущийОстаток
ИЗ
    вт_2 КАК вт_2
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ вт_3 КАК вт_3
        ПО вт_2.Организация = вт_3.Организация
            И вт_2.Период = вт_3.Период
            И вт_2.Период1 = вт_3.Период1

УПОРЯДОЧИТЬ ПО
    Организация,
    Период
   KishMish
 
16 - 06.10.16 - 15:34
(15) не отрабатывал, взял оригинал со своего запроса для поиска "предыдущего значения", заменил там на твои идентификаторы
   azernot
 
17 - 06.10.16 - 15:49
(16) >не отрабатывал
А зря.

Запрос не рабочий, даже если "подправить" синтаксические ошибки.
   KishMish
 
18 - 06.10.16 - 15:53
(17) алгоритм
1. соеденям Исходную таблицу с собой же по условию Вт1.Период>Вт2.Период - 
2. Ищем максимальное значение во втором периоде - получаем таблицу из предыдущих периодов
3. Соеденяем с исходной
   azernot
 
19 - 06.10.16 - 15:55
(18) Алгоритм верный. Запрос - нет.
   kennetmccormick
 
20 - 07.10.16 - 15:43
(14) в чем обман? в (0) написано что запрос для примера
спасибо всем за помощь. сделал немного по-другому. если интересно выложу позже

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует