Использование setHeight, как фильтра в табличных отчётах

preview_player
Показать описание
#nanoCAD #Autocad #Table #Функции
Часто, при оформлении документации, возникает необходимость быстрого получения отчётов и спецификаций по разным критериям. Иногда, простейшая операция по изменению отчёта в таблице, вызывает у конечного пользователя затруднения и, как следствие, он вынужден заполнять спецификацию и вести учет объектов на чертеже в ручном режиме.
Рассмотрим на простом примере, в котором в поставщика исходных данных будет «Универсальный маркер» с разными полями.
00:00 Открываем на редактирование «Универсальный маркер» и проверяем какие в нем есть атрибутивные данные
00:19 Открываем форму на редактирование:
00:21 Атрибут sColor использует элемент управления «Поле со списком из базы». Для проверки нажмём на кнопу с тремя точками радом с названием и, в редакторе коллекций посмотрим содержание списка «Цвет»
00:44 Выбираем таблицу и, двойным щелчком, открываем Табличный редактор
00:52 Выбрав ячейку в колонке “F” строки отчета, зажимаем правую клавишу мыши и ведем курсор вверх
00:53 В открывшемся «Построителе выражений» видим переменные sValue и TestColor, которые используются в этой ячейке.
01:07 Для удобства пользователя эти переменные определены на «Пользовательской форме» таблицы
01:12 Переменной TestColor назначен элемент управления «Поле со списком из базы», который. В свою очередь может использовать тот же список в редакторе коллекций «Цвет»
01:23 Переменная sValue использует простое «Поле со списком» в тором мы можем ввести и сохранить любые необходимые значения. В нашем случае «Равно» и «НЕ равно»
01:32 Еще раз открываем «Построитель выражений». Тут идет простая проверка: Если значение переменно sValue в котроле определено как «Равно» sValue=="Равно", то для всех строк, у которых значение атрибута «Универсального маркера» Object.sColor совпадает со значением элемета управления формы для переменно TestColor устанавливаем высоту строки setHeight «8» мм. Для всех остальных высота строки будет «0» мм. iff(Object.sColor==TestColor;setHeight(8);setHeight(0)). Если условие sValue=="Равно" не выполняется, то переходим к аналогичному вычислению строки, только вместо «==» у нас будет «!=» Object.sColor!=TestColor и , соответственно все строки будут высотой «8» мм.
01:51 Проверяем условие «Группировки и объединения»
01:55 В качестве условия сортировки задаём тот же список значений «Цвет» из «Редактора коллекций»
02:17 Колонка «С» строки отчета у нас вычисляет количество объектов , попавших, по условиям в данную строку iff(sValue=="Равно";iff(Object.sColor==TestColor;Count();0);count()), но само становится значимым только при выполнении данного условия
Проверяем работу отчёта
Рекомендации по теме