|   |   | 
| 
 | Заезженная тема. Остатки на каждый месяц | ☑ | ||
|---|---|---|---|---|
| 0
    
        D_Sergeevich 23.02.20✎ 19:23 | 
        Всем привет и с праздником!
 Не могу понять почему если в первом месяце в разрезе одной группы (Гр3) на конец периода остаток 0, то на остальные месяцы по этой группе записей уже нету. Например: https://yadi.sk/i/qyFaUnQjkxZDjA Помогите плиз, а то меня скоро сожрут. 
 | |||
| 1
    
        RomanYS 23.02.20✎ 20:09 | 
        (0) пипец ты там вложенных нагородил. Проще заново написать чем это прочитать.     | |||
| 2
    
        D_Sergeevich 23.02.20✎ 20:30 | 
        (1) это мне досталось по наследству. Переписать пробовал, не получается нужный результат.     | |||
| 3
    
        palsergeich 23.02.20✎ 20:40 | 
        Если надо по быстрому - СКД из коробки2мя способами умеет получать остатки на каджый день, даже если нет движений.
 1) Расширение периода 2) связь через параметр | |||
| 4
    
        RomanYS 23.02.20✎ 20:41 | 
        (2) Надо себя заставить. Пытаться править то, что не понимаешь - только в закопаешься в этом г. 
 Примеров как это делается полно и там ничего сложного | |||
| 5
    
        RomanYS 23.02.20✎ 20:41 | ||||
| 6
    
        palsergeich 23.02.20✎ 20:42 | 
        (5) Пока база маленькая - это будет работать.
 Но при оборотистых базах - это смерть. Выхода 2 - или получать в цикле/скд. или хранить расчитанными | |||
| 7
    
        palsergeich 23.02.20✎ 20:43 | 
        (6) тетта соежинение на больших таблицах штука прожорливая     | |||
| 8
    
        RomanYS 23.02.20✎ 20:44 | 
        (5) хотя пример возможно не лучший     | |||
| 9
    
        RomanYS 23.02.20✎ 20:45 | 
        (7) у него месяцы. Месяцев обычно не больше 100, от соединения 100*100 ни одна база не умрет     | |||
| 10
    
        palsergeich 23.02.20✎ 20:45 | 
        (8) Пример то хороший, но последствия - как бомбу заложить. Рано или поздно рванет     | |||
| 11
    
        palsergeich 23.02.20✎ 20:46 | 
        (9) Ну если месяц, то да     | |||
| 12
    
        RomanYS 23.02.20✎ 20:49 | 
        (10) Оптимальнее наверное получить периоды действия остатков, а потом соединять с таблицей периодов. Тогда расчет суммы в группировке не нужен будет.
 А пример хорош тем, что очень коротко) | |||
| 13
    
        RomanYS 23.02.20✎ 20:51 | 
        +(12) в примере по сути идет расчет нарастающего итога, а имея таблицу остатков без этого можно обойтись.     | |||
| 14
    
        D_Sergeevich 23.02.20✎ 21:21 | 
        (5) пытаюсь сделать по этому примеру, результат выходит странный, либо остаток суммируется (если делать сумма) за весь период либо он вообще какй то левый. Я не пойму как его группировать или нужно обороты прибавлять?
 ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачПериода, МЕСЯЦ, Цифры4.Цифра * 1000 + Цифры3.Цифра * 100 + Цифры2.Цифра * 10 + Цифры1.Цифра * 1) КАК Период ПОМЕСТИТЬ ВТ_Календарь ИЗ (ВЫБРАТЬ 0 КАК Цифра ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК Цифры1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК Цифра ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК Цифры2 ПО (Цифры2.Цифра * 10 + Цифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&НачПериода, &КонПериода, МЕСЯЦ)) ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК Цифра ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК Цифры3 ПО (Цифры3.Цифра * 100 + Цифры2.Цифра * 10 + Цифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&НачПериода, &КонПериода, МЕСЯЦ)) ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК Цифра ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК Цифры4 ПО (Цифры4.Цифра * 1000 + Цифры3.Цифра * 100 + Цифры2.Цифра * 10 + Цифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&НачПериода, &КонПериода, МЕСЯЦ)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Движения.ИсточникКредитования КАК ИсточникКредитования, ВТ_Календарь.Период КАК Период, Движения.Период как ПериодДвиж, (Движения.СуммаВалКонечныйОстаток) КАК СуммаВалКонечныйОстаток //сумма(ВЫБОР //КОГДА Движения.Период = &НачПериода //ТОГДА Движения.СуммаВалКонечныйОстаток //ИНАЧЕ ВЫБОР //КОГДА Движения.Период <= ВТ_Календарь.Период //ТОГДА Движения.СуммаВалОборот //ИНАЧЕ 0 //КОНЕЦ //КОНЕЦ) КАК СуммаВалКонечныйОстаток ИЗ ВТ_Календарь КАК ВТ_Календарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДенежныеСредства.ОстаткиИОбороты( &НачПериода, &КонПериода, МЕСЯЦ, , ИсточникКредитования.ЭтоГруппа = ЛОЖЬ И Валюта = &Валюта) КАК Движения ПО (Движения.Период <= ВТ_Календарь.Период) СГРУППИРОВАТЬ ПО Движения.ИсточникКредитования, ВТ_Календарь.Период, Движения.Период, Движения.СуммаВалКонечныйОстаток УПОРЯДОЧИТЬ ПО ИсточникКредитования, Период | |||
| 15
    
        D_Sergeevich 23.02.20✎ 21:29 | 
        (14) Коряво форматнулся
 
 | |||
| 16
    
        RomanYS 23.02.20✎ 21:42 | 
        (14) конечно, там идёт расчет нарастающего итога: к начальному остатку добавляются обороты до даты.
 В такой ситуации возможно корректнее брать отдельно таблицу остатков и отдельно оборотов | |||
| 17
    
        D_Sergeevich 23.02.20✎ 22:58 | 
        Вроде остаток на конец работает верно, а как сделать тоже самое только на НАЧАЛО ПЕРИОДА?
 
 | |||
| 18
    
        RomanYS 23.02.20✎ 23:09 | 
        сумма(ВЫБОР
 КОГДА Движения.Период = &НачПериода ТОГДА Движения.СуммаВалНачальныйОстаток КОГДА Движения.Период < ВТ_Календарь.Период ТОГДА Движения.СуммаВалОборот ИНАЧЕ 0 КОНЕЦ) КАК СуммаВалНачальныйОстаток | |||
| 19
    
        RomanYS 23.02.20✎ 23:11 | 
        (17) и засунь уже цифры в ВТ. Зачем их четыре раза собирать во вложенном, если можно один раз поместить и 4 раза использовать.     | |||
| 20
    
        D_Sergeevich 23.02.20✎ 23:32 | 
        (18) Я так уже делал, оно не верно. Получается на конец февраля по одной из групп остаток 0, значит на начало марта должно быть 0, а оно выводит то что было в начале января     | |||
| 21
    
        RomanYS 24.02.20✎ 00:03 | 
        (20) да, ошибка. Обороты первого периода теряются. Поэтому кстати и удобнее брать отдельно остатки и обороты     | |||
| 22
    
        D_Sergeevich 24.02.20✎ 00:10 | 
        (21) Есть примерчик? я не гуру в 1с поэтому сваять самому чет не выходит     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |