1С 8.3 : Функции языка выражений системы компоновки данных (СКД) ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений

Автор: | 08.05.2019

ВычислитьВыражениеСГруппировкойМассив (EvalExpressionWithGroupArray) – функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.

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

Параметры:

  • Выражение (Строка) – выражение, которое нужно вычислить. Например, “Сумма(СуммаОборот)”;
  • ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, “Контрагент, Партия”;
  • ОтборЗаписей – выражение, применяемое к детальным записям. Например, “ПометкаУдаления = Ложь”. Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
  • ОтборГруппировок – отбор, применяемый к групповым записям. Например: “Сумма(СуммаОборот) > &Параметр1”.

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

Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функция ВычислитьМассивСГруппировкой генерирует выводимое выражение таким образом, чтобы данные выводить представления и данные были упорядочены.
Например, для пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Представление(Сумма(НаборДанных.СуммаОборот)), Сумма(НаборДанных.СуммаОборот)", "НаборДанных.Контрагент"), "2")))

ВычислитьВыражениеСГруппировкойТаблицаЗначений (EvalExpressionWithGroupValueTable) – функция возвращает таблицу значений, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.

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

Параметры:

  • Выражение (Строка) – выражение, которое нужно вычислить. В строке может быть перечислено несколько выражений через запятую. После каждого выражения может быть необязательное ключевое слово КАК и имя колонки таблицы значений. Например: “Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж”.
  • ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, “Контрагент, Партия”;
  • ОтборЗаписей – выражение, применяемое к детальным записям. Например, “ПометкаУдаления = Ложь”. Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
  • ОтборГруппировок – отбор, применяемый к групповым записям. Например: “Сумма(СуммаОборот) > &Параметр1”.

Пример:
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент КАК Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж", "Контрагент")

Результатом работы данной функции будет таблица значений с колонками Контрагент и ОбъемПродаж, в которых будут находиться контрагенты с их объемами продаж.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.
Например, пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент, Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(ПолучитьЧасть(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("НаборДанных.Контрагент, НаборДанных.КонтрагентПредставление, Сумма(НаборДанных.СуммаОборот), Представление(НаборДанных.СуммаОборот), НаборДанных.ПолеУпорядочивание", "НаборДанных.Контрагент"), "5, 1, 3"), "2, 4"))

Copyright © ООО “1С”

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *