Состав измерений группировки СКД

1. frkbvfnjh 787 16.01.20 12:01 Сейчас в теме
Доброго времени суток! Может кто то знает как получить состав измерений группировки СКД? Допустим, есть отчет с группировками Организация/Контрагент/Склад/Номенклатура/ДитальныеЗаписи, и я хочу вызвать функцию из общего модуля которая рассчитывает какое либо значение в зависимости от группировки в которой рассчитывается итог, т.е. на вкладке "Ресурсы" макета компоновки данных в колонке "Выражение" я прописываю функцию из общего модуля, и вот тут то, мне нужно как то понять по каким измерениям мне нужно выполнить расчеты. К примеру нужно рассчитать остатки по регистру накопления в зависимости от группировки (расчеты гораздо сложнее, такой пример привел для простоты понимания) - если итог рассчитывается в группировке Организация/Контрагент/Склад/Номенклатура, то получить остатки в разрезе Организация, Контрагент, Склад, Номенклатура, если итог рассчитывается в группировке Организация/Контрагент/Склад, то получить остатки в разрезе Организация, Контрагент, Склад, и т.д. Что то не могу понять как такое сделать :( Заранее спасибо!
По теме из базы знаний
Найденные решения
9. frkbvfnjh 787 16.01.20 14:06 Сейчас в теме
(6) Спасибо за подсказку. Решил проблему следующим образом:
в выражении ресурса указал
ОбщийМодуль.ОстаткиПоРазрезам(ВычислитьВыражение("Организация", "Организация"), ВычислитьВыражение("Склад", "Склад"), ВычислитьВыражение("Номенклатура", "Номенклатура"))

И если расчет ведется в группировке Организация/Склад/Номенклатура, то все 3 параметра приходят заполненными, если же расчет происходит в группировке Организация/Склад, параметр Номенклатура равен Null, и таким образом я понимаю в какой группировке нахожусь. Кроме того, в моем случае изменение группировки в отчете никак не повлияет на расчеты, т.к. по сути мне нужен состав разрезов, а их последовательность в группировке отчета не важна.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lmnlmn 69 16.01.20 12:06 Сейчас в теме
Еще интереснее будет когда пользователь поменяет группировку в отчете. Вообще в ресурсах можно настроить по каким группировкам их рассчитывать и это можно использовать. Хотя ваша идея мне не по душе. Слишком сложно все выглядит в первом приближении.
4. frkbvfnjh 787 16.01.20 12:09 Сейчас в теме
(2) Да, забыл упомянуть, что группировку действительно могут изменить, к примеру поменять местами группировку Склад/Номенклатура, Номенклатура/Склад. Поэтому и нужно как то понять в какой группировке я нахожусь
3. user623969_dusa 16.01.20 12:09 Сейчас в теме
я создавал макет поля и в его расшифровку помещал нужные поля

Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
	СтандартнаяОбработка = Ложь;
	ПоляРасшифровки = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля();
	Если ПоляРасшифровки.Количество() = 5 Тогда
//здесь мы получили поля и делаем с ними что хотим
//		Для каждого Поле Из ПоляРасшифровки Цикл
//			Поле.Поле = Поле.Значение;
//		КонецЦикла;
	КонецЕсли;
КонецПроцедуры
Показать
5. frkbvfnjh 787 16.01.20 12:13 Сейчас в теме
(3) Интересно, сейчас попробую "переварить"...
6. alekshihanov 16.01.20 12:13 Сейчас в теме
ВычислитьВыражение("Сумма(Сумма)", "Поставщик", ,"Предыдущая", "Текущая")
тут
VmvLer; frkbvfnjh; +2 Ответить
7. frkbvfnjh 787 16.01.20 12:18 Сейчас в теме
(6) Какое совпадение - только что смотрел данную публикацию, надеялся решить данную проблему с помощью функций СКД, но не могу понять как в моем случае пользоваться функцией ВычислитьВыражение
9. frkbvfnjh 787 16.01.20 14:06 Сейчас в теме
(6) Спасибо за подсказку. Решил проблему следующим образом:
в выражении ресурса указал
ОбщийМодуль.ОстаткиПоРазрезам(ВычислитьВыражение("Организация", "Организация"), ВычислитьВыражение("Склад", "Склад"), ВычислитьВыражение("Номенклатура", "Номенклатура"))

И если расчет ведется в группировке Организация/Склад/Номенклатура, то все 3 параметра приходят заполненными, если же расчет происходит в группировке Организация/Склад, параметр Номенклатура равен Null, и таким образом я понимаю в какой группировке нахожусь. Кроме того, в моем случае изменение группировки в отчете никак не повлияет на расчеты, т.к. по сути мне нужен состав разрезов, а их последовательность в группировке отчета не важна.
10. frkbvfnjh 787 16.01.20 14:07 Сейчас в теме
(6) До написания вопроса на форуме я рассчитывал на тот же результат вызывая функцию без "прогона" через ВычислитьВыражение:
ОбщийМодуль.ОстаткиПоРазрезам(Организация, Склад, Номенклатура)

но в этом случае все параметры, всегда были заполнены, во всех группировках, причем каким то хаотическим образом, а функция ВычислитьВыражение все поставила на свои места
8. frkbvfnjh 787 16.01.20 12:25 Сейчас в теме
Может с помощью функций СКД можно как-то получить имя текущей и выше стоящих группировок?
11. frkbvfnjh 787 16.01.20 15:47 Сейчас в теме
Всем спасибо! Решил проблему с помощью функции СКД ВычислитьВыражение (см. выше), этот вариант мне показался самым простым.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот