Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Публикация № 1101676

Разработка - Практика программирования

внутренние функции СКД вычислить выражение с группировкой массив

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

Предыдущие статьи по СКД можно посмотреть по ссылкам ниже:

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

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

Применение внутренних функций достаточно широко, их можно использовать:

  • В реквизитах полей компоновки: «Выражение представления», «Выражение упорядочивания»  
  • В выражениях вычисляемых полей
  • В выражениях ресурсов
  • В выражениях связей наборов данных
  • В выражениях параметров
  • В выражениях параметров предопределенных макетов
  • В выражениях пользовательских полей

Самих функций очень много, полный их перечень можно посмотреть в справке 1С:

Внутренние функции СКД

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

Исключением являются функции из группы «Вычислить выражение»:

  • Вычислить
  • ВычислитьВыражение
  • ВычислитьВыражениеСГруппировкойМассив
  • ВычислитьВыражениеСГруппировкойТаблицаЗначений

Несмотря на достаточно внушительно описание в справке, их использование вызывает много вопросов. Функции часто используется «интуитивно», без глубокого понимания происходящего. 

Цель этой статьи - «осознанное» применение функций из группы «Вычислять выражение».

И так, поехали…

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

 

ВычислитьВыражение

Полный синтаксис функции следующий:

ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)

Общее описание функции:

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

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

Рассмотрим эти параметры последовательно.

 

Группировка

Указание группировки, в контексте которой будет выполнен расчет.

Для примера, рассмотрим простой отчет со следующей структурой:

Структура простого отчета

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

ВычислитьВыражение("Сумма(Количество)", "Товар",)

Для всех детальных записей вычисляемого поля будет выполнен расчет по строкам, входящим в родительскую группировку «Товар».

Если создать поле с выражением:

ВычислитьВыражение("Сумма(Количество)", "Склад",)

Для всех записей (детальных и групповых) будет выполнен расчет по строкам, входящим в родительскую группировку «Склад»:

Расчет по группировкам

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

Например, следующие выражения указанное для расчета итога ресурсу «Количество» будут работать абсолютно одинаково:

ВычислитьВыражение("Сумма(Количество)", , )
Сумма(Количество)

Если в качестве параметра указано значение «ОбщийИтог», выражение будет рассчитано по всем строкам отчета.

 

Тип расчета

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

  • Группировка,
  • ОбщийИтог,
  • Иерархия,
  • ГруппировкаНеРесурса.

Если параметр не указан, значение по умолчанию - «Группировка». В этом случае никаких дополнительных уточнений выполняться не будет.

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

Ниже примеры работы выражений:

ВычислитьВыражение("Сумма(Количество)", "Товар", "ОбщийИтог")
ВычислитьВыражение("Сумма(Количество)", , "ОбщийИтог")

Тип расчета - общий итог

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

Пример работы выражения:

ВычислитьВыражение("Сумма(Количество)", "Товар", "Иерархия")

Тип расчета - Иерархия

Если в отчете не используется иерархия для группировок, значение «Иерархия» работает аналогично значению «ОбщийИтог».

Существует еще загадочное значение «ГруппировкаНеРесурса».

Описание, приведенное в справке не понятно:

«При вычислении функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки».

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

Если кто-то использовал это значение, напишите, пожалуйста, в комментариях, очень интересно!

 

Группа параметров: «Начало», «Конец»

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

Поскольку данные параметры являются расширением параметра «Тип расчета», их нельзя использовать совместно с типами расчета: «ОбщийИтог», «Группировка».

Конструкции ниже являются аналогичными:

ВычислитьВыражение("Сумма(Количество)", , "ОбщийИтог")
ВычислитьВыражение("Сумма(Количество)", , , "Первая", "Последняя")

И

ВычислитьВыражение("Сумма(Количество)", , )
ВычислитьВыражение("Сумма(Количество)", , "Группировка")
ВычислитьВыражение("Сумма(Количество)", , , "Текущая", "Текущая")

Возможные значения параметров следующие:

  • Первая – первая группировка или детальная запись в наборе, возможно указать смещение «Первая(2)»,
  • Последняя - последняя группировка или детальная запись в наборе, возможно указать смещение «Последняя(2)»,
  • Предыдущая – предыдущая от текущей группировки или детальной записи в наборе, возможно указать смещение «Предыдущая(2)»,
  • Последующая - следующая от текущей группировки или детальной записи в наборе, возможно указать смещение «Следующая(2)»,
  • Текущая – текущая группировка или детальная запись,
  • ОграничивающееЗначение – ограничение по конкретному значению, которое можно указать в скобках. Ограничивающее значение применяется к первому полю упорядочивания.

Особенности применения параметров:

Конечная запись не должна предшествовать начальной.

Если указана только начальная запись, конечная будет равна значению «Текущая».

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

ВычислитьВыражение("Сумма(Сумма)", "Поставщик", ,"Предыдущая", "Текущая")

Диапазон группировок

Для иерархической группировки, отбор записей выполняется на текущем уровне иерархии. Пример, для иерархической группировки по поставщику:

ВычислитьВыражение("СУММА(Сумма)", "Поставщик", , "Первая", "Первая")

Диапазон для иерархической группировке

 

Параметр «Начало» можно использовать совместно с выражением, которое не является агрегатной функцией.

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

ВычислитьВыражение("Номер", , ,"Предыдущая") 

Если выражение (не агрегатная функция) получается не по строке, а по группировке, для расчета будет использоваться первая строка этой группировки:

ВычислитьВыражение("Номер", "Поставщик", ,"Предыдущая")

Номер предыдущего для группировки

 

Сортировка, ИерархическаяСортировка

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

Параметр «ИерархическаяСортировка» позволяет отдельно переопределить сортировку иерархии элементов. Если он не указан, для иерархии действует выражение параметра «Сортировка».

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

В выражении сортировки можно использовать ключевые слова: «Возр», «Убыв», «Автоупорядочивание».

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

Пример выражения сортировки:

Поставщик Возр Автоупорядочивание

 

ОбработкаОдинаковыхЗначенийПорядка

Дополнительная настройка, которая на практике применяется крайне редко. Параметр имеет два значения: «Отдельно» (по умолчанию) и «Вместе».

Значение параметра «Отдельно» говорит о том, что записи с одинаковыми значениями упорядочивания будут выстроены в последовательность в любом случае. Последовательность будет определена согласно выводу данных в отчете.

Если значение параметра «Вместе», записи с одинаковыми значениями упорядочивания будут объединены. Например, при определении текущей записи, будут возвращены все строки со значением упорядочивания как у текущей. Предыдущая или последующая строки будут возвращены также с учетом объединения строк с одинаковым значением упорядочивания.   

 

Нюансы использования функции «ВычислитьВыражение»

Не стоит забывать, что функция «ВычислитьВыражение» совместно с агрегатной функцией, сама по себе уже является расчетом ресурса по некоторой группировке. По этому, если Вы указали для вычисляемого поля «Поле1» выражение следующего вида:

ВычислитьВыражение("Сумма(Количество)", "Товар",)

В выражении ресурса по этому полю не корректно использовать еще одну агрегатную функцию:

Сумма(Поле1)

В этом случае, по группировке «Товар», вы получите не корректные данные.

Правильным решением будет либо указание поля без агрегатной функции:

Поле1

Существует ограничение на использование полей содержащих функцию «ВычислитьВыражение» в групповых отборах.

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

ВычислитьВыражение("Сумма(Количество)", , "ОбщийИтог")

Для остальных выражений, например:

ВычислитьВыражение("Сумма(Количество)", , , "Первая", "Текущая")

При групповом отборе сообщения об ошибке выдаваться не будет. Но следует иметь в виду, что отбор будет выполняться только по текущей группировке, аналогично выражению:

ВычислитьВыражение("Сумма(Количество)")

Скорее всего отбор будет не тем, который ожидается.

Для корректной работы, необходимо указать настройку группового отбора «Применение = После группировки или для иерархии», или «Применение = Только иерархия».

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

Более подробно про настройку «Применение» групповых отборов смотрите в статье настройки вариантов отчетов.

Еще одно ограничение - функция «ВычислитьВыражение» не учитывает иерархические отборы примененные к группировкам.

 

ВычислитьВыражениеСГруппировкойМассив и ВычислитьВыражениеСГруппировкойТаблицаЗначений

Данные функции очень похожи. Разница состоит в том, что в первом случае возвращаются данные в виде массива, а во втором в виде таблицы значений. Также, вторая функция позволяет в выражении указать несколько полей, перечисленных через запятую. В этом случае, результирующая таблица будет содержать несколько колонок.

Остановимся подробнее на первой функции. Все рассмотренное будет справедливо и для второй.

Полный синтаксис функции следующий:

ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок) 

Общее описание функции:

Выполнить произвольное выражение в контексте группировок по всем разрезам, указанным в выражении полей группировки и выдать результирующие данные в виде массива.

В отличие от функции «ВычислитьВыражение», расчет происходит не по одной выбранной, или по набору выбранных группировок, а отдельно по каждому набору группировок, согласно указанным разрезам.

Для примера возьмем предыдущий отчет, и создадим новое вычисляемое поле:

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

Вычислить выражение с группировкой массив

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

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

Можно использовать данную функцию в выражениях итогов совместно с агрегатными функциями. Если нужно использовать разные агрегатные функции на разных уровнях группировок, можно использовать вложение одной функции в другую. Например так:

СУММА(ВычислитьВыражениеСГруппировкойМассив("СРЕДНЕЕ(ВычислитьВыражениеСГруппировкойМассив(""МАКСИМУМ(Сумма)"", ""Поставщик, Склад""))", "Склад"))

Или создать вычисляемое поле:

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

А в выражении итогов написать следующее:

СУММА(ВычислитьВыражениеСГруппировкойМассив("СРЕДНЕЕ(ВычисляемоеПоле)", "Склад"))

Подробнее про использование вложенных функций «ВычислитьВыражениеСГруппировкойМассив» смотрите в этой статье.

С групповыми отборами, ситуация аналогична функции «ВычислитьВыражение». Отбор по группировке на поле с выражением «ВычислитьВыражениеСГруппировкойМассив» будет работать корректно, только если используется настройка отбора «Применение = После группировки или для иерархии».

На заметку. В выражениях системы компоновки данных помимо внутренних функций, можно использовать экспортные функции серверных общих модулей (глобальных и не глобальных).

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

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

 

В следующих статьях будут рассмотрены:

Для ознакомления с предыдущими статьями можно перейти по ссылкам:

 

Спасибо за внимание.

Пишите комментарии, ставьте плюсы, подписывайтесь. Буду рад любой обратной связи.

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. ellavs 711 08.08.19 11:37 Сейчас в теме
Вот спасибо, только вчера искала решение по нестандартному итогу: нужно было сделать общий итог в виде суммы по группировкам, в которых итог рассчитывался как максимальное значение по группировке. Набегом не получилось. Снова попытаюсь с Вашей статьей :)
7. ids79 5513 08.08.19 16:28 Сейчас в теме
19. echo77 1156 19.08.19 15:51 Сейчас в теме
(1) нужно сделать двойное агрегирование: Сумма(Вычислить выражением группировкой массив())
20. ids79 5513 19.08.19 16:56 Сейчас в теме
(19)А это не двойное агрегирование. ВычислитьВыражениеСГруппировкойМассив - не агрегатная функция. А про вложенные функции написано кратно + ссылка на статью, где более подробно.
21. echo77 1156 19.08.19 17:02 Сейчас в теме
(20) сама по себе нет, но внутри, можно расположить агрегатную функцию
22. ids79 5513 19.08.19 17:49 Сейчас в теме
(21)Ну это да, в этом ее смысл. Если интересно про вложенные функции, посмотрите по ссылки из статьи.
2. wowik 786 08.08.19 11:43 Сейчас в теме
Спасибо! только вчера искал ВычислитьВыражение("Сумма(Количество)", , «ОбщийИтог»)
8. ids79 5513 08.08.19 16:30 Сейчас в теме
3. mvgfirst 5 08.08.19 11:44 Сейчас в теме
Давно ждал - что кто-то сделает описание с картинками )
И вот это свершилось )...
murat_; ids79; +2 Ответить
9. ids79 5513 08.08.19 16:31 Сейчас в теме
4. rpgshnik 2187 08.08.19 12:16 Сейчас в теме
Использовал, но так же пока сам не разобрался не понял :)
С картинками пример вообще супер!
ids79; SmArtist; +2 Ответить
10. ids79 5513 08.08.19 16:31 Сейчас в теме
5. Mx-RoN 08.08.19 12:40 Сейчас в теме
А есть возможность рассказать и про другие функции СКД и их практическое применение? Вроде таких как Корреляция, СтандартноеОтклонениеВыборки, Любой, КлассификацияABC и т.д.
TeMochkiN; scanner1980; +2 Ответить
11. ids79 5513 08.08.19 16:32 Сейчас в теме
(5)Планирую написать про агрегатные функции.
TeMochkiN; +1 Ответить
6. Aftee 08.08.19 13:28 Сейчас в теме
Само выражение задается в первом параметра функции

Опечатка
12. ids79 5513 08.08.19 16:35 Сейчас в теме
13. MishaD 14 09.08.19 16:26 Сейчас в теме
Ну вот, а я так надеялся узнать, что за штука такая - группировка не ресурса
14. Yashazz 3262 11.08.19 10:30 Сейчас в теме
Мегаспасибище! Вот наконец хоть кто-то занялся всерьёз.

Слушайте, а как плюс поставить??? Минус у меня поставился (когда тыркал) а плюс нифига. Куда щёлкать-то?
15. ids79 5513 11.08.19 11:32 Сейчас в теме
(14)Пожалуйста.
Нажимайте на плюс, и выбирайте раздел, в котором будет сохранена публикация, Загрузки или Избранное.
16. Yashazz 3262 12.08.19 10:50 Сейчас в теме
(15) Ага, спасибо, жмякнул.
Кстати, у меня лет 6 назад была иллюстрация работы "ВычислитьВыражение" на примере: https://infostart.ru/public/192746/
17. ids79 5513 12.08.19 20:32 Сейчас в теме
(16)Посмотрел, интересно.

П.С. А плюсик так и не поставили :))
18. Yashazz 3262 12.08.19 22:30 Сейчас в теме
(17) Поставил!!! Сделал, как Вы сказали!
23. djan 15.10.19 12:36 Сейчас в теме
Спасибо за статью - наглядно, доступно. Я вот давеча пробовал с помощью функции ВычислитьВыражение получить в итоге группировки значение последней строки из этой группировки. Так и не получилось у меня это сделать. Если знаете, подскажите пожалуйста, для общего развития..
24. ids79 5513 15.10.19 18:03 Сейчас в теме
(23)Посмотрите комментариях к этой статье Был такой же вопрос.
25. tireal 70 24.10.19 10:57 Сейчас в теме
"Если выражение рассчитывается по группировке, отбор записей выполняется на уровне этой группировки. Текущей в данном случае будет родительская группировка:" у меня выражение (разность дат между текущей строкой и предыдущей) рассчитывается без указания группировки (2 параметр), т. е. если верить описанию в контексте текущей группировки. В детальных записях все норм, но как только я пытаюсь получить по полученным в детальных записях значениям итоги (Сумма(Разность дат) - функция как понимаю игнорирует эти данные и в итог группировки рассчитывает как разность дат последней записи пред. группировки и первой текущей.

Как же мне посчитать итоги именно по значениям детальных записей кто скажет?
27. ids79 5513 24.10.19 13:23 Сейчас в теме
(25)Проблема в том, что на уровне группировки функция ВычислитьВыражение будет уже работать не с детальными записями, а с группировками.
В Вашем случае нужно в итогах сделать так:
СУММА(ВычислитьВыражениеСГруппировкойМассив("РазностьДат", "Документ")).
Документ - это любой реквизит из детальных записей.
Тогда расчет будет корректный.
28. tireal 70 24.10.19 14:20 Сейчас в теме
(27) да спасибо, уже нашел. Но! ) теперь какие то странные общие итоги...
Прикрепленные файлы:
29. tireal 70 24.10.19 15:32 Сейчас в теме
(27) убрал Сумма в СУММА(ВычислитьВыражениеСГруппировкойМассив("РазностьДат", "Документ")). - решил посмотреть из каких сумм складывается Общий итог - только первая совпадает с итогом по первой группировке а остальное ....

Буду очень признателен если поделитесь мыслями почему так может быть
Прикрепленные файлы:
30. ids79 5513 24.10.19 16:02 Сейчас в теме
(29)Да, не будет общий итог работать. Так как нарушается корректная последовательность для определения предыдущей записи.
Нужно сделать примерно как описано тут
Для общего итога отдельный расчет с вложенными друг в друга функциями ВычислитьВыражениеСГруппировкойМассив.
26. tireal 70 24.10.19 12:13 Сейчас в теме
вроде решил, вместо Сумма(Разность дат) в выражении итога нужно было Сумма(ВычислитьВыражениеСГруппировкойМассив(Разность дат))
31. lmnlmn 61 27.11.19 10:50 Сейчас в теме
Существует еще загадочное значение «ГруппировкаНеРесурса»...

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

Если кто-то использовал это значение, напишите, пожалуйста, в комментариях, очень интересно!

Намедни довелось прибегнуть с этому средству. Есть справочник с иерархией групп и элементов. Небезывестно, что с ними есть проблема с дублями при выводе иерархии. Так вот "ГруппировкаНеРесурса" берет значения ресурсов как раз из этих "дублей" и рисует их на уровне группировки.
У меня была задача вывести привязку пользователей к группам номенклатуры в виде кросс-таблицы где по горизонтали пользователи, а по вертикали группы номенклатуры с учетом их иерархии в справочнике. На пересечении "галочка" - булево. Что-то типа "все роли" в конфигураторе только еще с сохранением иерархии групп по строкам. "ГруппировкаНеРесурса" позволяет выводить "галочки" только в том случае, если у пользователя есть право на использование именно этой группы не взирая на дочерние. При других типах расчета мы получим "галочку" при наличии прав на любую из дочерних групп, что мне совершенно не годилось.

P.S. Извиняюсь за сумбур в описании. Понимать и исследовать как это работает совершенно некогда.
32. Shaldryn 16.12.19 09:47 Сейчас в теме
Спасибо за статью, у меня вопрос, как можно сделать чтобы для каждой группы выводилось их сумма как по элементам, так и по группе?
Прикрепленные файлы:
33. ids79 5513 16.12.19 10:11 Сейчас в теме
(32)Можно сделать отдельный расчет итогов для товаров и для Иерархии товаров.
Для иерархии использовать такую формулу:
ВычислитьВыражение("Сумма(Количество)", "Товар")
Shaldryn; +1 Ответить
34. Shaldryn 16.12.19 11:31 Сейчас в теме
(33) Да, получилось, спасибо большое
35. gorakh 25 31.01.20 11:23 Сейчас в теме
Есть колонка полученная пометодике описанной "итоги по строкам таблицы ресурсы, отличные от ресурсов в колонках таблицы" . Как можно испоьзовать результаты полученные в ней в контексте ВычислитьВыражение?
36. ids79 5513 04.02.20 09:35 Сейчас в теме
37. temdj 12 27.05.20 14:20 Сейчас в теме
Добрый день, Суммы это конечно хорошо) Не пойму, как можно сделать разность между текущей и предыдущей группировкой, чтобы получить дельту (отклонение) по периоду.
38. dmitryts 1 25.06.20 16:15 Сейчас в теме
Добрый день

В СКД уже могу многое, но вот эти функции никак не даются.
В приложении схема, которая пока у меня не работает. Вернее, не работают именно поля, которые рассчитываются этими функциями.
Если я убираю эти поля из группировки сделка, то все работает. А с ними получаю сообщение "Выражение не может быть вычислено ..."
Я так понимаю, программа пытается эти поля вычислить не для группировки Сделка...
Что не так?
Мне нужно вычислить Рентабельность по формуле (Выручка - СУММА (Затраты)) / Рентабельность

Я понимаю, что именно этот отчет можно посчитать и без этих функций. Но надо же когда-то начать! Поможете найти ошибку?
Прикрепленные файлы:
рентабельность.xml
39. ids79 5513 27.06.20 11:22 Сейчас в теме
(38)А зачем Вы добавляете эти поля в группировку "Сделка"?
Удалите их и добавьте как ресурсы, только без агрегатной функции.
Тогда не должно быть ошибки.
И еще, "ОбщийИтог" в формуле, по моему его там быть не должно.
40. user_2010 475 29.06.20 15:27 Сейчас в теме
Добрый день!
Кручу-верчу... запутать хочу :)
И так и эдак - не выходит каменный цветок...

Может быть, кто-то гуру этих самых функций подскажет как такое возможно настроить?

Нужно посчитать переработки и недоработки
Отчет в виде таблицы:
Колонки - группировка по месяцам + итого за весь период.
Строки - группировки по Организация, сотрудник.

При расчете итого за период - нужно сложить за все месяца переработки/недоработки и если
Всего по сотруднику за период > 0 = переработка,
Всего по сотруднику за период < 0 = недоработка.

А вот итоги по организации считаются как суммы значений по сотрудникам, в том числе и по колонке итоги по периоду.


Для примера с цифрами

Иванов январь всего переработка/недоработка = -10 (< 0 => это недоработка)
Иванов февраль всего переработка/недоработка = +7 ( > 0 => это переработка)

Иванов Итого за период = -3 (< 0 => это недоработка)

Петров январь всего переработка/недоработка = +8 ( > 0 => это переработка)
Петров февраль всего переработка/недоработка = -6 (< 0 => это недоработка)

Петров Итого за период = +2 ( > 0 => это переработка)

Табличка:

Январь Февраль Итого за период
Всего Недораб Перераб Всего Недораб Перераб Всего Недораб Перераб
Иванов -10 -10 +7 +7 -3 -3
Петров +8 +8 -6 -6 +2 +2
Итого по орг -2 -10 +8 +1 -6 +7 -1 -3 +2

Пробую настроить формулы для расчета итогов по периоду и организации - не получется.
для итого по периоду надо анализировать сумму и рассчитывать переработку или недоработку.
Для итогов по орг - надо просто найти сумму полученной колонки....

Возможно это настроить?

Спасибо!
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

1 стартмани

14.02.2015    100931    97    daMaster    90    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    3817    4    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    4369    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    7708    7    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

Управляемые формы уже давно и плотно вошли в жизнь 1С-разработчика. Однако, судя по недавним публикациям на Инфостарте, многие до сих пор мало знакомы с ними. Предлагаю разобраться с тем, что же это такое.

26.08.2013    263593    0    Evil Beaver    266    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    28414    3    CheBurator    62