Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 09:25

Определение Уровня в СКД

Автор GreatShamr, 22 ноя 2012, 18:20

0 Пользователей и 1 гость просматривают эту тему.

GreatShamr

Всем хорошего настроения!
Есть задачка: написать различные расчеты в Пользовательском поле (или Вычисляемых полях, Макетах, где угодно) в зависимости от значения СистемныеПоля.Уровень, только Уровень нужен последний. Например, задачка: есть строки Дом, Квартира, столбцы Дата и ресурсы Количество и Возраст (жильцов). Нужно на самом нижнем уровне вывести значение Количество*Возраст, а на остальных Сумма( Количество*Возраст)/Сумма( Количество). Пользователи могут переставить на самый нижний уровень, например, Дом, или добавить поля Улица или Район, т.е. нельзя в Вычисляемых полях сказать:"Расчет для квартиры" или указать уровень заранее:
Выбор
Когда СистемныеПоля.Уровень = 3
Тогда Количество*Возраст
Иначе Сумма( Количество*Возраст)/Сумма( Количество)
Конец


Нужно что-то типа:
Выбор
Когда СистемныеПоля.Уровень = ПОСЛЕДНИЙУРОВЕНЬ
Тогда Количество*Возраст
Иначе Сумма( Количество*Возраст)/Сумма( Количество)
Конец

только вот определить этот ПОСЛЕДНИЙУРОВЕНЬ не получается.
Какие варианты могут предложить Уважаемые форумчане?  :dfbsdfbsdf:

has

А если выбрать максимальный уровень и поместить результат во временную таблицу? Или я не правильно понял?

GreatShamr

Цитата: has от 23 ноя 2012, 08:19
А если выбрать максимальный уровень и поместить результат во временную таблицу? Или я не правильно понял?
Спасибо за ответ, но я, видимо, неточно обрисовал картину.
Проблема на этапе вывода результата пользователю: в "Пользовательском поле" не получается понять, сколько всего уровней сейчас выводится: в моём примере выведено 2 уровня, добавил Пользователь Улицу и Район - уровней стало 4, поставил Район на "самый низ" - Уровней 4, но последним стал Район вместо Дома.
К сожалению, конструкция Максимум(СистемныеПоля.Уровень) тоже не работает :fdbsdfbsd:
Добавлено: 23 ноя 2012, 12:35


В общем, сделал не совсем штатными средствами. Если кто знает более красивое решение - буду рад увидеть.
Итак, что я сделал:

  • В параметры отчета добавил поле "ВсегоУровней"
  • На форме отчета перед компоновкой отчета вставил рекурсивное определение количества строк в структуре (кому интересно - подебажьте КомпоновщикНастроек.Настройки.Структура.Получить(0).Строки.Получить(0).Структура.Получить(0).ПоляГруппировки) и присваивание параметру "ВсегоУровней" этого количества строк
  • В отчете смотрю "ПараметрыДанных.ВсегоУровней"
и всё - задача решена!
Всем успехов!

Теги: скд Уровень 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск