Имя: Пароль:
1C
1С v8
Условие в запросе СКД
0 Nenaviwu1c20
 
29.08.13
14:18
Есть небольшой  запрос
ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Организация,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Контрагент,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Период КАК ДатаОплаты,
    ВЫБОР
        КОГДА ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 2
            ТОГДА "Наличн."
        КОГДА ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 3
            ТОГДА "Трансф."
        КОГДА ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 4
            ТОГДА "Банк"
        КОГДА ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 5
            ТОГДА "Чек"
        ИНАЧЕ ""
    КОНЕЦ КАК ВидОплаты,
    РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Период, ДЕНЬ) КАК КоличествоДнейПослеРеализации,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаВзаиморасчетовРасход КАК СуммаОплаты
ПОМЕСТИТЬ НаличнаяОплата
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(
            ,
            ,
            Регистратор,
            ДокументРасчетовСКонтрагентом В
                (ВЫБРАТЬ
                    РеализацияТоваровУслуг.Ссылка
                ИЗ
                    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                ГДЕ
                    РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон)) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты
ГДЕ
    ТИПЗНАЧЕНИЯ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор) = ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(документ.ПриходныйКассовыйОрдер.пустаяссылка))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Документ КАК ДокументРасчетовСКонтрагентом,
    РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Организация,
    РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Контрагент,
    РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Период КАК ДатаОплаты,
    ВЫБОР
        КОГДА ВЫРАЗИТЬ(РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Документ КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 2
            ТОГДА "Наличн."
        КОГДА ВЫРАЗИТЬ(РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Документ КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 3
            ТОГДА "Трансф."
        КОГДА ВЫРАЗИТЬ(РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Документ КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 4
            ТОГДА "Банк"
        КОГДА ВЫРАЗИТЬ(РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Документ КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 5
            ТОГДА "Чек"
        ИНАЧЕ ""
    КОНЕЦ КАК ВидОплаты,
    РАЗНОСТЬДАТ(РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Регистратор.Дата, РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Период, ДЕНЬ) КАК КоличествоДнейПослеРеализации,
    РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.СуммаВзаиморасчетовПриход КАК СуммаОплаты
ПОМЕСТИТЬ БезналичнаяОплата
ИЗ
    РегистрНакопления.РасчетыПоРеализацииВУсловныхЕдиницахОрганизации.Обороты(
            ,
            ,
            Регистратор,
            Документ В
                (ВЫБРАТЬ
                    РеализацияТоваровУслуг.Ссылка
                ИЗ
                    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                ГДЕ
                    РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон)) КАК РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты
ГДЕ
    ТИПЗНАЧЕНИЯ(РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Регистратор) = ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(документ.Платежноепоручениевходящее.пустаяссылка))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НаличнаяОплата.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
    НаличнаяОплата.Организация КАК Организация,
    НаличнаяОплата.Контрагент КАК Контрагент,
    НаличнаяОплата.ДатаОплаты КАК ДатаОплаты,
    НаличнаяОплата.ВидОплаты КАК ВидОплаты,
    НаличнаяОплата.КоличествоДнейПослеРеализации КАК КоличествоДнейПослеРеализации,
    НаличнаяОплата.СуммаОплаты
ПОМЕСТИТЬ РезультатирующаяТаблица
ИЗ
    НаличнаяОплата КАК НаличнаяОплата

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РезультатирующаяТаблица.ДатаОплаты КАК ДатаОплаты,
    РезультатирующаяТаблица.ВидОплаты,
    ВЫБОР
        КОГДА РезультатирующаяТаблица.ДатаОплаты ЕСТЬ NULL
            ТОГДА РАЗНОСТЬДАТ(ПродажиОбороты.ДокументПродажи.Дата, &ДатаКон, ДЕНЬ)
        ИНАЧЕ РезультатирующаяТаблица.КоличествоДнейПослеРеализации
    КОНЕЦ КАК КоличествоДнейПослеРеализации,
    РезультатирующаяТаблица.СуммаОплаты,
    ПродажиОбороты.СтоимостьОборот КАК Сумма,
    ПродажиОбороты.ДокументПродажи КАК ДокументРасчетовСКонтрагентом,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.Организация
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКОн, , ТИПЗНАЧЕНИЯ(ДокументПродажи) = ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(документ.реализациятоваровуслуг.пустаяссылка))) КАК ПродажиОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РезультатирующаяТаблица КАК РезультатирующаяТаблица
        ПО ПродажиОбороты.ДокументПродажи = РезультатирующаяТаблица.ДокументРасчетовСКонтрагентом
            И ПродажиОбороты.Контрагент = РезультатирующаяТаблица.Контрагент
ГДЕ
    (РезультатирующаяТаблица.ДатаОплаты ЕСТЬ NULL
            ИЛИ РезультатирующаяТаблица.ДатаОплаты > 0)
Последнее условие где выполняется некорректно.Там надо поставить либо
РезультатирующаяТаблица.ДатаОплаты ЕСТЬ NULL либо  РезультатирующаяТаблица.ДатаОплаты > 0
что меня не устраивает,так как надо выбрать все  документы реализации у которых нет оплаты либо есть,но просроченна.Как такое можно реализовать?
1 Nenaviwu1c20
 
29.08.13
14:20
То есть чтобы строка попала под одно из условий
2 Nenaviwu1c20
 
29.08.13
14:24
ап
3 Nenaviwu1c20
 
29.08.13
14:29
хелп плиз
4 sixis
 
29.08.13
14:35
этот пипец
ТИПЗНАЧЕНИЯ(ДокументПродажи) = ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(документ.реализациятоваровуслуг.пустаяссылка))
замени
ДокументПродажи Ссылка Документ.РеализацияТоваровУслуг

Что не так с отработкой текущего условия?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.