Добрый день!
Задача следующая: по кнопке из карточки задачи выгружать отчет с данными из этой карточки.
Вообще отчет нужно выгрузить в эксель, но можно сделать промежуточную стадию через фастрепорт.
Вопрос в том, как по нажатию кнопки на карточке вызвать создание отчета и передать в него id задачи (не через окно фильтрации).
И можно ли из грида выгрузить данные в эксель "вертикально":
поле1 значение1
поле2 значение2
...
Нравится
А Excel-отчёт уже существует или его надо делать? Если второе - то по этой кнопке нужно самостоятельно программировать открытие Excel, вывод в нужные ячейки значений и т.д. Есть библиотека scr_ExcelUtils, которая упрощает типовые операции при разработке отчёта.
Здравствуйте!
Елена, вот пример вызова отчета FastReport из кода:
var Report = Services.GetNewItemByUSI('fr_YourReport'); var ReportPreviewer = Services.GetNewItemByUSI('wnd_BaseFastReportPreview'); var ReportPreviewerComponent = ReportPreviewer.Attributes('ReportPreviewer'); var ReportDataset = Services.GetNewItemByUSI('ds_ReportDataset'); SetAttribute(ReportPreviewer, 'Report', Report); ApplyDatasetFilter(ReportDataset, 'ID', dlData.Dataset.Values('ID'), true); ReportPreviewer.Build(); ReportPreviewer.Prepare(); ReportPreviewerComponent.DatasetByUSI('ds_ReportDataset') = ReportDataset;
По поводу второго варианта возможно Вам подойдет следующий функционал?
http://www.community.terrasoft.ua/blogs/7302
В случае собственного окна фильтрации и вывода отчета для всех записей делаем так :
var Report = Services.GetNewItemByUSI('fr_FastReportName'); var ReportPreviewer = Services.GetNewItemByUSI('wnd_BaseFastReportPreview'); var ReportPreviewerComponent = ReportPreviewer.Attributes('ReportPreviewer'); var ReportDataset = Services.GetNewItemByUSI('ds_DatasetName'); var FilterForm = Services.GetNewItemByUSI('wnd_FilterWindowName'); SetAttribute(ReportPreviewer, 'Report', Report); //ApplyDatasetFilter(ReportDataset, 'ID', dlData.Dataset.Values('ID'), true); SetAttribute(ReportPreviewer, 'FilterForm', FilterForm); SetAttribute(ReportPreviewer, 'ShowFilterForm', true); ReportPreviewer.Build(); ReportPreviewer.Prepare(); ReportPreviewerComponent.DatasetByUSI('ds_ReportDataset') = ReportDataset;