| 
    
            
         
         | 
    
  | 
Отчет по периодам в СКД | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Zombi    
     05.04.16 
            ✎
    12:39 
 | 
         
        Пишу отчет в СКД, вот запрос:
 
        ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК НачальныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК Приход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК Расход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК КонечныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодСекунда, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодНеделя, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодМесяц, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки КАК Отсрочка, РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, &КонецПериода, ДЕНЬ) КАК ПросроченоДней, ВЫБОР КОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки = 0 ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), ДЕНЬ) > ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень <= ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки) ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КАК ПросроченныйНачальныйОстаток, ВЫБОР КОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки = 0 ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), ДЕНЬ) > ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень <= ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки) ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КАК ПросроченныйКонечныйОстаток ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты( &НачалоПериода, &КонецПериода, Авто, ДвиженияИГраницыПериода, ВЫБОР КОГДА &Договор = НЕОПРЕДЕЛЕНО ИЛИ &Договор = ЗНАЧЕНИЕ(справочник.договорыконтрагентов.пустаяссылка) ТОГДА ИСТИНА ИНАЧЕ ДоговорКонтрагента = &Договор КОНЕЦ И ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(перечисление.ВидыДоговоровКонтрагентов.СПокупателем)) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты Вывожу по периодам, например по неделям, поля "ПросроченоДней" и просроченные остатки считаются только в тех периодах, где есть движения. Как сделать так, чтобы во всех периодах считались?  | 
|||
| 
    1
    
        Zombi    
     05.04.16 
            ✎
    13:15 
 | 
         
        ап.     
         | 
|||
| 
    2
    
        NoiseRND    
     05.04.16 
            ✎
    13:25 
 | 
         
        Делаешь таблицу дней периода, и к ней связываешь свои взаиморасчеты, по каждому дню периода. Работать будет не шустро...     
         | 
|||
| 
    3
    
        TolikoSprosit    
     05.04.16 
            ✎
    13:26 
 | 
         
        Тип дополнения в группировке скд     
         | 
|||
| 
    4
    
        Zombi    
     05.04.16 
            ✎
    13:31 
 | 
         
        (3) Ставил дополнение в группировке СКД. То же самое.     
         | 
|||
| 
    5
    
        Zombi    
     05.04.16 
            ✎
    13:31 
 | 
         
        (2) Возможно...     
         | 
|||
| 
    6
    
        Zombi    
     05.04.16 
            ✎
    13:34 
 | 
         
        (2) Только вот периодичность может быть по дням, неделям, месяцам     
         | 
|||
| 
    7
    
        Zombi    
     06.04.16 
            ✎
    09:31 
 | 
         
        Подкиньте пример с соединением с каждой датой в запросе. Таблицу дней в запросе я получил, как на каждый этот день остаток получить?     
         | 
|||
| 
    8
    
        hhhh    
     06.04.16 
            ✎
    11:19 
 | 
         
        наверно надо в два этапа, сначала формируешь просто остатки, со всеми дополнениями и пишешь в ВТ. Потом уже когда всё есть, уже делаешь РАЗНОСТЬДАТ, выбираешь просроченные.     
         | 
