Различный расчет итогов в одной колонке отчета для разных группировок. СКД. Ресурсы vs Пользовательские поля

Публикация № 1869186 25.05.23

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

Отчет разный расчёт итогов

Поступил запрос от заказчика на разработку нового отчёта. И вот была в этом отчете одна интересная для меня идея – нужно было, чтобы одно и тоже поле рассчитывалось для одной группировки как процент, а для другой группировки – как абсолютное значение.

Всем доброго времени суток!

Совсем недавно пришлось познакомиться с таким механизмом СКД, как «Пользовательские поля» и теперь спешу поделиться с теми, кто, как и я, пытается понять этот механизм.

Поступил запрос от заказчика на разработку нового отчёта. И вот была в этом отчёте одна интересная идея – нужно было, чтобы одно и тоже поле рассчитывалось для одной группировки как процент, а для другой группировки – как абсолютное значение.

Для примера предположим, что есть у нас справочник «Договоры контрагентов» и по данным этого справочника необходимо сформировать простейший отчёт – договор – сумма – количество и процентные соотношения, сгруппировать по стране регистрации контрагента. Если страна регистрации контрагента является участником ЕАЭС, то в итогах необходимо указать процентные итоги, иначе – абсолютное количество / сумму договоров.

Т.е., итоговый вид отчёта должен быть примерно таким:

 

Участники ЕАЭС

Страна

Сумма

Количество

% от суммы

(от общей суммы)

% от количества

(от общего кол-ва)

Да

Итого

1000

100

62,5 %

62,5 %

Россия

100

10

10 %

10 %

Беларусь

200

20

20 %

20 %

Казахстан

300

30

30 %

30 %

Киргизия

400

40

40 %

40 %

Нет

Итого

600

60

600

60

Китай

100

10

100

10

Франция

200

20

200

20

Германия

300

30

300

30

 

Т.е., в колонке 5 и 6, в зависимости от группировки, итоги должны считаться по-разному. Итог по группировке «Участники ЕАЭС» - процент от общего количества (суммы) договоров, а для группировки не участников ЕАЭС – просто сумма текущей группировки.  При этом, для стран-участников ЕАЭС после рассчитанного процента в поле обязательно должен быть указан значок «%».

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

Сложность задачи ещё заключалась в том, что, в отличие от вышеописанного тестового примера, в формируемом отчёте было 4 уровня иерархии и 3 различных правила расчёта итогов по ним: в каком-то случае проценты должны были считаться от общего итога, в каком-то от текущей группировки, в каком-то от вышестоящей группировки.

Реализовать ещё и различный тип итогов (проценты / абсолютное значение) при расчёте ресурсов показалось сложным именно для понимания расчета и дальнейшей работы (доработки / сопровождения) с отчётом.

А вот с пользовательскими полями всё показалось намного прозрачней и понятней.

В указанной статье покажу оба примера.

Итак, порядок действий:

1. Формируем запрос, в который выбираем договор, сумму, страну контрагента и признак участника ЕАЭС. В приложенный отчёт также было добавлена одна пустая строка с нулевой суммой и нулевым количеством – чуть позже объясню, зачем.

Также, в приложенном отчете в качестве сумм договоров всегда указано «100», т.к. на своём опыте приходилось сталкиваться с тем, что в разных конфигурациях данное поле называется по-разному (где-то «Сумма», где-то «Стоимость», а в некоторых его вообще нет). Если кто-то будет смотреть – то хотелось бы, чтобы отчёт, как говорится, «взлетел».

И ещё, на всякий случай, в отчёт добавлено условие «ПЕРВЫЕ 5000», на случай, если будет ну ооочень большой объём данных. Всё-таки никаких отборов и т.п.

2. Затем создаём два новых вычисляемых поля «ПроцентОтКоличества» И «ПроцентОтСуммы» - это будут те самые поля, в которых будем выполнять расчёт.

3. Рассчитываем ресурсы. Сумму и количество договоров просто суммируем.

Процент от количества рассчитаем через ресурс, процент от суммы – через пользовательское поле.

3.1. Расчёт через ресурс.

Выводим в ресурсы вычисляемое поле «ПроцентОтКоличества» и задаём ему нужную нам формулу расчёта (100 * Количество / Общее количество). Я также обычно выполняю проверку на то, что знаменатель не равен нулю, чтобы потом в отчете не было записей «Деление на 0».

Затем рассчитанное значение «заворачиваем» в функцию «Формат», указываем количество знаков после запятой и знак процента.

И всё это дело также «заворачиваем» в функцию выбора, в которой определяем, что если это участник ЕАЭС, то тогда вышерассчитанный процент, иначе – просто количество.

В конечном итоге у меня получилось так:

 

 

Теперь на вкладке «Настройки» просто выводим это поле и всё, задача решена.

3.2. Расчёт через пользовательское поле.

Для расчёта через пользовательское поле формула в ресурсах будет выглядеть немного проще – без форматирования и выбора – только проверка на не нулевой знаменатель и правило расчета. Остальная часть будет вынесена в пользовательские поля.

В конечном итоге вышло так при расчёте ресурса:

 

 

Далее, на вкладке «Настройки» -> вкладка «Пользовательские поля» добавляем новое пользовательское поле «выражение».

- В поле «Выражение детальных записей» указывается значение детальных записей (в нашем случае просто сумма).

- В поле «Выражение итоговых записей» указывается формула для расчета по группировкам. Это тот самый выбор + форматирование, которые для расчета по количеству выполняли в ресурсах, но т.к. значение по сумме уже рассчитано, то формула выглядит немного проще:

 

 

4. Выполняем настройки отчёта, группировки, положение и т.д. Затем запускаем отчёт и смотрим:

 

 

Всё как просили – для Участников ЕАЭС проценты, для остальных – абсолютные значения.

Однако обратите внимание на пустую строку, с пустыми значениями и знаком % в наших итогах. Это та самая строка, которая была добавлена специально для примера того, как рассчитанные нами значения будут отражаться в случае, если значение в строке будет нулевым.

Чтобы избавиться от этих пустых знаков процентов, достаточно в расчёт ресурса добавить простое условие, что если рассчитанное значение равно 0, то вывести 0 или пустое значение.

Для пользовательского поля это проблем не составит:

 

 

А вот для ресурса кода прибавится немного больше:

 

 

В любом случае видим, что в итоге знаков % больше нет:

 

 

 

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

Тестирование проводил в конфигурации Управление холдингом, редакция 3.1 (3.1.6.15).

Возможно, кто-то знает вариант лучше – всегда интересно услышать другие идеи.

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

В любом случае, спасибо за внимание.

Скачать файлы

Наименование Файл Версия Размер
Различный расчёт итогов в одной колонке отчёта для разных группировок. СКД. Ресурсы vs Пользовательские поля

.erf 6,68Kb
0
.erf 6,68Kb Скачать

Специальные предложения

Автор запретил комментарии

См. также

Виртуальная иерархия

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

Пример своей иерархии для СКД: как в СКД показать последовательность цифр иерархически.

1 стартмани

22.05.2023    1401    1    Sevg    0    

2

Произведение (умножение) чисел из разных строк в СКД

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

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

1 стартмани

11.04.2023    2311    0    Bitnikov    0    

4

Выборочная свертка группировок для СКД

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

Методика разработки отчета на СКД с возможностью свёртки части группировок по заданному программно условию. - свертка по значению поля (неотрицательные - сворачиваются); - свертка подчиненных в иерархии с произвольным количеством уровней.

1 стартмани

16.01.2023    1740    schthaxe    3    

27

СКД: вывод времени в формате день, час, минута, секунда

СКД Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

Готовый пример вывода времени в формате хх д хх ч хх м хх средствами СКД.

1 стартмани

01.12.2022    2318    3    lagutiniv    2    

8

Параметры открытия формы выбора отборов и параметров СКД ("связи параметров выбора" списочных значений СКД)

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

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

1 стартмани

17.10.2022    3421    4    arman1997    1    

9

Еще один вариант отчета Статистика по документам

Статистика базы данных СКД Платформа 1С v8.3 Россия Абонемент ($m)

Отчет на базе СКД с отображением статистики по проведенным документам за указанный период с возможностью отбора по организации.

1 стартмани

14.10.2022    2569    4    scientes    0    

3

Заполнение параметра/отбора во всех отчетах списком товаров из документа

Универсальные обработки Учет ТМЦ Ценообразование, анализ цен СКД Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Добавление кнопки на форму общего отчет для заполнения параметра/отбора номенклатуры товарами из любого документа для любого отчета использующего общую форму отчёта

1 стартмани

23.08.2022    2667    1    user1209971    0    

2

Добавление нумерации колонок СКД одной процедурой

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

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

1 стартмани

16.06.2022    3886    0    user700035_6550355    3    

4

Поиск заказов по массиву номенклатуры

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

Отчет показывает все заказы, в которые входят только заданный в параметрах массив номенклатуры.

1 стартмани

14.06.2022    3211    2    Dunga    4    

0

Таблица умножения, деления на СКД, управляемые формы (пример тестового задания)

Подготовка к аттестации СКД Платформа 1С v8.3 Абонемент ($m)

Пример тестового задания и его реализации. Протестировано на версии платформы 8.3.18.1289.

1 стартмани

30.05.2022    4693    8    Johnson1987    13    

7

Вывод изображений штрихкодов на СКД

СКД Система компоновки данных 8.3.14 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

27.04.2022    3587    14    SergeyPZU    8    

16

Отборы СКД на форме УФ

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

Создание отборов из СКД для таблиц значений.

1 стартмани

22.04.2022    5880    5    Chinga050    4    

16

Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД

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

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

1 стартмани

20.04.2022    5300    eugene-p    8    

28

По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета

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

Как скрестить формирование отчетных данных с помощью СКД и вывод в табличный документ с помощью Макет.ПолучитьОбласть(...) и ТабДок.Вывести(Секция)? А также сделать этот процесс простым и удобным? Об этом в статье ниже.

1 стартмани

22.03.2022    4846    Alxby    8    

47

Редактирование данных в ячейках СКД (простая реализация)

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

На примере справочника "Номенклатура" рассмотрим, как в отчёте можно редактировать его реквизиты, и изменения мгновенно будут записываться в элемент справочника.

1 стартмани

11.03.2022    8515    7    Flashill    20    

52

Срез последних N записей, пример на СКД

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

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

1 стартмани

09.03.2022    5030    4    user-z99999    9    

0

Шаблон отчета на СКД (обычные формы)

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

Улучшенный шаблон отчёта СКД, реализованный на обычных формах. Лаконичный и функциональный, весь необходимый минимум для управления отчётом вынесен на форму отчёта, что избавляет рядовых пользователей от необходимости лезть внутрь настроек отчёта. Форма сделана гибкой и позволяет легко себя адаптировать под Ваши потребности. Ряд элементов формы сделан сворачиваемыми и растягиваемыми.

2 стартмани

14.02.2022    6665    19    Eugen-S    4    

9

Расчет нарастающего итога, дельты и другие варианты в СКД

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

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

1 стартмани

07.02.2022    4675    6    user-z99999    0    

-1

Доработка типового отчета на СКД с помощью расширения

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

Доработка типового отчета на СКД в БП 3.0 с помощью расширения конфигурации. Пример, как можно внести изменения в типовой отчет "Бухгалтерии предприятия" 3.0 без снятия конфигурации с поддержки. Описан пошаговый алгоритм действий и способы решения возникающих при этом проблем.

1 стартмани

09.01.2022    9307    Spacer    9    

26

Как я с отчетом СКД боролся (произвольный макет)!

СКД Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Бухгалтерский учет Абонемент ($m)

Здравствуйте. Необходимо сделать было отчет, который при кнопке сформировать заполняется автоматически! При этом форма определенная (использовал произвольный макет), сделал на основании отчета "Расчетсреднегодовой...", где источником данных является внешний набор (набор данных - объект), а мне по мимо этого нужно было еще кучу всего! Статью в первую очередь пишу для себя (чтобы не забыть), но может еще кому пригодится! (БГУ 2.0.82.11, платформа 8.3.18.1483).

1 стартмани

08.12.2021    1170    VID1234    2    

0

