Группировка по максимальной дате продажи данному клиенту

1. four-dimensional-cube 27.01.25 16:17 Сейчас в теме
Есть отчет на СКД следующего вида:

-Группировка 1: Покупатель
-----Группировка 2: ДокументПродажи


Требуется привести отчет к следующему виду:

-Группировка 1: Год
-----Группировка 2: Покупатель


Что за группировка "Год"? Это дата самой последней продажи, из которой оставили только год. То есть клиенты будут группироваться по году, в котором была совершена последняя продажа данному клиенту. Дату последней продажи нужно вычислить исходя из имеющихся документов (поле ДокументПродажи).

Пример того, как должен выглядеть отчет:

-2023
-----Покупатель 1
-----Покупатель 2
-----Покупатель 3
-2024
-----Покупатель 4
-----Покупатель 5
-----Покупатель 6
-2025
-----Покупатель 7


Если это возможно, то нужно воспользоваться агрегатной функцией СКД, вместо того чтобы переделывать запрос отчета.

Пробовал такое вычисляемое поле: Год(Максимум[ДокументПродажи.Дата]). Но если сделать группировку по такому полю, то будет просто выбираться самая последняя дата продажи среди всех документов продаж всем контрагентам. И соответственно в такой группировке будет только одна запись "2025".
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Bukaska 146 27.01.25 16:22 Сейчас в теме
(1) Смотря с чем работаете

А период в параметрах таблицы нереально год назначить? И соответственно группировка по периоду
3. four-dimensional-cube 27.01.25 16:28 Сейчас в теме
(2) Период будет в несколько лет. И нам нужно оставить только дату самого последнего документа продажи, а в течение одного года, как правило, одному клиенту происходит довольно много продаж.
4. starjevschik 27.01.25 17:06 Сейчас в теме
это надо искать в тех краях, где водится "Вычислить выражение с группировкой массив". Тогда она будет не вообще максимальную дату находить, а по каждому контрагенту.
5. four-dimensional-cube 28.01.25 12:55 Сейчас в теме
(4) Я тоже так подумал. Пытаюсь самостоятельно это реализовать, но пока не выходит.

В начале я столкнулся с неприятной особенностью: допустим есть поле "Дата" типа Дата. И мы хотим найти максимальную дату. Пишем выражение Максимум(Дата) — всё корректно. Но если сделать так:

ВычислитьВыражениеСГруппировкойМассив(Максимум(Дата), "Группировка") — то СКД внезапно разучится сравнивать даты, и выдаст ошибку "Неправильный литерал числа "28.01.2025" ".

Потом я решил сразу вытаскивать из даты год, так как, во-первых, мне для задачи важен только год, а во-вторых, год записывается одним четырехзначным числом, и по идее СКД сможет легко сравнивать годы как числа.

Написал такое выражение:

ВычислитьВыражениеСГруппировкойМассив(Максимум(Год(Дата)), "Группировка")

В итоге вообще утыкаюсь в ошибку " Синтаксическая ошибка "025" "
6. starjevschik 28.01.25 13:03 Сейчас в теме
(5)
ВычислитьВыражениеСГруппировкойМассив

ВычислитьВыражение("Сумма(Количество)", "Товар",)

а если максимум в кавычки?
Вообще СКД суть вещь темная. Методом перебора всех возможных вариантов в ней иногда удается что-то сделать, но вот так, чтобы прочитать мануал и на раз-два написать - это нет, это скучно и 1с так не работает.
7. four-dimensional-cube 31.01.25 19:35 Сейчас в теме
(6) Если взять максимум в кавычки, то формула проходит проверку и применяется корректно. К сожалению, это не приводит к желаемому результату. Результат отчета выглядит так:

-2023, 2024, 2025
-----Покупатель 1
-----Покупатель 2
-----Покупатель 3
-----Покупатель 4
-----Покупатель 5
-----Покупатель 6
-----Покупатель 7


Видимо, агрегатной функцией желаемого мной результата добиться нельзя. Придется редактировать отчет, добавлять поле и применять "Расчитывать по..."
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот