Пункт меню "Отчеты пользователя"

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Пункт меню "Отчеты пользователя"

Сообщение savov »

Доброго времени суток!
Может кто поделится опытом как можно подключать отчеты пользователя через пункт меню "Отчеты пользователя" в модулях?
У меня на випе написан интерфейс, он считает что надо и кидает в отчет. Хочу подрубиться через этот пунктик меню. В доке по подключению написано как-то непонятно, пробовал компилить пример, сразу ошибка вылетает на их примере (константа не найдена), заменил ее на другую, модуль не видит никаких отчетов пользователя.
Если у кого получилось, подскажите, желательно по шагам с простым примером, буду очень благодарен.
P.S.
В стандартной поставке у меня есть файлы sample1-3.vip, userreport.vip, userreport.vih
Компилил их и ничего не вышло :(
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Альтернативный способ - Рабочее меню пользователя.

Правда по времени идёт проигрышь, частые окошечки вроде "блокировки лицензионной информации" и т.п.
oiko
Местный житель
Сообщения: 418
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

Все чудно получается
Например

sample.vip

#include UserReport.vih

VipInterface UserReport_buhobor Implements IUserReport;
Interface UserReport_buhobor;
create view;

procedure Run;
begin
RunInterface(buhobor);
end;
function GetReportName: String;
begin
GetReportName := 'Оборотка';
end;

function GetGroupName (Level : Word) : String;
begin
GetGroupName := '';
end;

function GetPriority : Integer;
begin
GetPriority := 0;
end;

function VisibleInModule(Ind : Byte) : String;
begin
VisibleInModule := '';
case Ind of
1 : VisibleInModule := 'SKLAD';
2 : VisibleInModule := 'SKLAD2';
3 : VisibleInModule := 'MANUFACTURE';
4 : VisibleInModule := 'B_FINANS';
end;
end;
end.

buhobor - некий фейс содержащий мой отчет
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Сообщение savov »

Спасибо огромное! Заработало :cool:
Заковыка была с наименованием фейса и описанием
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Господа, помогите!!!
Есть отчет (т.е. vip-интерфейс с отчетом, гарантированно работающий), пытаюсь подключить через отчеты пользователя.
Сооружаю по примеру вызывающий интерфейс:

Код: Выделить всё

#include userreport.vih

VipInterface UserReport_State Implements IUserReport;

Interface UserReport_State;

create view;

!-------------------------------------------------------------------------------
// Запуск отчета на выполнение при выборе его из списка отчетов
procedure Run;
begin
  RunInterface('StateChange')
end;
!-------------------------------------------------------------------------------
// Наименование отчета в списке
function GetReportName: String;
begin
  GetReportName := '(с) Изменения в штатном расписании';
end;
!-------------------------------------------------------------------------------
// Наименования групп, в которые входит отчет
function GetGroupName (Level : Word) : String;
begin
  GetGroupName := '';
end;
!-------------------------------------------------------------------------------
// Приоритет отчета - сортировка внутри группы выполняется сначала
// по приоритету, а затем по наименованию
function GetPriority : Integer;
begin
  GetPriority := 0;
end;
!-------------------------------------------------------------------------------
// ModuleID модулей, в которых будет виден отчет
// '*' - отчет будет виден в любом модуле
function VisibleInModule(Ind : Byte) : String;
begin
  VisibleInModule := '*';
end;
!-------------------------------------------------------------------------------
end.
Вызываемый интерфейс:

Код: Выделить всё

Interface StateChange 'Изменения в штатном расписании' EscClose, Cyan;
show at (,,60,8);
view
...
end;
end.
В "отчетах пользователя" не вижу :cry:
После добавления строчки
#Component "F_UserReport" в вызываемый интерфейс при компиляции получила:

Код: Выделить всё

16:48:24 │  Предупреждение: Компонент F_USERREPORT не имеет ни одной таблицы в словаре, возможно ошибочно задано имя компонента (стр.2, поз.1 в SRC\StateChange.vip)
         │ Interface StateChange 'Изменения в штатном расписании' EscClose, Cyan;
         │ ^
16:48:30 │  Предупреждение: Не найден объект IVIPIFCIFC STATECHANGE, описывающий интерфейс вызова. Параметры вызова для STATECHANGE не проверены. (стр.23, поз.30 в SRC\STATE.VIP)
но при этом отчет в списке отчетов пользователя увидела.

Может, что репозитарием пошевелить? Компилирую все в debug.res

Извините за сумбур...
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

А что за фейс 'StateChange'? Его в ресурсниках, видимо, нет (либо эти ресурсники не подключены). Первое предупреждение - фигня, так всегда при компиляции отчётов пользователя бывает. Только я обычно перед #include userreport.vih пишу
#define ComponentVersion
#ifdef ComponentVersion
#component "F_UserReport"
#endif
и, соответственно, в конце кода фейса
#undef ComponentVersion.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Sheinina вопрос то в чем? В том что параметры интерфейса не првоерены? так это потому что юзерреп компилится первыйм и в ресурсе вашего отчета ещё нет...
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение Sheinina »

Вот ведь непонятки - вчера крутила-вертела - ничего не получалось, а сегодня решила расписать ситуацию более тщательно, перекомпилировала ресурс пару раз - и все заработало... Чудеса, да и только :grin: Спасибо всем, кто пытался понять мой сумбур!
П.с. а компилила я через проект, вот такой:

Код: Выделить всё

#make "src\*.frm"
#make "src\StateChange.vip"
#make "src\*.rtf"
#make "src\state.vip"
в state.vip и лежит userreport :)
Pasynkova
Посетитель
Сообщения: 40
Зарегистрирован: 29 окт 2008, 13:00

