1С скд итоги по вычисляемым полям

1с. СКД. Вычисляемое поле в группировке.
Эта методика используется:
– когда итог в группировке отчета СКД 1с требуется не просто просуммировать колонку подчиненныч строк, а вычислить значение по формуле.
– когда вам надо показать только итог в группировке, не показывая основного значения.

Делается эта фишка следующим образом:
1. В отчет СКД добавить вычисляемое поле, Выражение=0

2. ДВАЖДЫ добавить в "Ресурсы" вычисляемое поле. Один раз как "0", второй как "Вычислить(. ". Для каждого проставить "Расчитывать по. " группировки кому считать – в "Вычислить(. ", кому нет – в "0".

Немного теории по функции СКД "Вычислить".
Функция Вычислить предназначена для вычисления выражения в контексте некоторой группировки. Функция имеет следующие параметры:
– Выражение – строка, содержащая вычисляемое выражение;
– Группировка – строка, содержащая имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка
– ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
– Тип расчета — строка, В случае если данный параметр имеет значение ОбщийИтог, выражение будет вычисляться для всех записей группировки. В случае если значение параметра Группировка, значения будут вычисляться для текущей групповой записи группировки.

Например:
Сумма(Продажи.СуммаОборот) / Вычислить(«Сумма(Продажи.СуммаОборот)», «ОбщийИтог»)
В данном примере в результате получится отношение суммы по полю «Продажи.СуммаОборот» записи группировки к сумме того же поля во всей компоновке.
Еще пример:
ВычислитьВыражение("Сумма(Стоимость)/Выбор Когда Сумма(Количество)=0 Тогда 1 Иначе Сумма(Количество) Конец","Подразделение","Группировка")

Читайте также:  Фоллаут 4 шелли тиллер убивать или нет

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

ElenaT
07.06.2015 21:31
Прочитано: 3769

Есть отчет. Условно, Группировки: Категория – Номенклатура – Документ

Поля: Номенклатура, Процент, Норматив, Факт, Разница(Факт – Норматив * Процент)

Не получается сформировать в СКД Итог по Разнице.

Разница – это ресурс, рассчитываемый индивидуально для каждой номенклатуры с пом функции ВычислитьВыражение()

В группировке Категория, естественно, нет поля Процент (оно индивидуально для каждой номенклатуры) . Дальше – тупик.

Yandex
Возможно, вас также заинтересует
Bell
08.06.2015 09:42
Ответ № 1

Если регистры нельзя переделать , тогда Резульата запроса в таблицу значений, дальще уже все получится как надо

ElenaT
08.06.2015 17:03
Ответ № 2

Спасибо, но через таблицу не пойдет. Зачем тогда СКД?

E_Migachev
09.06.2015 04:54
Ответ № 3

а как вы хотите чтобы он посчитал по группировке? среднее или сумма – вычисляемые поля

Bell
09.06.2015 16:30
Ответ № 4

У тебя скорей всего по другому нельзя сделать отчет . Он БУДЕТ комбинированный СКД затем резлультат в ТЗ. Долще руками работать с процедурами модулях отчема. Если есть возможность, то ТЗ сделать параметром и обработно в СКД. Когда то надо начанать работать с такими построением отчетов, потому что просто в СКД сложные очеты почти невозможно сделать или оформить. Трудно бывает только первый раз..

Mokey
09.06.2015 17:18
Ответ № 5

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

Читайте также:  Сумма цифр числа python
Mokey
09.06.2015 17:20
Ответ № 6

Я таким принципом суммирую ресурсы Сумма. Есть сумма в валюте поставщика, которая суммируется в итогах только если внутри группировки одна валюта, но есть и пересчитанная в основную валюту по курсу, которая суммируется всегда и по всем группировкам.

Программирование как созидательный процесс.

1С СКД: Суммирование значений на различных уровнях группировок

В данной небольшой заметке хочу показать, как можно произвести суммирование значений на различных уровнях группировки, в отчете с использованием системы компоновки данными.
Как показано на изображении, только на уровне группировки «Группы номенклатуры», рассчитывается ресурс «Заказать», в нем отображается, сколько нужно заказать по текущей группе номенклатуры исходя из определенных условий:

1С СКД: Суммирование значений на различных уровнях группировок

Соответственно, теперь необходимо рассчитать итоги, по выше находящимся группировкам («Склады», «ТипыСкладов») и общий итог.
Для этого используется функция ВычислитьВыражениеСГруппировкойМассив:
ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ (EVALEXPRESSIONWITHGROUPARRAY)
Синтаксис:
ВычислитьВыражениеСГруппировкойМассив( , , , )
Описание:
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет преобразовано в НаборДанных.Контрагент.
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функцияВычислитьМассивСГруппировкойМассив(), генерирует выводимое выражение таким образом, чтобы выводимая информация была упорядочена. Например, для пользовательского поля с выражением:

ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:

Параметры:

Тип: Строка. Выражение, которое нужно вычислить. Строка, например, Сумма(СуммаОборот).

Тип: Строка. Выражения полей группировки – выражения полей группировки, перечисленные через запятую. Например, Контрагент, Партия.

Тип: Строка. Выражение, описывающее отбор, применяемый к детальным записям. В выражении не поддерживается использование агрегатных функций. Например,ПометкаУдаления = Ложь.

Тип: Строка. Выражение, описывающее отбор, применяемый к групповым записям. Например, Сумма(СуммаОборот) > &Параметр1.
Пример:

Максимум(ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент"));

Подробное описание синтаксиса функции можно найти по адресу http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Теперь для расчета, продублируем поле «Заказать», с различными значениями «Рассчитывать по…», используя следующие выражения, обратите внимание, что в каждом выше стоящем уровне используются значения уровней ниже стоящих группировок.

В итоге получаем следующую конструкцию:

1С СКД: Суммирование значений на различных уровнях группировок

1С СКД: Суммирование значений на различных уровнях группировок : 5 комментариев

Отлично, спасибо, очень помогла статья.

Хорошая статья. Благодарю.

А у меня не получилось…выходит ошибка — Отчет не сформирован ! Функция не найдена «ЧИСЛО».

Сумма(ВычислитьВыражениеСГруппировкойВМассив(«ВЫБОР КОГДА МесяцОтчета «» ТОГДА
ВЫРАЗИТЬ(Сумма(Показатель)+0.01, «ЧИСЛО(15,0)») ИНАЧЕ 0 КОНЕЦ
«,»МесяцОтчета»))

К предыдущему комментарию, вдруг кому пригодится:
1. ВычислитьВыражениеСГруппировкойВМассив — предлог «В» не нужен
2. Если внутри ВычислитьВыражениеСГруппировкойМассив используется ВЫРАЗИТЬ, то «»ЧИСЛО(15,0)»» обрамляется двойными кавычками

Реально выручил когда уже думал придется руками считать!

Читайте также:  Эро смайлики для ватсап
Оцените статью
Добавить комментарий

Adblock detector