Группировка по максимальной дате продажи данному клиенту
Есть отчет на СКД следующего вида:
-Группировка 1: Покупатель
-----Группировка 2: ДокументПродажи
Требуется привести отчет к следующему виду:
-Группировка 1: Год
-----Группировка 2: Покупатель
Что за группировка "Год"? Это дата самой последней продажи, из которой оставили только год. То есть клиенты будут группироваться по году, в котором была совершена последняя продажа данному клиенту. Дату последней продажи нужно вычислить исходя из имеющихся документов (поле ДокументПродажи).
Пример того, как должен выглядеть отчет:
-2023
-----Покупатель 1
-----Покупатель 2
-----Покупатель 3
-2024
-----Покупатель 4
-----Покупатель 5
-----Покупатель 6
-2025
-----Покупатель 7
Если это возможно, то нужно воспользоваться агрегатной функцией СКД, вместо того чтобы переделывать запрос отчета.
Пробовал такое вычисляемое поле: Год(Максимум[ДокументПродажи.Дата]). Но если сделать группировку по такому полю, то будет просто выбираться самая последняя дата продажи среди всех документов продаж всем контрагентам. И соответственно в такой группировке будет только одна запись "2025".
-Группировка 1: Покупатель
-----Группировка 2: ДокументПродажи
Требуется привести отчет к следующему виду:
-Группировка 1: Год
-----Группировка 2: Покупатель
Что за группировка "Год"? Это дата самой последней продажи, из которой оставили только год. То есть клиенты будут группироваться по году, в котором была совершена последняя продажа данному клиенту. Дату последней продажи нужно вычислить исходя из имеющихся документов (поле ДокументПродажи).
Пример того, как должен выглядеть отчет:
-2023
-----Покупатель 1
-----Покупатель 2
-----Покупатель 3
-2024
-----Покупатель 4
-----Покупатель 5
-----Покупатель 6
-2025
-----Покупатель 7
Если это возможно, то нужно воспользоваться агрегатной функцией СКД, вместо того чтобы переделывать запрос отчета.
Пробовал такое вычисляемое поле: Год(Максимум[ДокументПродажи.Дата]). Но если сделать группировку по такому полю, то будет просто выбираться самая последняя дата продажи среди всех документов продаж всем контрагентам. И соответственно в такой группировке будет только одна запись "2025".
По теме из базы знаний
- Универсальный конструктор отчетов (Новейший отчет) для 1C 7.7
- Конфигурация "Весовая ред. 3.0" для Платформы 1С 8.3
- 1С:Управление строительной организацией. 1С:ERP Управление строительной организацией 2
- 1С:Управление сервисным центром
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Я тоже так подумал. Пытаюсь самостоятельно это реализовать, но пока не выходит.
В начале я столкнулся с неприятной особенностью: допустим есть поле "Дата" типа Дата. И мы хотим найти максимальную дату. Пишем выражение Максимум(Дата) — всё корректно. Но если сделать так:
ВычислитьВыражениеСГруппировкойМассив(Максимум(Дата), "Группировка") — то СКД внезапно разучится сравнивать даты, и выдаст ошибку "Неправильный литерал числа "28.01.2025" ".
Потом я решил сразу вытаскивать из даты год, так как, во-первых, мне для задачи важен только год, а во-вторых, год записывается одним четырехзначным числом, и по идее СКД сможет легко сравнивать годы как числа.
Написал такое выражение:
ВычислитьВыражениеСГруппировкойМассив(Максимум(Год(Дата)), "Группировка")
В итоге вообще утыкаюсь в ошибку " Синтаксическая ошибка "025" "
В начале я столкнулся с неприятной особенностью: допустим есть поле "Дата" типа Дата. И мы хотим найти максимальную дату. Пишем выражение Максимум(Дата) — всё корректно. Но если сделать так:
ВычислитьВыражениеСГруппировкойМассив(Максимум(Дата), "Группировка") — то СКД внезапно разучится сравнивать даты, и выдаст ошибку "Неправильный литерал числа "28.01.2025" ".
Потом я решил сразу вытаскивать из даты год, так как, во-первых, мне для задачи важен только год, а во-вторых, год записывается одним четырехзначным числом, и по идее СКД сможет легко сравнивать годы как числа.
Написал такое выражение:
ВычислитьВыражениеСГруппировкойМассив(Максимум(Год(Дата)), "Группировка")
В итоге вообще утыкаюсь в ошибку " Синтаксическая ошибка "025" "
(5)
а если максимум в кавычки?
Вообще СКД суть вещь темная. Методом перебора всех возможных вариантов в ней иногда удается что-то сделать, но вот так, чтобы прочитать мануал и на раз-два написать - это нет, это скучно и 1с так не работает.
ВычислитьВыражениеСГруппировкойМассив
ВычислитьВыражение("Сумма(Количество)", "Товар",)
а если максимум в кавычки?
Вообще СКД суть вещь темная. Методом перебора всех возможных вариантов в ней иногда удается что-то сделать, но вот так, чтобы прочитать мануал и на раз-два написать - это нет, это скучно и 1с так не работает.
(6) Если взять максимум в кавычки, то формула проходит проверку и применяется корректно. К сожалению, это не приводит к желаемому результату. Результат отчета выглядит так:
-2023, 2024, 2025
-----Покупатель 1
-----Покупатель 2
-----Покупатель 3
-----Покупатель 4
-----Покупатель 5
-----Покупатель 6
-----Покупатель 7
Видимо, агрегатной функцией желаемого мной результата добиться нельзя. Придется редактировать отчет, добавлять поле и применять "Расчитывать по..."
-2023, 2024, 2025
-----Покупатель 1
-----Покупатель 2
-----Покупатель 3
-----Покупатель 4
-----Покупатель 5
-----Покупатель 6
-----Покупатель 7
Видимо, агрегатной функцией желаемого мной результата добиться нельзя. Придется редактировать отчет, добавлять поле и применять "Расчитывать по..."
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот