Отчет Excel как сделать динамические колонки в зависимости от выбранных фильтров в стандартном окне фильтров билд:Terrasoft sales 3.3.2.173.
И в теме https://community.terrasoft.ua/blogs/7302 был вопрос почему не загружается шаблон Excel, и ответ, "Проблема с сохранением шаблона для отчета была решена в ходе удаленного подключения." можно по подробней что нужно сделать?
"Скрипка Александр Леонидович" написал:Отчет Excel как сделать динамические колонки в зависимости от выбранных фильтров в стандартном окне фильтров
опишите подробнее.
Что касается загрузки шаблона: протестировала корректность загрузки шаблона по предложенной в теме http://www.community.terrasoft.ua/blogs/7302 реализации. Окно выбора позволяет выбрать и загрузить файл MS Excel:
1.Создал отчет Excel, в нем разных 23 колонки настроил фильтры пользователя, каждый фильтр соответствует колонке в отчете.
Так вот нужно чтоб колонки выводились только те которые отмечены в фильтре пользователем 2. Загрузил сервисы предложенные в теме http://www.community.terrasoft.ua/blogs/7302 т.к. билд sales 3.3.2.173 не имеет возможности загружать шаблон Excel, но столкнулся с тем что создать шаблон Excel могу , а загрузить нет. Ошибок никаких нет но при запуске отчета выводит собственную форму, а не мой шаблон.
Дело в том, что отчет по шаблону следует запускать только из раздела. Тогда он будет работать по шаблону, а в разделе "Отчеты" по нажатию на "Просмотр отчета" будет выводится лишь результат запроса в ексель файле.
Единственная проблема, которую я я нашел, это то, что шаблон нельзя загрузить в отчет.
Для исправления этой проблемы, добавьте строку Dataset.Post(); в функцию function DoTemplateFileOperation(Dataset, DataFieldName, IsSavingOperation) скрипта wnd_ExcelReportEditScript:
Далее, создайте шаблон, вставьте необходимые Вам поля из запроса в сам ексель файл, сохраните его на жесткий диск, а потом воспользуйтесь кнопкой "Загрузить шаблон в базу", выбрав нужный файл на жестком диске.
После этого, просто закройте окно со свойствами отчета, перейдите в раздел, для которого создан отчет, и вызовите его через меню "Отчеты".
Алгоритм действий такой:
1. В функции function btnOKOnClick(Control) сервиса wnd_ReportFiltersScript в блоке
switch(ReportSourceTypeID){case rstExcel:break;
реализовать запись включенных фильтров окна фильтрации в атрибуты.
Для этого следует создать функцию, подобную AddReportAttributes, в которой реализовать передачу названий полей фильтра в атрибуты.
2. В функции wnd_BaseWorkspaceOnNotify скрипта scr_BaseWorkspace, в блоке кода
if(Message == MSG_QUERYFILTERWINDOW_EXCELMODE_OK){
var QueryBuilderData = Sender.Attributes('QueryBuilderData');
ShowExcelReport(QueryBuilderData, null, Self);return;}
Считать значение переданных на предыдущем шаге атрибутов (по аналогии со строкой Sender.Attributes('QueryBuilderData')).
3. Затем модифицировать функции ShowExcelReport, CreateExcelDataBand добавив еще один параметр с атрибутами.
Основная цель сводится к тому, чтобы в функции построения полей отчета выполнять сравнение: входит название поля в массив названий полей фильтра (из атрибутов), если входит – прорисовывать поле, иначе – нет.