Вызов отчета Fast Report из скрипта?

Всем привет.

Собственно, вопрос в заголовке. Поиск показал, что есть решение для отчетов в Word, а вот о Fast Report я не нашел ни слова. Наверняка должно быть решение.

Спасибо.

Нравится

7 комментариев

Должен помочь поиск по функции ShowSingleRecordReport

Спасибо, Сергей!

Не могу понять, что мешает системе включить фильтр по ID:

	var OrderID = dlData.Dataset.Values('ID');
	var Report = Services.GetNewItemByUSI(ReportCode);
	var ReportPreviewer = Services.GetNewItemByUSI('wnd_BaseFastReportPreview');
	var ReportPreviewerComponent = ReportPreviewer.Attributes('ReportPreviewer');
	var ReportDataset = Services.GetNewItemByUSI(FilteredDatasetCode);
	SetAttribute(ReportPreviewer, 'Report', Report);
	ApplyDatasetFilter(ReportDataset, 'ID', OrderID, true);
	ReportPreviewer.Build();
	ReportPreviewer.Prepare();
	ReportPreviewerComponent.DatasetByUSI(FilteredDatasetCode) = ReportDataset;

То есть, получаю отчёт по первой записи в датасете вместо нужной, запрос в профайлере ловлю без условий выборки. ID перед включением фильтра правильный. Отчёт в системе зарегистрирован.

Отчётов у меня несколько типов и, что удивительно, на одном из них вызов отчета из скрипта замечательно работает, включая фильтр. Найти какие-то отличия этого отчета от остальных не удалось.

Версия клиента 3.2.043. Обряд с бубном провожу по инструкции. :D

Сергей, можно уточнить: в основном запросе Вашего отчёта главная таблица - это таблица раздела, или другая? Если второе, попробуйте переписать запрос таким образом, чтобы главной таблицей запроса была таблица раздела. Например, для раздела "Контакты":

select ... 
from tbl_Contact 
  left outer join tbl_ContactAddress...

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Да, главная таблица — таблица раздела, tbl_Opportunity.

Я так понимаю, Вы написали свою функцию для вызова отчёта? Возможно, результат её работы перекрывается базовым функционалом. Для установления причины проблемы необходима дополнительная информация: откуда и каким образом вызывается отчёт. Возможно, понадобятся сервисы отчёта либо удалённый доступ для анализа проблемы, если это возможно.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Да. На форму wnd_OpportunitiesGridArea добавлена кнопка с таким кодом:

function btnPrintOnClick(Control) {
	var ReportCode = 'fr_buyNaturalPersonOther';
	var FilteredDatasetCode = 'ds_buyNaturalPersonOther';
	var OrderID = dlData.Dataset.Values('ID');
	var Report = Services.GetNewItemByUSI(ReportCode);
	var ReportPreviewer = Services.GetNewItemByUSI('wnd_BaseFastReportPreview');
	var ReportPreviewerComponent = ReportPreviewer.Attributes('ReportPreviewer');
	var ReportDataset = Services.GetNewItemByUSI(FilteredDatasetCode);
	SetAttribute(ReportPreviewer, 'Report', Report);
	ApplyDatasetFilter(ReportDataset, 'ID', OrderID, true);
	ReportPreviewer.Build();
	ReportPreviewer.Prepare();
	ReportPreviewerComponent.DatasetByUSI(FilteredDatasetCode) = ReportDataset;
}

Сервисы отчета в аттаче.

Сергей, не удалось воспроизвести описанную Вами проблему. Пытался воспроизвести на бинарных файлах версии 3.2.0.43 - отчёт всегда строится по нужной записи реестра, независимо от того, вызывается ли он из карточки редактирования или же напрямую из раздела (кстати говоря, если отчёт должен вызываться только из карточки редактирования, нет необходимости регистрировать его в системе). Единственное, что могу сказать, - в предоставленном Вами коде названия сервисов fr_buyNaturalPersonOther и ds_buyNaturalPersonOther, в то же время в предоставленных Вами сервисах те же названия - fr_BuyNaturalPersonOther и ds_BuyNaturalPersonOther. Возможно, в этом проблема?

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Показать все комментарии