Имя: Пароль:
1C
1С v8
Подскажите решение в запросе
0 dimm7310
 
06.08.13
16:00
1С 8.2 УТ11. В динамическом списке Заказов покупателей нужно отразить дату оплаты (если оплат было несколько то желательно последнюю).

Добавляю левое соединение с регистром РасчетыСКлиентами,

ВЫБРАТЬ
    ДокументЗаказКлиента.Ссылка,
    ДокументЗаказКлиента.ВерсияДанных,
    ДокументЗаказКлиента.ПометкаУдаления,
    ДокументЗаказКлиента.Номер,

        еще поля заказа,
        
        РасчетыСКлиентами.ДатаРегистратора Как ДатаОплаты
ИЗ
    Документ.ЗаказКлиента КАК ДокументЗаказКлиента
        ЛЕВОЕ СОЕДИНЕНИЕ
        (ВЫБРАТЬ
            ВидДвижения,
            ХозяйственнаяОперация,
            ДатаРегистратора,
            ЗаказКлиента
        ИЗ
            РегистрНакопления.РасчетыСКлиентами
            ) КАК РасчетыСКлиентами
        ПО (ДокументЗаказКлиента.Ссылка = РасчетыСКлиентами.ЗаказКлиента) И (РасчетыСКлиентами.ВидДвижения = Значение(ВидДвиженияНакопления.Расход)) И (РасчетыСКлиентами.ХозяйственнаяОперация = &Оплата)                  

Запрос отрабатывает нормально если оплата была только одна,
для заказов у которых было несколько оплат вываливается ошибка при просмотре динамического списка : "Обнаружено дублирование ключевых значений Ссылка".

Пробовал в соединении указывать Выбрать Первые 1, но в этом случае ДатаОплаты возвращается пустой.

Как в запросе для заказов у которых несколько записей оплат в регистре  РасчетыСКлиентами соединять только одну запись(желательно последнюю по дате) ?
1 Ёпрст
 
06.08.13
16:11
сгруппируй вложенный подзапрос
2 Rovan
 
гуру
06.08.13
16:15
(+1) МАКСИМУМ(ССылка)
3 dimm7310
 
06.08.13
16:25
спасибо
4 palpetrovich
 
06.08.13
16:35
(2) может МАКСИМУМ(ССылка.Дата)? а то там такие максимумы в ссылках - с бутылкой не разберешь :)
5 Злобный монстр
 
06.08.13
17:04
(4) Конечно не разберешь... потому что МАКСИМУМ для ссылки будет уникальное значение синтезированное из идентификатора...
Программист всегда исправляет последнюю ошибку.