Как в СКД получить средневзвешенное значение в итогах отчета

27.01.14

Разработка - СКД

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

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

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

По определению, - СРЕДНЕВЗВЕШЕННОЕ (weighted average)  - это среднее арифметическое значение, в котором учтен вес каждого из слагаемых, для которых рассчитывается это среднее значение.

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

 

Тот самый хрестоматийный пример: был закуплен товар тремя партиями одна из которых – 100 тонн по 70 ф. ст. за тонну, другая – 300 тонн по 80 ф. ст. за тонну и третья  50 тонн по 95 ф. ст. за тонну, то в общей сложности он закупает 450 тонн товара; обычная средняя цена закупки составит (70 + 80 + 95) : 3 = 81,7 ф. ст. Средневзвешенная цена с учетом объемов каждой из партий равна (100 × 70) + (300 × 80) + (50 × 95) : 450 = 79,4 ф. ст. за тонну.

Формула:

Формула расчета средневзвешенного

Где Х – это значения, средневзвешенное которых мы хотим получить, а W – это веса.

На этом теория заканчивается.

Мне пришлось с этим столкнуться, когда я выводил в отчет данные о продажах товаров, с группировкой по менеджерам, где нужно было в итогах получить рентабельность. В строках отчета выводилась рентабельность по каждому товару в реализации, в итогах нужно было увидеть с какой рентабельностью отработал менеджер. Соответственно рентабельность – это «значение», а «вес» этого значения – это выручка. Ряд уточнений, для полноты картины. Выручка (объем реализации) – это произведение цены продажи товара на количество. Валовая прибыль – это выручка минус себестоимость (как именно рассчитывалась себестоимость в контексте этой статьи не принципиально). И наконец, рентабельность у нас  – это  выраженное в процентах отношение валовой прибыли к выручке.

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

Для того чтобы в СКД получить средневзвешенное по рентабельности в конструкторе запроса создаем вспомогательное поле вида произвольное выражение, куда записываем произведение рентабельности на выручку. Назначаем этому полю псевдоним – ВспомогательноеПоле. Смотрим рисунок ниже.

Конструктор запроса, Объединения и псевдонимы

Это поле мы в отчет выводить не будем, нам нужны данные для расчетов итогов. Итоги мы будем рассчитывать уже в СКД на вкладке Ресурсы

Еще один прием работы с СКД на вкладке «Ресурсы», где указывается расчет итогов, есть возможность в поле «Выражение» использовать выражения, с данными из поля «Доступные поля». Смотрим рисунок ниже.

Вкладка Ресурсы СКД

Для колонки отчета «ПроцентРентабельности»  прописываем выражение Сумма(ВспомогательноеПоле)/Сумма(Выручка).

Далее, на вкладке СКД Настройки во вкладке Выбранные поля, просто не выбираем ВспомогательноеПоле для вывода в отчет. Смотрим рисунок ниже.

Вкладка Настройки СКД

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

Надеюсь, что для кого-то эта статья окажется полезной. 

средневзвешенное значение в 1С работа с СКД система компоновки данных средневзвешенное в итогах отчета

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121601    670    389    

711

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

3 стартмани

05.02.2024    4032    25    obmailok    17    

63

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

СКД на JavaScript в 1С

СКД WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8154    20    John_d    25    

123

Использование менеджера временных таблиц в СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    4649    PROSTO-1C    13    

61

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    5804    15    kalyaka    5    

86

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Простые приемы работы с отчетами на СКД. Что нужно знать пользователю про настройку отчетов, чтобы использовать их на полную катушку.

18.09.2023    6690    accounting_cons    5    

29

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Когда отчет надо разделить по страницам, это всегда проблема для разработчика. Поскольку в СКД нет стандартных вариантов, как это сделать. Нашел (на свой взгляд) самое простое и оптимальное решение.

01.09.2023    4517    KVIKS    15    

80
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4670 27.01.14 14:34 Сейчас в теме
Пока полезной не оказалась, но на будущее пригодится. Если сейчас не набежит местный бомонд и не разнесёт на корки.
y22-k; Трактор; +2 Ответить
2. anig99 2843 28.01.14 22:07 Сейчас в теме
В книгах и статьях про ресурсы СКД всё это есть.
3. bayce 45 29.01.14 17:26 Сейчас в теме
Отчет может дать немного труднообъяснимый результат по менеджерам.
4. Petr54-ru 90 29.01.14 18:18 Сейчас в теме
(3) bayce,

Все на специфику бизнеса завязано, специфика кривая, как турецкая сабля - работа реселлера в канале. Это всего лишь один из комплекта отчетов, которые "мотают" и менеджеры и руководство. Смысл отчета - видеть, что происходит и не падать ниже определенной планки по рентабельности. У всех вендоров практически непрерывно происходят акции, валютный курс тоже на месте не стоит, наценка в канале маленькая и пролететь мимо кассы очень просто, бдительность терять нельзя.

Однако статья вовсе не про это, а про получение в СКД средневзвешенного значения в итогах. Такая задача где угодно может выскочить.
5. zqzq 23 30.01.14 16:52 Сейчас в теме
Вспомогательное поле ИМХО красивее добавлять на вкладке "Вычисляемые поля" в СКД. Там доступны расширенные функции СКД, функции общих модулей и т.д., а СКД само уже запрос сгенерирует, если есть обращение к БД в поле. +Запрос не захламляется.
Единственное (очень редкое) исключение с которым сталкивался - вычисляемый ресурс начальный/конечный остаток, его лучше в запросе и установить роль.

Вообще если оставить относящееся к СКД, то будет только нестандартное (не по умолчанию) вычисление ресурса. Более интересно было бы, например, особенности соединения наборов данных в СКД (при вычислении итогов по группировкам считает итоги ДО соединения и не задваивает количества, если ключ связи неуникальный). А вообще лучше Хрусталёву прочитать (+курс Гилёва для введения в тему).
6. ferre 31.01.14 17:13 Сейчас в теме
"Тот самый хрестоматийный пример: был закуплен товар тремя партиями одна из которых – 100 тонн по 70 ф. ст. за тонну, другая – 300 тонн по 80 ф. ст. за тонну и третья – 50 тонн по 95 ф. ст. за тонну, то в общей сложности он закупает 450 тонн товара; обычная средняя цена закупки составит (70 + 80 + 95) : 3 = 81,7 ф. ст. Средневзвешенная цена с учетом объемов каждой из партий равна (100 × 70) + (300 × 80) + (50 × 95) : 450 = 79,4 ф. ст. за тонну."

Решение (в ресурсах):

СУММА(ВычислитьВыражениеСГруппировкойМассив("Количество*Цена", "Партия",,))/Сумма(Количество)

ВычислитьВыражениеСГруппировкойМассив("Количество*Цена", "Партия",,) вернет массив из (100 × 70); (300 × 80); (50 × 95);

Не забываем поставить для поля "Партия" - "обьязательное".

ПС: с 8.2.14

Если кому интерестно могу создать публикацию.
vittany; marku; +2 Ответить
7. Petr54-ru 90 01.02.14 12:23 Сейчас в теме
(6) ferre,

На мой взгляд была бы востребована публикация про "продвинутую" работу с ресурсами в СКД. В литературе в основном примеры с ресурсами вида:

Поле Выражение
Рожно Сумма(Рожно)

В упомянутой в коментах книжке Хрусталевой - Е.Ю. Хрусталева "Разработка сложных отчетов в 1С Предприятии 8. Система компоновки данных (2008)", иная работа с ресурсами есть только в Примере №10 в Главе 4.

Есть еще двухтомник «Профессиональная разработка в системе 1С:Предприятие 8 (1С Паблишинг 2012)», там есть во втором томе Глава 16 - «Сложные аналитические отчеты». Пример №17, - там тоже нетривиальная работа с ресурсами, и все. Во всяком случае, я больше ничего не видел. Я считаю, что информации по продвинутой работе с ресурсами крайне мало и статья с примерами, близкими к реальным пошла бы на ура. У меня пока хорошего материала из своей личной практики в нужном для статьи объеме нет.

Я когда начал работать с 1С 8.Х, меня поначалу страшно бесила ситуация с внятными мануалами. Например в Delphi все что нужно разработчику есть в документации, а документация находится «внутри» Delphi. А тут если «упираешься» в проблему, то после мануалов, книжек, только и остается, что надеяться на то что на Инфостарте найдется статья которая натолкнет на то, в какую сторону копать.
8. SergeyDityatev 2 02.02.14 04:26 Сейчас в теме
Возникает вопрос, - с какой рентабельностью отработал менеджер в отчетном периоде. Для корректного ответа на этот вопрос нужно вычислить средневзвешенное значение рентабельности.


А зачем так все усложнять? Вроде его корректная рентабельность - это итог по валовой прибыли разделить на итог по выручке этого менеджера. Какая средневзвешенная рентабельность?

Для того чтобы в СКД получить средневзвешенное по рентабельности в конструкторе запроса создаем вспомогательное поле вида произвольное выражение, куда записываем произведение рентабельности на выручку. Назначаем этому полю псевдоним – ВспомогательноеПоле.

Зачем вычислять произведение рентабельности на выручку- это валовая прибыль. Скорее мы рентабельность вычисляем от валовой прибыли и выручки.

Для колонки отчета «ПроцентРентабельности» прописываем выражение Сумма(ВспомогательноеПоле)/Сумма(Выручка).

Ты будешь крайне удивлен результату
Сумма(Валовая прибыль)/Сумма(Выручка)

Мне кажется ты запутался.

Средневзвешенная цена с учетом объемов каждой из партий равна (100 × 70) + (300 × 80) + (50 × 95) : 450 = 79,4 ф. ст. за тонну

Я думаю, что это обычная средняя себестоимость в классическом ее понимании - какая средневзвешенная цена.
И считается она классически итого по сумме разделить на общее количество.

dim369; zqzq; +2 Ответить
12. dim369 14.02.14 09:49 Сейчас в теме
(8) IntSergey,

Средневзвешенная цена с учетом объемов каждой из партий равна [(100 × 70) + (300 × 80) + (50 × 95)] : 450 = 79,4 ф. ст. за тонну. Так будет правильнее с учетом последовательности операций :)
9. sapervodichka 6697 11.02.14 13:26 Сейчас в теме
Может пригодиться, информация, по новым возможностям 8.3: В языке выражений системы компоновки данных реализованы следующие функции: ACos(), ASin(), ATan(), Sin(), Cos(), Tan(), Exp(), Log(), Log10(), Pow(), Sqrt(), Окр(), Цел(), ТипЗначения(),Тип().
В языке выражений системы компоновки данных реализованы следующие агрегатные функции: Каждый(), Любой(), СтандартноеОтклонениеГенеральнойСовокупности(), СтандартноеОтклонениеВыборки(), ДисперсияВыборки(), ДисперсияГенеральнойСовокупности(), КовариацияГенеральнойСовокупности(), КовариацияВыборки(), Корреляция(), РегрессияНаклон(), РегрессияОтрезок(), РегрессияКоличество(), РегрессияR2(), РегрессияСреднееX(), РегрессияСреднееY(), РегрессияСреднееSXX(), РегрессияСреднееSYY(), РегрессияСреднееSXY().
10. echo77 1868 11.02.14 20:51 Сейчас в теме
Автор, акцентируйте внимание на том что в ресурсах СКД может быть написано достаточно сложное выражение, отличающееся от СУММА(Ресурс) или КОЛИЧЕСТВО(Ресурс) - для новичков это хороший толчок в нужном направлении.
Сам многое для себя открыл когда это узнал и кстати, первым где я это использовал это тоже был расчет процента по формуле СУММА(Показатель1)/СУММА(Показатель2)
11. Petr54-ru 90 12.02.14 06:57 Сейчас в теме
(10) echo77,

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


Я с вами полностью согласен, пока лично в это не упрешься, осознание не придет. Есть пара книжек - Разработка сложных отчетов в "1С:Предприятии 8.2". Система компоновки данных", ссылка - http://v8.1c.ru/metod/books/book.jsp?id=389 , там среди немалого количества примеров только один пример где в ресурсах есть выражение отличное от Сумма(Рожно) или Среднее(Рожно), есть еще книжка - Профессиональная разработка в системе 1С:Предприятие 8", ссылка - http://v8.1c.ru/metod/books/book.jsp?id=401 , там тоже один единственный пример нетривиальной работы с ресурсами. Во всем объеме этих материалов по СКД информация о ресурсах просто теряется.
13. Aleksey.z 42 28.02.14 12:54 Сейчас в теме
А почему именно среднее арифметическое? Учитываете ли робастность?
14. igor_gk 49 04.03.24 01:00 Сейчас в теме
"Выручка (объем реализации) – это произведение цены продажи товара на количество. Валовая прибыль – это выручка минус себестоимость (как именно рассчитывалась себестоимость в контексте этой статьи не принципиально). И наконец, рентабельность у нас – это выраженное в процентах отношение валовой прибыли к выручке."
И потом вдруг:
"создаем вспомогательное поле вида произвольное выражение, куда записываем произведение рентабельности на выручку."
Согласно тексту получается что Рентабельность это: 100% * (Выручка - Себестоимость) / Выручка
И в это поле нам надо записать Рентабельность * Выручку
Сокращаем числитель/знаменатель и в поле в этом остается: 100% * Выручка - Себестоимость)
15. Petr54-ru 90 04.03.24 10:15 Сейчас в теме
(14) Ну там в статье после слов "Формула:" картинка с формулой. Посмотрите вдумчиво на картинку, затем для простоты примите i = 4 и распишите формулу для этого случая. Там в формуле значок сигма (Σ)- означает сумму ряда. И попробуйте это сократить. Результат вас удивит.
16. igor_gk 49 04.03.24 14:02 Сейчас в теме
(15)Та я как раз вчера сидел, вникал. Сильно меня тянуло поумничать насчет среднезвешенной. Все оказалось очень просто, без применения всяких средневзвешенных. В ресурсе формула для всех группировок: СУММА(ВаловаяПрибыль) / СУММА(Выручка) * 100 И все. И считает по всем группировкам с учетом всех этих взвешенных значений. Сидел, перепроверял, вплоть до каждой позиции из каждого первичного документа продажи и поступления.
Оставьте свое сообщение