Сообщение Pasynkova »

oiko сделала все по вашему примеру, компиляция прошла успешно, но в списке "Отчеты пользователя" свой отчет не вижу, а в утилитах вижу все работает.
Версия Галактики 810.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

поищите фейс для вызова через запуск внешного интерфейса ( не забудьте только перед стартом задать vip.visibleallinterface=on). Он должен называться F_userreport::UserReport_...... Если его нет , значит скомплили неправильно. Если есть то перемудрили с VisibleInModule.
Pasynkova
Посетитель
Сообщения: 40
Зарегистрирован: 29 окт 2008, 13:00

Сообщение Pasynkova »

F_userreport::UserReport/...... во внешних интерфейсах есть.
Что значит перемудрили с VisibleInModule. :eek:
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

текст в студию 8)
Pasynkova
Посетитель
Сообщения: 40
Зарегистрирован: 29 окт 2008, 13:00

Сообщение Pasynkova »

Вот пожалуйста :smile:

Код: Выделить всё

#include UserReport.vih 

VipInterface UserReport_AnalizOst Implements IUserReport; 
Interface UserReport_AnalizOst; 
create view; 

procedure Run; 
begin 
RunInterface(AnalizOst); 
end; 
function GetReportName: String; 
begin 
GetReportName := 'Анализ остатков ТМЦ'; 
end; 

function GetGroupName (Level : Word) : String; 
begin 
GetGroupName := 'МатСек'; 
end; 

function GetPriority : Integer; 
begin 
GetPriority := 0; 
end; 

function VisibleInModule(Ind : Byte) : String; 

begin 
VisibleInModule := ''; 
case Ind of 
1 : VisibleInModule := 'SKLAD'; 
2 : VisibleInModule := 'MANUFACTURE'; 

end; 
end; 
end. 
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

в этом бы фейсе я бы указал первой строкой
#component "F_USERREPORT"
vih иногда меняют компонентную принадлежность.
и в складе нет? ни в производстве?
и тянется из нужного ресурса?
* попробуйте.
Gameus_
Местный житель
Сообщения: 209
Зарегистрирован: 18 окт 2006, 17:03
Откуда: Ростов на Дону Новочеркасск Новороссийск
Контактная информация:

Сообщение Gameus_ »

может поможет,
у меня так:

Код: Выделить всё

#include UserReport.vih
VipInterface UserReport_spravka_otchvip1 Implements F_UserReport::IUserReport;
Interface UserReport_spravka_otchvip1;
create view;
procedure Run;
begin
  runinterface('spravka_otchvip1');
end;
function GetReportName: String;
begin
  GetReportName := 'Spravka ';
end;
function GetGroupName (Level : Word) : String;
begin
  GetGroupName := '';
  case Level of
    1 : GetGroupName := 'ЋвзҐвл';
  end;
end;
function GetPriority : Integer;
begin
  GetPriority := 0;
end;
function VisibleInModule(Ind : Byte) : String;
begin
  VisibleInModule := '';
  case Ind of
    1 : VisibleInModule := 'STAFFMAINMENU';
  end;
end;
end.
UserReport.vih

Код: Выделить всё

#Component "F_UserReport"

#ifndef __UserReport_vih__
#define __UserReport_vih__

ObjInterface IUserReport;
  procedure Run;
  function GetReportName : String;
  function GetGroupName (Level : Word) : String;
  function GetPriority : Integer;
  function VisibleInModule (Ind : Byte) : String;
end;

#end
spravka.prj

Код: Выделить всё

#define ComponentVersion
#make "spravka_otchp.pro"
#make "doc1.rtf"
#make "podrmark.vip"
#make "spravka_otchVip.vip"
#make "vedom16_otchet.vip"
Ответить