Вход | Регистрация
 

Минимальный по дате оплаты документ в запросе

Минимальный по дате оплаты документ в запросе
Я
   lamme
 
19.07.19 - 12:44
уф
ут11

есть заказ покупателя. есть оплата безнал. надо определить первую оплату
Минимум куда только не вставлял .. не помогает
Задача примитивная. Не раз решенная ... у тут чего-то не получается.

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


В итоге вот такая таблица
https://c2n.me/42FgE0k

по факту = это 1 заказ клиента и 2 оплаты.
нужна только первая оплата . от 24,06,19
 
 
   sqr4
 
1 - 19.07.19 - 12:46
во вложенной убирай платежный документ из группировки, там только заказ и дата все!
   lamme
 
2 - 19.07.19 - 12:49
поле было для себя. для контроля.
убрал
не помогло
   sqr4
 
3 - 19.07.19 - 12:50
Сумму тоже!
   lamme
 
4 - 19.07.19 - 12:50
суммуОплаты?

почему
откуда я тогда потом сумму возьму ?
   sqr4
 
5 - 19.07.19 - 12:52
Тогда тебе нужен свой срез последних, сначала получаешь минимальные даты, затем соединяешь и получаешь остальные поля
   lamme
 
6 - 19.07.19 - 12:53
Без суммы и без документа оплаты - да, показывает то как надо
а где теперь тогда сумму оплаты брать ?
новым подзапросом ?
   sqr4
 
7 - 19.07.19 - 12:53
И почему вложенные запрсоы?
   lamme
 
8 - 19.07.19 - 12:53
(7)
это я запрос пытался вертеть .. там подзапросы не нужны. согласен
   lamme
 
9 - 19.07.19 - 12:55
(5)
а подробнее
   sqr4
 
10 - 19.07.19 - 12:59
ВЫБРАТЬ
    ВложенныйЗапрос.Заказ КАК Заказ,
    ВложенныйЗапрос.ДатаОплаты КАК ДатаОплаты,
    ВложенныйЗапрос1.ПлатежныйДокумент КАК ПлатежныйДокумент,
    ВложенныйЗапрос1.СуммаУпр КАК СуммаУпр,
    ВложенныйЗапрос1.СуммаРегл КАК СуммаРегл
ИЗ
    (ВЫБРАТЬ
        ДенежныеСредстваБезналичные.Заказ КАК Заказ,
        МИНИМУМ(ДенежныеСредстваБезналичные.ПлатежныйДокумент.Дата) КАК ДатаОплаты
    ИЗ
        РегистрНакопления.ДенежныеСредстваБезналичные КАК ДенежныеСредстваБезналичные
    
    СГРУППИРОВАТЬ ПО
        ДенежныеСредстваБезналичные.Заказ) КАК ВложенныйЗапрос
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ДенежныеСредстваБезналичные.Заказ КАК Заказ,
            МИНИМУМ(ДенежныеСредстваБезналичные.ПлатежныйДокумент.Дата) КАК ДатаОплаты,
            ДенежныеСредстваБезналичные.ПлатежныйДокумент КАК ПлатежныйДокумент,
            ДенежныеСредстваБезналичные.СуммаУпр КАК СуммаУпр,
            ДенежныеСредстваБезналичные.СуммаРегл КАК СуммаРегл
        ИЗ
            РегистрНакопления.ДенежныеСредстваБезналичные КАК ДенежныеСредстваБезналичные
        
        СГРУППИРОВАТЬ ПО
            ДенежныеСредстваБезналичные.Заказ,
            ДенежныеСредстваБезналичные.ПлатежныйДокумент,
            ДенежныеСредстваБезналичные.СуммаУпр,
            ДенежныеСредстваБезналичные.СуммаРегл) КАК ВложенныйЗапрос1
        ПО ВложенныйЗапрос.Заказ = ВложенныйЗапрос1.Заказ
            И ВложенныйЗапрос.ДатаОплаты = ВложенныйЗапрос1.ДатаОплаты
   lamme
 
11 - 19.07.19 - 13:04
работает ...

логику не понимаю (
   lamme
 
12 - 19.07.19 - 13:06
а .понимаю
   lamme
 
13 - 19.07.19 - 13:06
тут косяк может быть
что если по одному заказу сделано 2 оплаты с одной датой (с точностью до секунды)
   d4rkmesa
 
14 - 19.07.19 - 13:15
(13) Если очень критично, можно воспользоваться коррелированным запросом, как в:
Одним запросом получить пять последних документов по всем контрагентам
   lamme
 
15 - 19.07.19 - 13:17
в принципе
спасибо
тема закрыта .

сами виноваты - что делают оплаты одним моментом времени
   sqr4
 
16 - 19.07.19 - 14:18
(15) в регистрах сведений, эта проблема решена тем, что не сделать две записи с одинаковым набором измерений с учетом значения периода.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.