|||
| 
    9
    
        Zombi    
     06.04.16 
            ✎
    11:38 
 | 
         
        ВЫБРАТЬ
 
        ВзаиморасчетыСКонтрагентамиОстатки.Контрагент, ВзаиморасчетыСКонтрагентамиОстатки.Организация, ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента ПОМЕСТИТЬ вт_Контрагенты ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонецПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстатки ГДЕ ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 0 КАК Цифра ПОМЕСТИТЬ Цифры ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 1000 * Тысячи.Цифра + 100 * Сотни.Цифра + 10 * Десятки.Цифра + Единицы.Цифра КАК Чиселко ПОМЕСТИТЬ Числа ИЗ Цифры КАК Единицы, Цифры КАК Десятки, Цифры КАК Сотни, Цифры КАК Тысячи ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Числа.Чиселко), ДЕНЬ) КАК Даточка, вт_Контрагенты.Контрагент, вт_Контрагенты.Организация, вт_Контрагенты.ДоговорКонтрагента ПОМЕСТИТЬ вт_Дат ИЗ Числа КАК Числа, вт_Контрагенты КАК вт_Контрагенты ГДЕ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Числа.Чиселко), ДЕНЬ) <= &КонецПериода И НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Числа.Чиселко), ДЕНЬ) >= &НачалоПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Организация, ВложенныйЗапрос.Контрагент, ВложенныйЗапрос.ДоговорКонтрагента, МАКСИМУМ(ВложенныйЗапрос.СуммаВзаиморасчетовНачальныйОстаток) КАК СуммаВзаиморасчетовНачальныйОстаток, ВложенныйЗапрос.НачалоПериода ПОМЕСТИТЬ вт_Остатки ИЗ (ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстатки.Организация КАК Организация, ВзаиморасчетыСКонтрагентамиОстатки.Контрагент КАК Контрагент, ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента КАК ДоговорКонтрагента, &НачалоПериода КАК НачалоПериода, ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовНачальныйОстаток ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&НачалоПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента, НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период, ДЕНЬ), ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Организация, ВложенныйЗапрос.Контрагент, ВложенныйЗапрос.ДоговорКонтрагента, ВложенныйЗапрос.НачалоПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Остатки.НачалоПериода, МИНИМУМ(ДОБАВИТЬКДАТЕ(ЕСТЬNULL(ОстаткиНаКонец.НачалоПериода, ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1)), СЕКУНДА, -1)) КАК КонецПериода, Остатки.Организация, Остатки.Контрагент, Остатки.ДоговорКонтрагента, Остатки.СуммаВзаиморасчетовНачальныйОстаток ПОМЕСТИТЬ вт_ОстаткиПериодами ИЗ вт_Остатки КАК Остатки ЛЕВОЕ СОЕДИНЕНИЕ вт_Остатки КАК ОстаткиНаКонец ПО Остатки.НачалоПериода < ОстаткиНаКонец.НачалоПериода СГРУППИРОВАТЬ ПО Остатки.НачалоПериода, Остатки.Организация, Остатки.Контрагент, Остатки.ДоговорКонтрагента, Остатки.СуммаВзаиморасчетовНачальныйОстаток ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ вт_Дат.Организация, вт_Дат.Контрагент КАК Контрагент, вт_Дат.ДоговорКонтрагента, вт_Дат.Даточка КАК Дата, ЕСТЬNULL(вт_ОстаткиПериодами.СуммаВзаиморасчетовНачальныйОстаток, 0) КАК НачальныйОстаток ИЗ вт_Дат КАК вт_Дат ЛЕВОЕ СОЕДИНЕНИЕ вт_ОстаткиПериодами КАК вт_ОстаткиПериодами ПО (вт_Дат.Даточка МЕЖДУ вт_ОстаткиПериодами.НачалоПериода И вт_ОстаткиПериодами.КонецПериода) И вт_Дат.ДоговорКонтрагента = вт_ОстаткиПериодами.ДоговорКонтрагента И вт_Дат.Контрагент = вт_ОстаткиПериодами.Контрагент И вт_Дат.Организация = вт_ОстаткиПериодами.Организация УПОРЯДОЧИТЬ ПО Контрагент Я вот что нагородил. Только в результате дни все в периоде, только начальный остаток я вижу только в периодах, где движения были. Что не так сделал?  | 
|||
| 
    10
    
        Zombi    
     06.04.16 
            ✎
    12:15 
 | 
         
        Остатки периодами вроде я правильно получил. Косяк в последнем пакете получается?     
         | 
|||
| 
    11
    
        Zombi    
     07.04.16 
            ✎
    06:41 
 | 
         
        Тему я победил, сделал обычный запрос:
 
        ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстатки.Организация, ВзаиморасчетыСКонтрагентамиОстатки.Контрагент, ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента ПОМЕСТИТЬ вт_Фильтр ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонецПериода, ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(перечисление.ВидыДоговоровКонтрагентов.СПокупателем)) КАК ВзаиморасчетыСКонтрагентамиОстатки ГДЕ ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК НачальныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК Приход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК Расход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК КонечныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодСекунда, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодНеделя, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодМесяц, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки КАК Отсрочка, ВЫБОР КОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки = 0 ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), ДЕНЬ) > ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень <= ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки) ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КАК ПросроченныйНачальныйОстаток, ВЫБОР КОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки = 0 ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), ДЕНЬ) > ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень <= ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки) ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КАК ПросроченныйКонечныйОстаток, РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, &КонецПериода, ДЕНЬ) КАК ПросроченоДней ИЗ вт_Фильтр КАК вт_Фильтр ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, ДвиженияИГраницыПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты ПО вт_Фильтр.Организация = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация И вт_Фильтр.Контрагент = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент И вт_Фильтр.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента В СКД у начального и конечного остатка указал роль "Остатки" и в отчете стали остатки за каждый период выводиться. Теперь вопрос с полем "ПросроченоДней". Как это поле в СКД заставить выводиться в каждом периоде, а не только там где движения были?  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |