Некорректные начальные и конечные остатки по месяцам

1. fugu 23 23.02.25 19:14 Сейчас в теме
Задача достаточно простая, но я попал в тупик.
Вот запрос
ВЫБРАТЬ
    Периоды.ДатаПериода КАК ДатаПериода
ПОМЕСТИТЬ ВТ
ИЗ
    &Периоды КАК Периоды

ИНДЕКСИРОВАТЬ ПО
    ДатаПериода
;

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

СГРУППИРОВАТЬ ПО
    ВТ.ДатаПериода,
    Долг.Категория,
    Долг.Реквизит,
    Долг.ЛицевойСчет.ГруппаСтроений,
    ВЫБОР
        КОГДА Долг.СуммНачальныйОстаток > 0
            ТОГДА Долг.СуммаНачальныйОстаток
        ИНАЧЕ 0
    КОНЕЦ,
    ВЫБОР
        КОГДА Долг.СуммаКонечныйОстаток > 0
            ТОГДА Долг.СуммаКонечныйОстаток
        ИНАЧЕ 0
    КОНЕЦ
;

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

СГРУППИРОВАТЬ ПО
    ВТОстатки.Период,
    ЕСТЬNULL(Обороты.СуммаПриход, 0),
    ЕСТЬNULL(Обороты.СуммаРасход, 0),
    ВТОстатки.ДопРеквизит

УПОРЯДОЧИТЬ ПО
    Период
Показать


Периоды - это месяцы.
1 месяц - остатки выбирает правильно
потом что попало,
при этом есть месяцы, в которых нет оборотов.
обороты выбирает правильно
Подскажите, как правильно выбрать остатки по месяцам?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. miniogn 44 23.02.25 19:25 Сейчас в теме
(1) Не знаю как с остальным проблемами, но в запросах надо либо отказаться от группировки, либо суммировать суммовые поля.
5. fugu 23 23.02.25 20:24 Сейчас в теме
3. user2107191 23.02.25 19:36 Сейчас в теме
Связывать с виртуальными таблицами левым - так себе идея.
6. fugu 23 23.02.25 20:25 Сейчас в теме
(3) Поясните ,а как связывать? Периоды должны быть все, но по некоторым периодам нет движения.
9. starjevschik 23.02.25 20:50 Сейчас в теме
(6) 1с рекомендует виртуальные таблицы регистров сначала складывать во временную таблицу, а потом уже с ней связывать все остальное.
Между прочим, такая схема сильно упростит отладку. Можно будет посмотреть, что на каждом этапе получается из запроса.
VyacheslavShilov; +1 Ответить
4. user2107191 23.02.25 19:48 Сейчас в теме
То есть ты сознательно минусовые остатки приравниваешь к нулю, а потом жалуешься, что они у тебя потом с оборотами не бьются?
Да ты великий математик!
7. fugu 23 23.02.25 20:27 Сейчас в теме
(4) Да сознательно, мне нужно получить остатки приходов по определенным категориям и доп. реквизиту.
Не написал изначально.
Математика здесь не причем.

я проверяю, очень просто, беру при таких же отборах остаток прихода на определенную дату и они не совпадают с данным запросом.
8. user2107191 23.02.25 20:36 Сейчас в теме
(7)
Математика здесь не причем.
Ну да, конечно.
Ты обнулил начальный остаток периода. Пусть так.
Посчитал обормоты за период туда-сюда. Молодец.
Обнулил конченный остаток. Хозяин барин.

А теперь ожидаешь, что конченный остаток вдруг будет равен разнице обормотов? Полностью игнорируя тот факт, что вообще-то для расчета конченного остатка точкой отсчета является начальный остаток, который ты обнулил. Да и сам конечный обнулил зачем-то.

И ваще - что такое "остаток прихода"???
10. fugu 23 23.02.25 21:17 Сейчас в теме
(8)
я хочу получить только положительные остатки без отрицательных по категории, реквизиту и доп. реквизиту.
на начало и на конец месяца. Если их нет, то остаток 0.
Я не ожидаю, чтобы в отчете сошлась разница по оборотам общим и остатку.
Еще раз повторюсь, я проверяю правильность остатков, сделав отбор по дате, на начало или конец месяца только положительные.
11. user2107191 23.02.25 21:50 Сейчас в теме
(10) Ну тогда начинай переводить свои буквы
потом что попало,
на общедоступный
12. fugu 23 24.02.25 10:26 Сейчас в теме
(11) Зачем писать пустые комментарии?
13. user2107191 24.02.25 11:15 Сейчас в теме
(12) Зачем писать глупые задачи? "У меня работает как попало, как правильно? Но я никому не скажу, как надо правильно, и что такое как попало."

Возьми эксель и сам себе нарисуй как правильно. Если сумеешь - тогда и за программирование берись.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот