Имя: Пароль:
1C
1С v8
Помощь в запросе.
0 Nenaviwu1c20
 
30.08.13
10:03
Есть запрос который возвращает реализации с датами их оплаты.Требуется что если имеются 2 документа у одной реализации за одно число,при этом  это разные документы,чтобы выбирался первый из них,при этом если доков оплаты 4 ,а разную дату имеют только 3 ,чтобы выбирались 3 из них.Возможно ли такое провернуть в запросе.Это нечто подобное с РАЗЛИЧНЫЕ
1 Nenaviwu1c20
 
30.08.13
10:04
Кстати все это делается в УПП 1С8.2 СКД
2 Wobland
 
30.08.13
10:05
а при двух или более пяти документов всё, тупик?
3 Maxus43
 
30.08.13
10:06
Минимум по Ссылка, группировка по дате оплаты
4 Nenaviwu1c20
 
30.08.13
10:07
то есть?Если пять при этом 2 +2 +1 док,тогда выходит 3(это если по 2 даты повторяются
5 Starhan
 
30.08.13
10:07
Не дает покоя пальма первенства LivingStara?
6 Nenaviwu1c20
 
30.08.13
10:08
(3) щас попробую
7 andreymongol82
 
30.08.13
10:08
(4) так вроде же так и хотел?
8 Nenaviwu1c20
 
30.08.13
10:08
ну да
9 Nenaviwu1c20
 
30.08.13
10:10
(3) не взлетело,но все равно спасибо
10 Maxus43
 
30.08.13
10:11
(9) чтобы взлетело - показывай запрос, я тебе просто методику показал
11 Ёпрст
 
30.08.13
10:13
(9) только текст запроса не показывай, не будь Сноуденом! ©я
12 Nenaviwu1c20
 
30.08.13
10:16
ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Организация,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Контрагент,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Период КАК ДатаОплаты,
    ВЫБОР
        КОГДА ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 2
            ТОГДА "Наличн."
        КОГДА ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 3
            ТОГДА "Трансф."
        КОГДА ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 4
            ТОГДА "Банк"
        КОГДА ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 5
            ТОГДА "Чек"
        ИНАЧЕ ""
    КОНЕЦ КАК ВидОплаты,
    РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Период, ДЕНЬ) КАК КоличествоДнейПослеРеализации,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаВзаиморасчетовРасход КАК СуммаОплаты
ПОМЕСТИТЬ НаличнаяОплата
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(
            ,
            ,
            Регистратор,
            ДокументРасчетовСКонтрагентом В
                (ВЫБРАТЬ
                    РеализацияТоваровУслуг.Ссылка
                ИЗ
                    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                ГДЕ
                    РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон)) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты
ГДЕ
    ТИПЗНАЧЕНИЯ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор) = ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(документ.ПриходныйКассовыйОрдер.пустаяссылка))
;

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

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

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

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

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

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

СГРУППИРОВАТЬ ПО
    Оплаты.КоличествоДнейПослеРеализации,
    Оплаты.СуммаОплаты,
    Оплаты.Сумма,
    Оплаты.Контрагент,
    Оплаты.Организация,
    Оплаты.ДокументСуществует,
    Оплаты.ПросроченнаяОплата,
    ВозвратТоваровОтПокупателяДокументыРасчетовСКонтрагентом.Ссылка,
    ВЫБОР
        КОГДА ВЫРАЗИТЬ(Оплаты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 2
            ТОГДА "Наличн."
        КОГДА ВЫРАЗИТЬ(Оплаты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 3
            ТОГДА "Трансф."
        КОГДА ВЫРАЗИТЬ(Оплаты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 4
            ТОГДА "Банк"
        КОГДА ВЫРАЗИТЬ(Оплаты.ДокументРасчетовСКонтрагентом КАК Документ.РеализацияТоваровУслуг).ВидОплаты = 5
            ТОГДА "Чек"
        ИНАЧЕ ""
    КОНЕЦ,
    НАЧАЛОПЕРИОДА(Оплаты.ДатаОплаты, ДЕНЬ)
13 Nenaviwu1c20
 
30.08.13
10:17
пожалуйсто господа )
14 Nenaviwu1c20
 
30.08.13
10:19
к сожалению другой связки не нашел по оплатам вот все и через...ну сами понимаете
15 Nenaviwu1c20
 
30.08.13
10:21
Есть какие нить идеи кроме того что запрос через опу написан?)
16 Ёпрст
 
30.08.13
10:23
(12) не вижу группировки по ссылке и функции минимум или максимум в тексте запроса, и как ты в (9) проверил (3).
17 Maxus43
 
30.08.13
10:24
(15) нет.
Но запрос
ВЫБРАТЬ
    ПлатежноеПоручениеИсходящее.ДатаОплаты,
    МИНИМУМ(ПлатежноеПоручениеИсходящее.Ссылка) КАК Ссылка
ИЗ
    Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее

СГРУППИРОВАТЬ ПО
    ПлатежноеПоручениеИсходящее.ДатаОплаты

даст на каждую дату оплаты только 1 документ. Разберись со своими группировками
18 Nenaviwu1c20
 
30.08.13
10:26
щас проверять буду.Спасибо большое
19 К_Дач
 
30.08.13
10:27
Группировка по дате оплаты - раз
Группировка по дате документа - два
Группировка по документу (реализации) - три

Без детальных записей
20 К_Дач
 
30.08.13
10:27
И раз это СКД, нахера группировки в запросе? запрос перепиши
21 Nenaviwu1c20
 
30.08.13
10:33
(20) А зачем переписывать,ведь все работвет