Отчет "Документы "Реализации" на каждый день" когда была реализация

СКД Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

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

1 стартмани

27.08.2021    3606    1    Shvapsss    2    

1

Программное формирование отчетов в БП 3.0 на примере оборотно-сальдовой ведомости по счету

Адаптация типовых решений СКД Платформа 1С v8.3 Бухгалтерский учет Система компоновки данных 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Порой возникает задача получить программно результат отчета на основе СКД в виде табличного документа. В данной статье будет описан один из вариантов реализации данной задачи.

1 стартмани

14.07.2021    9522    44    arman1997    1    

7

Отчет по расписаниям (пример)

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

Пример построения отчета по нескольким расписаниям.

1 стартмани

18.05.2021    7966    0    echo77    4    

23

Отчет с выводом заголовка на СКД

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

Отчёты "Ведомость товаров на складах" демонстрируют два способах вывода заголовка на СКД. Эти отчеты тестировались на конфигурации Управление торговым предприятием для Казахстана, редакции 2.0.19.2. Могут работать на любой конфигурации, если имеются регистры накопления «ТоварыНаСкладах» и «РеализованныеТовары».

2 стартмани

07.04.2021    5684    7    softmaker    0    

1

Отчет с настройкой роли поля СКД со свойством период

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

Отчёт демонстрирует правильную настройку роли СКД со свойством «Период», по которой рассчитывается остаток. Этот отчет тестировался на конфигурации Управление торговым предприятием для Казахстана, редакции 2.0.19.2. Может работать на любой конфигурации, если имеется регистр накопления «ТоварыНаСкладах».

2 стартмани

01.04.2021    6749    4    softmaker    0    

0

Примеры использования функций СКД Массив (Array) и СоединитьСтроки (JoinStrings) в отчётах 1С 8

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

Здесь приведено два отчёта, в которых использованы функции СКД Массив (Array) и СоединитьСтроки (JoinStrings). Отчет по ГТД и отчет по продаже номенклатуры, оба тестировались на конфигурации Управление торговым предприятием (УТП) для Казахстана, редакции 2.0.19.2. Также добавлена электронная книга, в которой собраны знания по основам СКД, которые я получил, во время работы и изучения системы компоновки данных.

10 стартмани

15.03.2021    15923    42    softmaker    0    

1

Расшифровка СКД. Фильтр отчета по диапазону чисел. Переопределение обработки расшифровки. Не модальный режим

СКД Управляемые формы Система компоновки данных 8.3.14 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

08.02.2021    9551    5    denmon88    1    

18

Динамическая расшифровка СКД (на примере отчета)

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

Предлагаю Вашему неподкупному вниманию вариант более-менее унифицированной реализации динамически формирующейся расшифровки СКД на примере простейшего отчета для конфигурации УТ 11.

1 стартмани

08.12.2020    3665    mr_sav    3    

23

СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках

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

Довольно часто на различных тематических форумах задается вопрос, можно ли использовать в отчете/обработке несколько схем компоновки данных, подменяя одну другой по мере надобности? При этом желательно, чтобы и пользовательские настройки при смене схемы менялись соответственно.

1 стартмани

07.12.2020    11978    user1502278    23    

58

Программная корректировка при выводе отчета СКД

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

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

1 стартмани

08.10.2020    25302    dabu-dabu    18    

238

Строка по шаблону с помощью СКД

СКД Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

28.08.2020    1745    Keyman    2    

3

Быстрое формирование наборов данных Объект схемы СКД

СКД Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

05.07.2020    12642    8    Алексей Воробьев    16    

56

СКД: штрихкоды в несколько колонок

СКД Система компоновки данных 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

СКД. Ресурсы в несколько колонок, на примере РС Штрихкоды номенклатуры.

1 стартмани

02.03.2020    3844    shetill    3    

13

СКД: красивые надписи в заголовках колонок

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

Необходимо немного исправить вывод надписей в заголовках колонок, сделать более читаемый вариант. Как это сделать?

2 стартмани

27.02.2020    17263    10    wowik    36    

66

Получение курса валюты за период с помощью СКД

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

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

1 стартмани

04.02.2020    8824    1    KawaNoNeko    2    

2