Доброго времени суток, коллеги.

Имеется TerrasoftCRM 3.3.2.245.

В отчетах FastReport я новичок, поэтому вопрос может показаться глупым: как настроить связь между двумя наборами данных? Свойство MasterDataset в наборе данных я нашел, а как указать состав полей по которым будет выполнятся связывание? По одинаковым именам полей в родительском и дочернем наборах данных связь по всей видимости тоже не устанавливается...

 

Нравится

2 комментария

Добрый день!

В отчете на FastReport  есть входящий параметр "сумма" хотелось бы ограничить возможность ввода до 2х знаков после запятой. Желательно именно во входящем параметре, чтобы пользователи физически не могли ввести более 2х символов после запятой.

Как это сделать, подскажите пожалуйста!



Заранее благодарен!

Нравится

2 комментария

Если речь о карточке ввода параметров отчёта, то нужно в разделе отчётов посмотреть, как называется его окно настроек, а затем в TSAdmin открыть эту карточку и вносить правки в свойства поля ввода.

Спасибо за ответ!

Прошу прощения, а где это?

Зверев Александр пишет:

в разделе отчётов

Я только начинающий ReportWriter.

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

Здравствуйте!
Подскажите пожалуйста как реализовать возможность экспорта отчета FR в xlsx. Доступно только xls, хоть в программе и прописаны все версии офиса. По большей части нужно для автоматического формирования и сохранения отчета. Если указывать в названии файла расширение xlsx - файл создается, но не открывается (((( На скрине - пользовательский экспорт отчета в Microsoft Excel.
Версия ТС - 3.4.0.38.
Спасибо!

Нравится

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

Светлана, используемый в Terrasoft движок FastReport является сторонним компонентом, влиять извне на его работу не всегда есть возможность. Если он не поддерживает сохранение в XLSX, то нельзя.

Можно попробовать следующие обходные решения:

  • Сохранять файл в XLS, потом отдельно конвертировать файлы с помощью Microsoft OFC.
  • Полностью переписать построение отчёта, вместо FastReport использовать чисто программное формирование при помощи COM-объекта Excel, там можно и XLSX.

"Зверев Александр" написал: Если он не поддерживает сохранение в XLSX, то нельзя.

Судя по форумам, вполне поддерживает. Возможно, вопрос в используемой версии в TS

Печально(( движок FR тоже ведь не заменить?
Спасибо!

В Terrasoft встроена конкретная версия движка. Возможно, по ссылке более новая.

Версия FR 4.10.18

А Владимир привёл ссылку на 5.5.9.

Менять встроенный движок нельзя.

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

Здравствуйте! Я в террасофте совсем новичок, только начинаю изучать. Версия ТС - 3.4.0.38. По форуму искала, вроде подходящего решения не нашла, либо не поняла что это "оно". Подскажите пожалуйста!
Была поставлена задача - по расписанию формировать файл с отчетом для Excel (есть аналог для работы пользователя в FR), выкладывать его в сеть и отправлять группе лиц.
Вроде как все решила через SQL, правда экселевский файл сформировала через spread xls на xml.
Несущественная проблема - при открытии на некоторых компьютерах ругается на несоответствие формата, с этим можно жить, но вот на телефонах этот файл не открывается в приложениях, но очень нужно.
В итоге встал вопрос о другом формате.. Возможно ли как то через sql или сам террасофт выполнить по расписанию формирование файла в формате xlsx или pdf (редактируемый)? Либо конвертацию сделать, может что-то вроде - открыть файл в sql через sp_OACreate 'Excel.Application', и сохранить его в xlsx..

Нравится

4 комментария

С помощью Terrasoft, также можно выполнить такую задачу, для этого необходимо на сервер создать задачу (Task Scheduler), которая будет запускаться по времени и вызывать Terrasoft командой TSClient.exe /wnd=wnd_ExportRep.

Где в окне wnd_ExportRep будет прописана логика экспорта.
Обратите внимание на сервисы scr_MSExcelLibrary, scr_MSExcelLibraryConsts, а также на сервис scr_UserReportCommon, в особенности на функцию GetExcelObject - которая возвращает Com объект на Excel.

Также можно изучить работу сервиса scr_ImportExcelWizardUtils, который автоматически создает отчеты в Excel, на основании его работы можете создать свой экспорт.

Хороший вариант! Спасибо! Правда мне очень много стоит изучить для реализации подобного..
А клиент терры будет открыватся на сервере или только процесс висеть? Если есть возможность подсказать подобные примеры решения буду очень признательна.

Пробовала запускать excel на террасофте через var ExcelApp = new ActiveXObject("Excel.Application");
но система выругалась на меня и клиент вылетел..

Можете взять мой пример запуска коннектора и создание Excel файла.
Алгоритм следующий:
1. Создайте файле с расширением js
2. Пропишите в нем следующий код:

function WSLog(LogText) {
	WScript.stdout.WriteLine(LogText);
}
 
function GetExcelObject() {
	var Excel = new ActiveXObject('Excel.Application');
	var Excel_wb = Excel.Workbooks.Add();
	Excel.Sheets(1).Name = "Данные";
	var SheetsCount = Excel.Sheets.Count;
	for (var i = 2; i <= SheetsCount; i++) {
		Excel.Sheets(2).Delete();
	}
	Excel.Visible = false;
	return Excel;
}
 
function Main() {
	var args = WScript.arguments;
	var ConfigurationName = "TS_3.4.1.113_XRM_SD_SoftKey_ENU_Tereshchuk";
	var AuthenticationMode = 1; //1 - DatabaseServer, 0 - Windows
	var UserName = "Supervisor";
	var UserPassword = "";
	var ExcelFileName = 'C:\\Temp\\TestExcel.xlsx';
	WSLog("Start!");
	var Connector =  new ActiveXObject('TSObjectLibrary.Connector');
	var Config;
	if (AuthenticationMode) {
		Config = Connector.OpenConfigurationByName(ConfigurationName, AuthenticationMode, UserName, UserPassword);
	} else {
		Config = Connector.OpenConfigurationByName(ConfigurationName, AuthenticationMode);
	}
	var Excel = GetExcelObject();
	Excel.Sheets(1).SaveAs(ExcelFileName);
	Excel.Visible = true;
	Connector.Logoff();
	WSLog("Finish!");
}
 
Main();

3. Создайте файл с расширением bat и пропишите в нем код:
%WinDir%/SysWOW64/cscript.exe /d D:\Projects\JS\RunTS.js

4. Запустите bat файл

Исходники: js.zip

Спасибо!
Так как задача была горящей, а 'Excel.Application' наотрез отказывается работать, временно решила через excelcnv.exe. Там правда очень много нюансов, за счет чего код получился совсем извращенным, но главное рабочим.. позже вернусь к приведению в нормальный вид ) попробую все-таки решить через террасофт по #1 предложенному ответу.

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

Добрый день,
по умолчанию fast report выводит данные в мастер дата бесконечно сверху вниз, как сделать чтобы он выводил бесконечно слева-направо ?

Нравится

2 комментария

Здравствуйте!

Это можно реализовать с помощью элемента управления Cross-tab object.

спасибо, попробую

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

Добрый день!

Достаточно тривиальная задача, но не могу разобраться с разбегу.

Создаю пользовательское окно фильтрации FastReport, само окно зависит от выбранного элемента.

Собственно, внимание вопрос: как получить ID выбранного элемента в окне фильтрации?

Нравится

4 комментария

Вы хотите выбрать в гриде запись и по ней строить отчёт?
Может, grdData.SelectedIDs?

Нет, не совсем. Запись уже строится, я редактирую пользовательское окно фильтрации FastReport.

То есть, запись УЖЕ выбрана и отчёт по ней УЖЕ строится стандартными средствами, но для фильтрации мне нужно поймать ID этой записи.

Логика запуска построения отчёта по выбранной записи определена в функции ReportMenuItemExecute в скрипте scr_ReportUtils. Насколько вижу, там вызывается одна функция ShowSelectedRecordsReport для отчёта по выбранным записям, но без окна фильтрации, а другая ShowReport — по всем записям, но с окном.

Можно специально для Вашего отчёта дописать третий случай — и с окном, и с выбранными записями. Например, передавать в окно отчёта wnd_BaseFastReportPreview ID записи или IDs записей, а затем в scr_BaseFastReportPreview передавать их в окно фильтрации.

Я сначала несколько удивился тому, что в окно не передаётся ID выбранных записей. Потом почитал исходники и выяснил, что таки передаются. ID банально берутся из Атрибута Self.

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

Добрый день!
Столкнулся со странным поведением отчетов Fastreport на Windows 8.
Прикрепляю две картинки (вторая этот же отчет на Windows 7).
Кто-нибудь сталкивался с подобным? и как с этим можно бороться?

Нравится

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

Здравствуйте, Валентин!

С подобной проблемой еще не сталкивались. Для первичного анализа сложившейся ситуации, необходимо локализовать проблему, а именно прошу, Вас, уточнить следующую информацию - воспроизводится ли еще данная ошибка на других отчетах Fastreport в Win 8? Если ошибка повторяется, то проблема в OS, если же нет - тогда сам отчет является проблемным. Если воспроизводится только на одном отчете, прошу прислать его сервисы для анализа.

Приятного дня!

Эта ошибка у меня воспроизводится на 2 компьютерах с установленной ОС Windows 8 и 8.1.
Она присутствует только в тех отчетах где используется компонент TfrxRichView. Добавляю сервисы отчетов.

Валентин, спасибо за уточняющую информацию. Мы протестируем работу отчетов на OS Win 8 и сообщим результат.

Приятного дня!

Здравствуйте, Валентин.

Проблему воспроизвести удалось.

Обращение передано в департамент разработки для анализа и возможного исправления.

По результату анализа сообщим отдельным постом в данной теме.

Здравствуйте, Валентин!

Ошибка связана с таблицей, которая используется в компоненте TfrxRichView.

Если убрать таблицу из данного компонента, то отчет под Windows 8 формируется корректно.

Вероятнее всего, имеет место быть определенное ограничение компонента в данной версии FastReport.

Изменить данный компонент нет возможности, т.к. это компонент стороннего продукта, в качестве обходного решения мы можем предложить не использовать таблицу в компоненте TfrxRichView, а вынести необходимые данные в отдельный компонент и выводить с помощью табуляции.

Для более глубокого анализа данной проблемы необходимо понимать, каким образом в компонент TfrxRichView была добавлена таблица и где она была создана (программный продукт и его версия).

А что за таблица?

Здравствуйте, Валентин.

Например:

[URL=http://fastpic.ru/][IMG]http://i66.fastpic.ru/big/2014/0714/6e/80378b6d…]

и

[URL=http://fastpic.ru/][IMG]http://i67.fastpic.ru/big/2014/0714/51/0068493e…]

Вероятнее всего, эти таблицы были скопированы из Word или Excel.

Попробуйте добавить нужные данные в отчет вручную:

[URL=http://fastpic.ru/][IMG]http://i65.fastpic.ru/big/2014/0714/b5/383b9ae6…]

Т.е. вы имеете ввиду форматирование а не какую-то определенную таблицу БД?

Валентин, да.

Я имею ввиду, что данные таблицы были, вероятно, скопированы Вами из Excel, Word в элемент RichText отчета.

Windows 8, по какой-то причине, некорректно воспринимает теги таблицы.

Потому в данный момент решением является использовать в элементе RichText не таблицу, а просто форматирование элементов.

Для корректного отображения отчета под Windows 8 подобных таблиц быть не должно.

Я понял, спасибо, попробую...

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

Добрый день!

Имеются ли видео-уроки или вебинары по созданию отчетов в FastReport? Если да, то скиньте, пожалуйста, ссылочку.

Нравится

3 комментария

Здравствуйте, Людмила!

Видео-уроки по построению отчетов FastReport отсутствуют, но есть несколько подробных инструкций с примерами.

Прикрепляю их к сообщению.

Спасибо большое!

Добрый день. А где бы эти прикрепленные инструкции найти?

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

Структура отчета такая:
MasterData: датасет "Продукт"
DetailData: датасет "Продукт в документе" (фильтруется по полю "Продукт")
SubdetailData: датасет "Продукт в документе 2" (это вообще другая таблица, чем "Продукт в документе")

Датасет "Продукт в документе 2" нужно отфильтровать не по одному полю, а по двум:
1) по полю "Документ", значение которого берется из поля "Документ" датасета из DetailData
2) по полю "Продукт", значение которого берется из поля "ID" датасета MasterData.

Как сделать так, чтобы датасет SubdetailData фильтровался по продукту и по документу?
Одним указанием MasterDataset у датасета SubdetailData эту проблему решить не получается.

Нравится

2 комментария

"Кошкаров Андрей" написал:Одним указанием MasterDataset у датасета SubdetailData эту проблему решить не получается.

А если одним указанием DetailDataset у датасета SubdetailData?

Получилось! :lol: Спасибо за подсказку. Добавил вывод колонки "Продукт" в датасете DetailData, а фильтр датасета SubdetailData подхватил ID продукта и подставил его в одноименный параметр. Разумеется, что в датасете SubdetailData были добавлены два включенных фильтра на сравнение - DocumentID и OfferingID.

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

Хочу сделать так, чтобы в отчете на нажатие, например, какой-то галочки, скрывались определенные элементы отчета, в частности, DetailData.
Я добавил CheckBox на страницу
чекбокс

и на событие OnPreviewClick реализовал следующий код:

  ShowMessage('Hello!');
  CheckBox1.Checked := false;
  DetailData1.Visible := false;

событие

То есть, этот код, по идее, должн вывести сообщение, снять отметку с CheckBox и сделать невидимой деталь DetailData1.
В итоге, сообщение выводиться, а вот сам компонент CheckBox не изменяется и деталь не становиться невидимой.

Подскажите, как это можно сделать?

Пробовал в этом же событии использовать
Report.ShowReport;
но сбрасывается фильтр по продукту, для которой я строю этот отчет, и выводится информация для всех продуктов

Нравится

2 комментария

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу/

Андрей, когда отчет отображается на экране в окне предпросмотра, точнее когда работает OnPreviewClick уже поздно менять свойство Visible, так как отчет прорисовался. Чтобы скрыть DetailData потребуется перестроить отчет.
Не нашла готового решения, но возможно Вам помогут обсуждения подобных вопросов на форуме FastReport:
http://www.fast-report.com/ru/forum/index.php?showtopic=8183&hl=OnPreviewClick
http://www.fast-report.com/ru/forum/index.php?showtopic=5915&hl=OnPreviewClick

Самый простой вариант - решить вашу задачу в обработчике события OnBeforePrint бенда (но в таком случае не будет привлекаться клик на CheckBox).

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