Печатные формы MIS3 — различия между версиями

Материал из ИбисоПедии
Перейти к: навигация, поиск
(Соглашение об именовании параметров для настраиваемых отчетов в ТЛ, ИБ, амбулаторном талоне и др)
 
(не показано 13 промежуточных версий 3 участников)
Строка 1: Строка 1:
 
== Описание ==
 
== Описание ==
отчеты хранятся в БД в таблице mm.report. Основной функционал по вызову модулей находится в REPORT\fFRF.pas, необходимо подключить этот модуль в проект
+
Отчеты хранятся в БД в таблице mm.report. Основной функционал по вызову модулей находится в REPORT\fFRF.pas, необходимо подключить этот модуль в проект. Вызовы отчетов производяться по имени файла отчета (должно быть уникальным и английскими буквами) с помощью функции fFrf.ShowFRFReportByfName
  
 +
== Пример вызова из кода ==
 +
 +
var
 +
  ar : variant;
 +
begin
 +
  AddParam(ar,'ID',TagBig);
 +
  fFrf.ShowFRFReportByfName('sickleave.fr3', 'ЛН № 123313' + uq1.FieldByName('code').AsString, ar );
 +
end;
 +
 +
== ReportViewer.exe ==
 +
Существует отдельный exe для показа отчетов. Понимает следующие параметры
 +
* /report_id=<ib из таблицы report>
 +
* /param:<имя параметра>=
 +
* /param1:<имя параметра>=
 +
* /param2:<имя параметра>=
 +
* /param3:<имя параметра>=
 +
 +
Пример командной строки для кнопки A1IBIS: ReportViewer.exe /report_id=103 /param:id=434121
 +
 +
== Правильная обработка параметров в fastreport ==
 +
 +
Цель сделать так, чтобы отчет всегда можно было посмотреть, вне зависимости от переданных параметров.
 +
 +
#. Объявляем внешнюю переменную (Отчет -> переменные -> )
 +
#. Создаем ей значение по умолчанию (например 0)
  
== Пример приема параметра в fr3 ==
+
var
N := <people_id>
+
  p_id : integer;                                       
 +
begin
 +
  p_id := <id>;
 +
  if p_id = 0 then p_id := 10;               
 +
             
 +
  uqSl.ParamByName('id').value := p_id;
 +
 
 +
 
 +
== Запросы ==
 +
 
 +
-- поиск по всем запросам в базе
 +
select * from mm.report r where r.source::text like '%'|| encode(('array_to_string(array_agg(home_tel)')::bytea , 'hex') ||'%'
 +
 
 +
== Соглашение об именовании параметров для настраиваемых отчетов в ТЛ, ИБ, амбулаторном талоне и др ==
 +
 
 +
При вызове отчета, policlinic.exe передает в отчет следующие параметры (если это возможно)
 +
 
 +
* people_id
 +
* mdoc_id
 +
* amb_id
 +
* naz_id
 +
 
 +
Соответственно при разработке отчета, следует учитывать именно эти имена параметров (некоторые формы передают дополнительно несколько имен, например pNaz_id, p_naz_id но такой подход считаем deprecated )
  
== Пример вызова из кода ==
 
  
<source lang="delphi">
 
var
 
  ar: Variant;
 
begin
 
  AddParam(ar, 'people_id', 9978, pkInteger);
 
  fFRF.ShowFRFReportByID(103,'',ar);
 
  VarClear(ar);
 
end;
 
</source>
 
  
[[Категория:MIS3]]
+
[[Категория:Руководство программиста MIS3]]

Текущая версия на 10:11, 11 сентября 2023

Описание

Отчеты хранятся в БД в таблице mm.report. Основной функционал по вызову модулей находится в REPORT\fFRF.pas, необходимо подключить этот модуль в проект. Вызовы отчетов производяться по имени файла отчета (должно быть уникальным и английскими буквами) с помощью функции fFrf.ShowFRFReportByfName

Пример вызова из кода

var
  ar : variant;
begin
  AddParam(ar,'ID',TagBig);
  fFrf.ShowFRFReportByfName('sickleave.fr3', 'ЛН № 123313' + uq1.FieldByName('code').AsString, ar );
end;

ReportViewer.exe

Существует отдельный exe для показа отчетов. Понимает следующие параметры

  • /report_id=<ib из таблицы report>
  • /param:<имя параметра>=
  • /param1:<имя параметра>=
  • /param2:<имя параметра>=
  • /param3:<имя параметра>=

Пример командной строки для кнопки A1IBIS: ReportViewer.exe /report_id=103 /param:id=434121

Правильная обработка параметров в fastreport

Цель сделать так, чтобы отчет всегда можно было посмотреть, вне зависимости от переданных параметров.

  1. . Объявляем внешнюю переменную (Отчет -> переменные -> )
  2. . Создаем ей значение по умолчанию (например 0)
var
 p_id : integer;                                         
begin
  p_id := <id>;
  if p_id = 0 then p_id := 10;                
              
 uqSl.ParamByName('id').value := p_id;


Запросы

-- поиск по всем запросам в базе

select * from mm.report r where r.source::text like '%'|| encode(('array_to_string(array_agg(home_tel)')::bytea , 'hex') ||'%'

Соглашение об именовании параметров для настраиваемых отчетов в ТЛ, ИБ, амбулаторном талоне и др

При вызове отчета, policlinic.exe передает в отчет следующие параметры (если это возможно)

  • people_id
  • mdoc_id
  • amb_id
  • naz_id

Соответственно при разработке отчета, следует учитывать именно эти имена параметров (некоторые формы передают дополнительно несколько имен, например pNaz_id, p_naz_id но такой подход считаем deprecated )