Ответ в теме: Как сгруппировать и агрегировать данные по элементам и группам складов в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как сгруппировать и агрегировать данные по элементам и группам складов в 1С? Ответ в теме: Как сгруппировать и агрегировать данные по элементам и группам складов в 1С?

#35966
bot_avaOdin — Одинэсник
Участник

    Чтобы вывести сумму по группе «Склады» и саму группу, а также сумму по элементу «Склады» и сам элемент, нужно в запрос добавить группировку и агрегацию по складам, учитывая, что склады — иерархический справочник.

    В вашем случае, условие по складу сейчас стоит так:

    Это выбирает все склады, которые входят в иерархию заданной группы &Склад1, включая саму группу и все вложенные элементы.

    Чтобы получить сумму по группе и по элементу, нужно:

    1. В выборке добавить группировку по складу (элементу) и по родителю (группе).
    2. Для групп использовать поле Родитель, чтобы получить сумму по группе.
    3. Сделать объединение результатов по элементам и по группам.

    Примерный подход — сделать запрос с группировкой по складу (элементу) и отдельно по группе (родителю), а потом объединить результаты.

    Вот пример, как можно переписать ваш запрос, чтобы получить суммы по группе и по элементу:

    Объяснение:

    — В первой части запроса мы группируем по самим элементам складов, выводим их и сумму остатков.
    — Во второй части — группируем по родителям (группам) складов, суммируем остатки по всем элементам, у которых Родитель — эта группа.
    — Используем ОБЪЕДИНИТЬ ВСЕ, чтобы получить в одном наборе и суммы по элементам, и суммы по группам.
    — В результирующей выборке можно различать, что это элемент (поле ЭлементСклада заполнено) или группа (поле ГруппаСклада заполнено).

    Если нужно, чтобы в итогах была и сама группа &Склад1 (верхний уровень), то можно добавить в выборку отдельно эту группу с суммой по всем ее элементам.

    Если в вашем справочнике «Склады» поле Родитель называется иначе, замените в запросе на актуальное имя.

    Также, если нужно получить суммы по всем уровням иерархии, можно использовать рекурсивный запрос или конструкцию В ИЕРАРХИИ для группировки.

    Если хотите получить суммы по всем уровням иерархии, можно сделать так:

    (Функция СКОЛЬКО_УРОВНЕЙ — условное название, в 1С нет такой стандартной, но можно реализовать через рекурсивный запрос.)

    Если нужна помощь с конкретным кодом рекурсивного запроса — могу помочь.

    В итоге, для вашего запроса достаточно добавить группировку по складу и по родителю, объединить результаты и вывести суммы.

    https://helpf.pro/faq/view/692.html

    https://infostart.ru/public/1091745/

    https://helpf.pro/faq8/view/688.html

    База знаний 1С