Имя: Пароль:
1C
1С v8
1С 8.3. Запрос по последнему документу контрагента за каждый месяц
0 mishkerdon
 
16.04.15
04:17
Здравствуйте! Помогите пожалуйста, как написать запрос, берущий последний документ в каждом месяце по контрагенту за определенный период?
1 Худой
 
16.04.15
04:31
Помогаю.
Как, например, я бы делал.
Делаешь выборку документов "за определенный период" с сортировкой по контрагенту и дате документа. Лучше делать обратную сортировку. Дальше выдаешь только первую запись у каждого из выбранных контрагентов.
2 Худой
 
16.04.15
04:34
Пардон. Не заметил сразу "за каждый месяц".
Тогда еще добавить надо в сортировку месяц.
3 Любопытная
 
16.04.15
05:04
(0) А документ вообще любой или определенного типа?
4 mishkerdon
 
16.04.15
08:00
(3) 3 вида документа, но все похожие, т.е. основные реквизиты общие у них.
5 mehfk
 
16.04.15
09:02
ВЫБРАТЬ
    ПриходныйКассовыйОрдер.Ссылка,
    ПриходныйКассовыйОрдер.Контрагент,
    ПриходныйКассовыйОрдер.Дата
ПОМЕСТИТЬ ВТ_Документы
ИЗ
    Документ.ПлатежноеПоручениеВходящее КАК ПриходныйКассовыйОрдер
ГДЕ
    ПриходныйКассовыйОрдер.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачДата, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонДата, ДЕНЬ)

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

ВЫБРАТЬ
    ПриходныйКассовыйОрдер.Ссылка,
    ПриходныйКассовыйОрдер.Контрагент,
    ПриходныйКассовыйОрдер.Дата
ИЗ
    Документ.РеализацияТоваровУслуг КАК ПриходныйКассовыйОрдер
ГДЕ
    ПриходныйКассовыйОрдер.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачДата, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонДата, ДЕНЬ)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Таб1.Контрагент,
    Таб1.Месяц,
    МАКСИМУМ(ВТ_ДокументыСсылка.Ссылка) КАК Ссылка
ИЗ
    (ВЫБРАТЬ
        ВТ_Документы.Контрагент КАК Контрагент,
        КОНЕЦПЕРИОДА(ВТ_Документы.Дата, МЕСЯЦ) КАК Месяц,
        МАКСИМУМ(ВТ_ДокументыПоДатам.Дата) КАК Дата
    ИЗ
        ВТ_Документы КАК ВТ_Документы
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Документы КАК ВТ_ДокументыПоДатам
            ПО (КОНЕЦПЕРИОДА(ВТ_Документы.Дата, МЕСЯЦ) = КОНЕЦПЕРИОДА(ВТ_ДокументыПоДатам.Дата, МЕСЯЦ))
    
    СГРУППИРОВАТЬ ПО
        ВТ_Документы.Контрагент,
        КОНЕЦПЕРИОДА(ВТ_Документы.Дата, МЕСЯЦ)) КАК Таб1
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Документы КАК ВТ_ДокументыСсылка
        ПО Таб1.Дата = ВТ_ДокументыСсылка.Дата

СГРУППИРОВАТЬ ПО
    Таб1.Контрагент,
    Таб1.Месяц