Имя: Пароль:
1C
1С v8
Как получить в запросе сальдо на дату + дней
0 SH_tan
 
27.10.15
15:08
Добрый день Всем!
Подскажите, как получить сальдо на дату + (число)дней.
в запросе выбираются расходные накладные, параметры контрагентов на дату отгрузки и остатки и обороты по взаиморасчетам. В РН есть реквизит ПланируемаяДатаОплаты (дата) так вот, как получить на каждую РН свой остаток по деньгам.
примерно так

Есть РН №1 от 01.01.2015 - отгрузили 1000 руб (ПланируемаяДатаОплаты 13.01.2015) - сальдо на 13.01.2015 +1000 (долг), если 0 (нет просрочки), если минус....(предоплата-мы должны)
и так по всем отгрузкам.

Запрос не выкладываю так как он большой
1 SH_tan
 
27.10.15
15:10
хотя вот запрос он отрабатывает но он дает Сальдо на дату отгрузки

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

СГРУППИРОВАТЬ ПО
    ВыплатыМенеджер.Регистратор,
    ВыплатыМенеджер.Контрагент,
    ВыплатыМенеджер.Менеджер,
    МенеджерыПодразделения.Подразделение,
    ВыплатыМенеджер.ДолгПриход - ВыплатыМенеджер.ДолгРасход,
    ВыплатыМенеджер.СуммаКредитаПокупателя,
    ВыплатыМенеджер.ГлубинаКредитаПокупателя,
    ВыплатыМенеджер.ДолгНачальныйОстаток,
    ВыплатыМенеджер.ДолгКонечныйОстаток,
    ВЫБОР
        КОГДА ВыплатыМенеджер.Регистратор ССЫЛКА Документ.РасходнаяНакладная
            ТОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВыплатыМенеджер.Регистратор.Дата, ДЕНЬ, ЕСТЬNULL(ВыплатыМенеджер.ГлубинаКредитаПокупателя, 0)), ДЕНЬ)
        ИНАЧЕ 0
    КОНЕЦ

УПОРЯДОЧИТЬ ПО
    ВыплатыМенеджер.Регистратор.Дата,
    Подразделение,
    Менеджер
ИТОГИ
    СУММА(ОплатаЗаПериод),
    СУММА(ОтгрузкаЗаПериод),
    СУММА(ИтогоЗадолженность),
    СУММА(ДолгНачальныйОстаток),
    СУММА(ДолгКонечныйОстаток),
    СУММА(Конеч_НачальныйОстаток)
ПО
    ОБЩИЕ,
    Подразделение,
    Менеджер,
    Контрагент
АВТОУПОРЯДОЧИВАНИЕ
2 SH_tan
 
27.10.15
15:24
есть хоть какие - нибудь мысли?
3 bolobol
 
27.10.15
15:28
Добавить к дате необходимое количество дней.
4 SH_tan
 
27.10.15
15:43
(3) ДОБАВИТЬКДАТЕ(ВыплатыМенеджер.Регистратор.Дата, ДЕНЬ, ЕСТЬNULL(ВыплатыМенеджер.ГлубинаКредитаПокупателя, 0))

это для того чтобы узнать на какую дату должны оплатить
ГлубинаКредитаПокупателя - число дней по отсрочку платежа

а как ты предлагаешь?
5 SH_tan
 
27.10.15
16:07
а правильно ли будет если я все это в ВТ и соеденю еще раз с ВзаиморасчетыПокупателиОстаткиИОбороты по дате (ДатаОплатыПланируемая)
6 Anjo
 
27.10.15
16:11
Из названия темы не сразу понял, что именно надо а так в (5) правильно мыслишь, тебе не  к дате надо что то прибавлять а брать данные на дату (реквизит дока) и соединять
7 Ildarovich
 
27.10.15
16:53
Простого решения нет. Чтобы определить график долга с учетом отсрочки, нужно на график состояния взаиморасчетов (его можно взять из регистра) наложить "отрицательный импульс", который начинается в момент реализации, заканчивается в момент окончания отсрочки и равен по высоте сумме отгрузки. По сути отсрочка - это перенос отгрузки на будущее. Перенося отгрузку мы мысленно сторнируем ее, а затем восстанавливаем нужной датой. Так и получается "импульс".