вызов отчета FR

как вызывается отчет FR?
например я на форме сделал кнопочку. мне надо как-то вызвать отчет f_myAccount

как это сделать?

Нравится

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

Здравствуйте!
Отчеты обычно вызываются в раскрывающемся списке в разделе. Посмотрите, там слева вверху. А чтобы отчет там появился, его сначала нужно зарегистрировать в системе в разделе Отчеты (прописать датасет, название отчета выбрать, написать название раздела). Потом презагрузить Terrasoft. Вам такое не подходит?

а как из скрипта взвать такой отчет?

Добрый день, Павел!

Предлагаю Вам пример кода для показа отчета из скрипта (без формы фильтрации и предварительных фильтров):

	var ReportService = Services.GetNewItemByUSI('fr_MyReport'); // здесь будет код Вашего отчета
	var ReportPreviewer = Services.GetNewItemByUSI('wnd_BaseFastReportPreview');
	ReportPreviewer.Attributes('Report') = ReportService;
	ReportPreviewer.Build();
	ReportPreviewer.Prepare();

А можно расширить задачу? Есть раздел Счета. Пользователям привычнее выводить нужны счет напечать (вызов отчета с нужной формой, а затем печать) правым кликом на строке в Гриде. Как вызвать отчет, который будет сформирован только для выделенной записи, а в идеале для всех выделенных записей? Можно ли для этого как-то использовать функции ShowSingleRecordReport и ShowSelectedRecordsReport? У меня не получилось. В любом случае при вызове отчета он формируется для ВСЕХ счетов, которые имеются в базе. Вот код:

В окне wnd_InvoiceGridArea в выпадающее меню добавлен еще один пункт, на который повешан вот этот обработчик:

	var ReportUSI = 'fr_ReportInvoiceWithNDSRussia';
	var FilteredDatasetUSI =  'ds_Invoice';
        var SelectedIDs = grdData.SelectedIDs;
	ShowSelectedRecordsReport(ReportUSI, FilteredDatasetUSI, SelectedIDs);

Ну так как? Как решить эту проблему? Очень нужно.

Проблему решил сам. Нужно было изменить только одну строчку. Обработчик на новом пункте меню теперь выглядит вот так:

	var ReportUSI = 'fr_ReportInvoiceWithNDSRussia';
	var FilteredDatasetUSI =  'ds_ReportInvoiceWithNDSForRussia';
        var SelectedIDs = grdData.SelectedIDs;
	ShowSelectedRecordsReport(ReportUSI, FilteredDatasetUSI, SelectedIDs);

Загвоздка оказалась в том, что в качестве FilteredDatasetUSI нужно указывать датасет самого отчета, а не грида. Отчет накладывает фильтрацию именно на свой датасет, а вот ID-шники выбранных записей беруться из датасета грида.

Если брать мой случай, то отчет fr_ReportInvoiceWithNDSRussia берет список выбранных записей из грида grdData, который прицеплен к окну wnd_InvoiceGridArea, затем, этот список накладывается как фильтр на датасет ds_ReportInvoiceWithNDSForRussia и в результате получаем нужный отчет.

Получили тот функционал, который и требовался: пользователь в списке отчетов щелкает провой кнопкой на нужном счете и выбирает пункт "Печать счета". Это гораздо удобнее и привычнее, чем выбрать счет в списке, а потом лезть в левый верхний угол окна, чтобы отправть счет на печать в нужном виде.

Здравствуйте!
Я воспользовался кодом, приведенным Дмитрием, но отчет вызывается без вызова стандартной формы фильтрации Dataset. Как это устранить?

Владимир, попробуйте следующий код:

var ReportUSI = 'fr_AccountContacts';
    var Report = Services.GetNewItemByUSI(ReportUSI);    
    ShowReport(Report);

Спасибо! Получилось.

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