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

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С работа с СКД система компоновки данных средневзвешенное в итогах отчета

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

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

16500 руб.

02.09.2020    254735    1402    421    

1153

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    6275    327    shapa_pro    25    

69

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    18517    ovetgana    112    

110

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    10756    krasnoshchekovpavel    5    

68

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    10277    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

27.02.2025    16387    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    14033    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    10817    AlexeyPROSTO_1C    1    

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

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

Однако статья вовсе не про это, а про получение в СКД средневзвешенного значения в итогах. Такая задача где угодно может выскочить.
5. zqzq 25 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 93 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 7548 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 1938 11.02.14 20:51 Сейчас в теме
Автор, акцентируйте внимание на том что в ресурсах СКД может быть написано достаточно сложное выражение, отличающееся от СУММА(Ресурс) или КОЛИЧЕСТВО(Ресурс) - для новичков это хороший толчок в нужном направлении.
Сам многое для себя открыл когда это узнал и кстати, первым где я это использовал это тоже был расчет процента по формуле СУММА(Показатель1)/СУММА(Показатель2)
11. Petr54-ru 93 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 93 04.03.24 10:15 Сейчас в теме
(14) Ну там в статье после слов "Формула:" картинка с формулой. Посмотрите вдумчиво на картинку, затем для простоты примите i = 4 и распишите формулу для этого случая. Там в формуле значок сигма (Σ)- означает сумму ряда. И попробуйте это сократить. Результат вас удивит.
16. igor_gk 49 04.03.24 14:02 Сейчас в теме
(15)Та я как раз вчера сидел, вникал. Сильно меня тянуло поумничать насчет среднезвешенной. Все оказалось очень просто, без применения всяких средневзвешенных. В ресурсе формула для всех группировок: СУММА(ВаловаяПрибыль) / СУММА(Выручка) * 100 И все. И считает по всем группировкам с учетом всех этих взвешенных значений. Сидел, перепроверял, вплоть до каждой позиции из каждого первичного документа продажи и поступления.
17. ILM 241 10.10.24 12:21 Сейчас в теме
Можно ещё проще:
В ресурсе СУММА(Количество*Цена)/СУММА(Количество)
Для отправки сообщения требуется регистрация/авторизация