СКД - очень мощная и удобная штука. Но зачастую, для решения некоторых вопросов, приходится изобретать что-то немыслимое. Вот и в данной публикации один из примеров.
Задача состоит в том, чтобы в иерархическом отчете на СКД, вывести нумерацию строк по иерархии. Например:
Проект 1.
Проект 1.1.
Проект 1.1.1.
Проект 1.1.2.
... и т.д.
Мне не хотелось заниматься нумерацией программно, как представлено в некоторых публикациях на инфостарте, а сделать это средствами СКД.
Так вот решение данного вопроса лежит в макете , точнее в оформлении поля, где можно в выражении писать что угодно.
Текст выражения выглядит так:
Выбор
когда Уровень()=0 Тогда
НомерПоПорядкуВГруппировке() // получаем номер группировка текущего уровня
когда Уровень()=1 Тогда
Строка(ВычислитьВыражение("НомерПоПорядкуВГруппировке()","Строка1")) // получаем номер группировки первого уровня
+ "." + Строка(ВычислитьВыражение("НомерПоПорядкуВГруппировке()")) // получаем номер группировка текущего уровня
когда Уровень()=2 Тогда
Строка(ВычислитьВыражение("НомерПоПорядкуВГруппировке()","Строка1")) // получаем номер группировки первого уровня
+ "." + Строка(ВычислитьВыражение("НомерПоПорядкуВГруппировке()","Строка2")) // получаем номер группировки второго уровня
+ "." + Строка(ВычислитьВыражение("НомерПоПорядкуВГруппировке()")) // получаем номер группировки текущего уровня
Конец
В примере представлен вариант для 3-х уровней отчета, собственно если отчет имеет больше уровней, то нужно будет дописать выражение по аналогии. В итоге получаем отчет вот такого вида.
Отчет разрабатывался на платформе 8.3.13.1644.