Публикация

С PDF generator построение сложных отчетов и печатных форм становиться легким! Дополнение обладает большим набором инструментов, за счет чего значительно уменьшает затраты времени на создание документов и отчетов разной степени сложности в форматах Excel, PDF, HTML.

Возможности:

  • удобный интерфейс настройки шаблонов в вашем браузере;
  • математические и логические выражения, тернарные, арифметические, побитовые операторы, операторы сравнения, функции для суммирования, объединения;
  • возможность применять различные стили в зависимости от типа данных;
  • применение фильтров к данным перед процессом выгрузки отчета;
  • объединение и связывание данных из разнородных источников, слияние, сводные таблицы, группировка данных;
  • программировать пользовательские макросы;
  • любые форматы дат и цифр;
  • генерация отчетов и выгрузка в формате Excel, PDF, HTML;
  • простая и понятная настройка печатных форм и таблиц;
  • возможность добавления графиков, диаграмм, гистограмм и т.д.;
  • возможность добавления изображений из базы данных;

 

Установить и попробовать можно по ссылке на маркетплейс

Более детально ознакомиться с возможностями можно по ссылке

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

Есть Террасофт 3.3.2

Не понятно как вывести стандартную форму фильтрации для отчета FastReport и как указать в это форме по каким поля фильтровать

У меня такой же вопрос

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

См., как сделано в стандартном отчёте «Взаиморасчеты», используемом в разделах «Контрагенты» и «Операции». Там есть карточка wnd_MutualSettlements, в её скрипте wnd_MutualSettlementsScript при нажатии «ОК» срабатывает код, где налагаются фильтры и запускается отчёт:

function btnOkOnClick(Control) {
	if (edtStartDate.IsNull || edtDueDate.IsNull) {
		ShowWarningDialog("Поле \"Дата с\" и \"дата по\" являются обязательным для заполнения");
		return false;
	}
	var StartDate = new Date(edtStartDate.Value);
	var DueDate = new Date(edtDueDate.Value);
	if (StartDate.getTime() > DueDate.getTime()) {
		ShowWarningDialog("Поле \"Дата с\" не может быть дольше поля \"дата по\"");
		return false;
	}
	StartDate.setHours(0, 0, 1);
	DueDate.setHours(23, 59, 59);
	edtMultiSelectOnChange(edtDebtorCreditor);
	var ds_AccountInMutualSettlements = 
		MutualSettlementsScript.ReportPreviewer.DatasetByUSI('ds_AccountInMutualSettlements');
	ds_AccountInMutualSettlements.Close();
	var ds_MutualSettlements = 
		MutualSettlementsScript.ReportPreviewer.DatasetByUSI('ds_MutualSettlements');
	ds_MutualSettlements.Close();
	EnableDatasetFilters(ds_AccountInMutualSettlements, false);
	EnableDatasetFilters(ds_AccountInMutualSettlements, true, 'IsActual');
	EnableDatasetFilters(ds_MutualSettlements, false);
	EnableDatasetFilters(ds_MutualSettlements, true, 'IsActual', 'DebtorCreditorID');
	MutualSettlementsScript.Report.Attributes('StartDate') = DateToStr(StartDate);
	MutualSettlementsScript.Report.Attributes('DueDate') = DateToStr(DueDate);
	ApplyDatasetFilter(ds_AccountInMutualSettlements, 'StartDate', 
		StartDate.getVarDate(), true);
	ApplyDatasetFilter(ds_AccountInMutualSettlements, 'DueDate', 
		DueDate.getVarDate(), true);
	ApplyDatasetFilter(ds_MutualSettlements, 'StartDate', 
		StartDate.getVarDate(), true);
	ApplyDatasetFilter(ds_MutualSettlements, 'DueDate', 
		DueDate.getVarDate(), true);
	if ((!!MutualSettlementsScript.DebtorCreditorIDs) &&
		('length' in MutualSettlementsScript.DebtorCreditorIDs) &&
		(MutualSettlementsScript.DebtorCreditorIDs.length > 0)) {
		ApplyDatasetIncludeFilter(ds_AccountInMutualSettlements, 
			'DebtorCreditorIDs', MutualSettlementsScript.DebtorCreditorIDs, true);
	}
	SendNotify(Self, MSG_OK);
}

Карточка указана в настройках записи в разделе «Отчёты».

На сколько я понял тут описана доработанная форма фильтрации,а имел ввиду стандартная которая формируется кнопкой "Установить фильтр" в окне FastReport. Форма с набором фильтров у меня сейчас формируется, отчет работает, но единственное что не работает это фильтрация записей отчета по выбранным фильтрам. Как передать в отчет параметры фильтрации?

Стандартно в 3.3.2 в окне FastReport нет такой кнопки «Установить фильтр»:

Это может быть доработка, без её анализа сложно сказать, что делаете не так.

Я имел ввиду кнопку "Установить фильтры" в меню редактора FastReport

Кнопка между Обновить и Выберите родительский отчет

 

Вот еще скриншоты и исходники

Посмотрите, как сделана фильтрация для обычных отчётов, вроде «Адресной книги контрагентов». Там в sq, по которой строится ds отчёта, предусмотрены соответствующие фильтры.

Добавил фильтр в запросе не помогло.Не понятно как привязать параметры из формы фильтрации как запросу

есть идеи в чем проблема?

 

На скриншоте окна фильтров их видно намного больше, чем Вы настроили в запросе.

Я настроил пока то что пытался фильтровать. Зачем настраивать дальше если даже то что настроено не работает?

Посмотрите в профайлере, какой запрос идёт в базу. Может, в sq не добавлено или добавлено не так это поле.

WHERE(NOT (([tbl_Task].[OwnerID] IN (@P1)))

что такое @P1?

проблема в NOT

буду смотреть как она появляется

 

Зверев Александр спасибо за Profiler

@P1 — параметр, там в конце запроса передают через запятую их значения.

не пойму передается NOT хотя в фильтре стоит "="

Возможно, закешировалось, попробуйте изменить туда-сюда и пересохранить схему.

помогло. спасибо

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

Добрый день!

Подскажите, может кто-то решал подобную задачу? Как в отчете (список) реализовать данные колонки (сколько времени обращение было в том или ином состоянии). 

 

У меня такой же вопрос

1 комментарий
Лучший ответ

Вариантов много например так: создайте объект (по которой в дальнейшем можно и деталь сделать прикрепленную к обращению и отчет построить ) в которой будут колонки:

1) Id обращения (или сразу номер обращения для отчета)

2) код статуса (или сразу название статуса для отчета)

2) время установки статуса

3) время закрытия статуса

Создайте БП который по смене статуса будет вносить корректировки в выше созданый объект. А по созданию обращения делать первую запись. Таким образом при переходе в согласование например смотрите какой статус был раньше (в обращениях была колонка - приведущий статус) и для объекта меняете время закрытия преведущего статуса для текущего обращения. И вносите время установки для текущего статуса. Как то так.

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

В итоге получите номер обращение, статус, время пребывания в статусе (по разнице 2х дат). Сгрупировать по номеру обращения и статусе, для случаев когда обращение пребывало в одном статусе несколько раз, те если например обращение несколько раз возвращают в работу то нужно групировать и  суммировать время пребывания в статусе. Линейную таблицу транспонировать к нужному вам виду (перевернуть).

И как вариант можно настроить журнал изменения на отслеживание изменения статуса обращения и оттуда дергать данные для отчета. Вместо журнала изменений можно использовать вариант с тригером в БД для тех же целей (логирование изминения статуса обращения).

 

 

 

 

Вариантов много например так: создайте объект (по которой в дальнейшем можно и деталь сделать прикрепленную к обращению и отчет построить ) в которой будут колонки:

1) Id обращения (или сразу номер обращения для отчета)

2) код статуса (или сразу название статуса для отчета)

2) время установки статуса

3) время закрытия статуса

Создайте БП который по смене статуса будет вносить корректировки в выше созданый объект. А по созданию обращения делать первую запись. Таким образом при переходе в согласование например смотрите какой статус был раньше (в обращениях была колонка - приведущий статус) и для объекта меняете время закрытия преведущего статуса для текущего обращения. И вносите время установки для текущего статуса. Как то так.

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

В итоге получите номер обращение, статус, время пребывания в статусе (по разнице 2х дат). Сгрупировать по номеру обращения и статусе, для случаев когда обращение пребывало в одном статусе несколько раз, те если например обращение несколько раз возвращают в работу то нужно групировать и  суммировать время пребывания в статусе. Линейную таблицу транспонировать к нужному вам виду (перевернуть).

И как вариант можно настроить журнал изменения на отслеживание изменения статуса обращения и оттуда дергать данные для отчета. Вместо журнала изменений можно использовать вариант с тригером в БД для тех же целей (логирование изминения статуса обращения).

 

 

 

 

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

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

Имеется TerrasoftCRM 3.3.2.245.

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

 

У меня такой же вопрос

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

См. тут (у вопроса юбилей!cheeky) и тут.

Спасибо.

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

Здравствуйте!
Подскажите пожалуйста как реализовать возможность экспорта отчета 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.

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

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

добрый день!
"досталась" мне в наследство данная платформа, соглашалась на техническую поддрержку, но появилась потребность немного "усовершенствовать" работу коллег. Т.к. опыта работы с такими программами у меня нет - прошу помось и отвечать подробно, т.к. полный чайник я))))
Хотелось бы "залить" шаблон дилерского договора, и чтобы в нем при выборе клиента автоматически проставлялись данные занесенные в базу: нименования и реквизиты(инн, адрес и т.д.)
1. как прописать я более менее понимаю, что тут может быть строка - , ...Но как ее записать в добавляемые поля после соединения с ТерраСофтом,чтоб каждый раз руками не вводить (как в скриншоте)? или данные запросы не так делаются?
2. один такой созданный шаблон запроса у меня был,он связан с продажами. Т.е. клиент запрашивает КП,заполняем окно продажи,переходим к продаже продукта и он заполняет все строки(тот же скрин из программы). Как мне в данном случае тоже сделать такой переход к моему шаблону договора? Т.е. все данные у меня занесены в контакты - я нажимаю на фирму Василий Пупкин - перехожу к заполнить договор и у меня выгружается заполненный его реквизитами договор?

Спасибо,надеюсь на вашу помощь

У меня такой же вопрос

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

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

На все Ваши вопросы есть ответ в этом видео: Интеграция с пакетом приложений MS Office

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

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

Подскажите пожалуйста, как можно добавить опцию "Перейти к" в контекстное меню отчета?

У меня такой же вопрос

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

Здравствуйте, Юрий!

Если мы говорим об отчетах Fast Report, то о такой возможности нам не известно. Попробуйте уточнить о ней у разработчиков Fast Report.

Возможно, для реализации Вашей задачи Вам подойдет использование гиперссылок в Fast Report.
Якорь (anchor) – один из элементов системы гиперссылок, которая позволяет при щелчке на объекте готового отчета (в окне предварительного просмотра) перейти на элемент, связанный с этим объектом.
Якорь – это специальная метка, которая устанавливается методом Engine.AddAnchor. Якорь имеет имя, и ему соответствует номер страницы и позиция на странице. Перейти на якорь с указанным именем можно, поместив в свойство URL любого объекта отчета строку вида:
#ИмяЯкоря
или
#[ИмяЯкоря]
В последнем случае, при построении отчета FastReport раскроет выражение, находящееся в квадратных скобках.
При щелчке на этом объекте произойдет переход на то место отчета, где был добавлен якорь.
Якоря удобно использовать при построении раздела "Содержание" со ссылками на соответствующие разделы.

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

Нет, речь не идет об отчетах Fast Report. Речь идет об отчете, который унаследован из wnd_BaseReportWindow.

Уточните, пожалуйста, точное название используемой версии Terrasoft (можно посмотреть в свойствах файла TSClient.exe)?

Terrasoft 3.4.0.130

К сожалению, не могу найти в базовой конфигурации окно wnd_BaseReportWindow.

Возможно, Вы имели ввиду wnd_BaseReport?

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

Добрый день, коллеги! Подскажите, пожалуйста, есть ли в стандартных возможностях системы адаптировать выгрузку древовидного грида в Excel. Сейчас формат выгрузки представляет собой перечисление в строку всех записей грида по порядку независимо от уровня, а хотелось бы увидеть эту иерархию также в Excel. Если нет полноценной адаптации, то возможно вы можете подсказать, какие есть варианты выгрузки с сохранением структуры состоящей из 3-х уровней:
1 уровень (главный)-менеджер
2 уровень-клиент
3 уровень-направление

У меня такой же вопрос

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

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

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

А в User query можно же задать подчиненные детали, а потом на их базе сделать Excel-отчет. И будут нужные вам уровни

Можно сделать через пользовательские запросы, но это будет не так просто.
Если бы был пример детали (скриншот), можно было более глубоко понять задачу и предложить оптимальный вариант решения.

Нам также подойдет вариант с разделением этих 3-х уровней на столбцы в Excel
но вопрос в том, как написать это кодом, исправив формат стандартной выгрузки лишь в одном разделе

менеджер клиент направление

"Кочев Антон Сергеевич" написал:с разделением этих 3-х уровней на столбцы

Из данного описания совсем непонятно, как у вас реализованы эти уровни.

На обучении разработке TS 3.x давали пример, как из TS создавать Excel-файл.

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

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

У меня такой же вопрос

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

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

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

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

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

Скажите, где в диаграмме fastreport в pie, сделать так, что бы не было наложение текста
график

У меня такой же вопрос

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать