как вызывается отчет FR?
например я на форме сделал кнопочку. мне надо как-то вызвать отчет f_myAccount
как это сделать?
Нравится
Здравствуйте!
Отчеты обычно вызываются в раскрывающемся списке в разделе. Посмотрите, там слева вверху. А чтобы отчет там появился, его сначала нужно зарегистрировать в системе в разделе Отчеты (прописать датасет, название отчета выбрать, написать название раздела). Потом презагрузить 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);