Страница 1 из 1

"Внутренняя ошибка - объект не найден в ресурсе" H

Добавлено: 25 мар 2008, 16:00
PViP
Галка 712
Вот такая ошибка вылетает! С чем связана не могу понять!

Пишу свой экземпляр интерфейса для UserReports. Там завожу пару временных таблиц table struct -ом.

Где то вычитал на формуме что тако е происходит когда пытаешься искать по временной табле с использование переменных объявленных в другой вьюхе(первоисточник назвал ее представлением) - просмотрел все, ни как не могу разобраться, вроде нигде не делаю getfirst по временной табле с использованием переменных из друхих вьюх.

Причем заметил такую штуку, компилишь пустую заглушку для UserReports потом компилю свой отчет с таким же именем, подключаю его в галактике при открытом окошке "Отчеты пользователя" (где у меня отображается заглушка), вызываю отчет и вуаля, он работает, а вот если сразы мой отчет подцепить и вызвоть окно списка отчетов пользователя, то ничего не получиться, сразу ошибка!

Дайте наводку или совет, уже не знаю что делать, задрала эта ошибка, в чем причина?

Добавлено: 25 мар 2008, 17:25
edward_K
8) Перечитал на 2 раза - ни фига не понял. Исходники могет выложить

Добавлено: 26 мар 2008, 07:15
Алексей
8) ага... тоже 2 раза перечитал и так и не понял кто с каким именем компилится и как подключается

Добавлено: 26 мар 2008, 07:48
PViP
это я назвал заглушкой

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

#include UserReport.vih


VipInterface UserReport_SKLFRO Implements IUserReport;

Interface UserReport_SKLFRO;

create view as;
procedure Run;
begin
  message('');
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 := 'SKLAD';
end;
end. 
Сначала компилирую заглушку и подключаю ее к галактике, она запускается как надо.

Затем компилирую свой отчет, с точно таким же именем фейса и подключаю его к галактике в то время когда окно "Отчеты пользователя" открыто. В этом случае мой отчет отрабатывается как положено.

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

Добавлено: 26 мар 2008, 07:53
PViP
Собственно не важно что там как подключается, надо чтобы отчет запускался как положено! :)

Добавлено: 26 мар 2008, 09:32
Алексей
Имя пользовательского интерфейса не должно совпадать с названием другого интерфейса.

Добавлено: 26 мар 2008, 11:44
edward_K
интересно и как вы объявляли table struct.
я вообще для создания польз.отчетов пользуюсь неким шаблоном который зависит от 10 define . само формирование отчетов делаю в отдельном фейсе/автономной форме. Проект состоит из кучи define и undef и посредине #make шаблон ну и ключ /b в строке компиляции.
Так можно отчет можно проверить через запуск внешнего фейса например. Тробла с автономными(Ard) slk отчетами - runform на них выдваало нечто подобное, хотя через Ard все без проблем.

Добавлено: 26 мар 2008, 12:54
PViP
edward_K, объявил так, вариантов других и не знаю :)

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

table struct mySKLFRO
(
  Nrec : comp,
  NameMC : string[255],
  CodeMC : string[255],
  EdMC   : string[255],
  Kol    : double,
  FactPrice : double,
  SumPrice : double,
  sum    : array[1..17] of double
)
with index
(
  Index0=Nrec,
  Index1=NameMC(seg,asc), CodeMC(asc),
  Index2=NameMC(asc),
  Index3=CodeMC(asc)
);
Как выяснил, проблема было в следующем коде
было

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

if (PodrView.GetFirst Pick where ((SaldView1.SaldMoun.KodSPO == pick.crec(noindex))) = tsOK){}
сделал так

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

var tmpNREC : comp;
tmpNREC := SaldView1.SaldMoun.KodSPO;
if(PodrView.GetFirst Pick where ((tmpNREC == pick.crec(noindex))) = tsOK){}
Для себя сделал такой вывод из этой проблемы, поправьте если не прав, НЕЛЬЗЯ ДЕЛАТЬ ПОИСК ВО ВЬЮХЕ ПО ЗНАЧЕНИЯМ ХРАНЯЩИМСЯ(ИМЕННО ХРАНЯЩИМСЯ) В ДРУГИХ ВЬЮХАХ! :?[/b]

Добавлено: 26 мар 2008, 13:08
edward_K
это аксиома :).
по pick правильно искать по связке wtable+crec

Добавлено: 27 мар 2008, 13:57
PViP
edward_K
у меня во вьюхе зашито wList, разве этого не достаточно?

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

create view PodrView
as
select * from pick, katpodr
where ((
          word(11) == pick.wList
      and Pick.crec == KatPodr.NRec
      ));

Добавлено: 27 мар 2008, 14:06
Алексей
тогда tmpNREC == pick.crec во воьюху и перетащите
а гетферст делайте без условия

Добавлено: 27 мар 2008, 14:10
edward_K
неа. Поскольку в getfirst вы указалаи условие, то ему наплевать на условия во вьюхе
create view PodrView
var tmpNREC : comp;
as
select * from pick, katpodr
where ((
word(11) == pick.wList
and tmpNREC == Pick.crec
and Pick.crec == KatPodr.NRec
));
set PodrView.tmpNREC :=SaldView1.SaldMoun.KodSPO ;
if(PodrView.GetFirst Pick) = tsOK){}
так правильней. А вообще конечно бежать нужно по Pick а потом по Saldview если там есть индекс подходящий.

Добавлено: 03 апр 2008, 09:02
PViP
Написал второй отчет в UserReport, теперь когда подключен отчет UserReport_SKLFRO и UserReport_JrnRegKasOrd то галактика при вызове пункта "Отчеты пользователя" в любом модуле зависает не доходя даже до показа списка отчетов!

Грушил что вьюхт одинаково называются, поменял, все равно одна и таже фигня!

По раздельности отчеты запускаются! В чем дело?

Добавлено: 03 апр 2008, 09:19
Алексей
у меня что то было такое, почему не помню. Этот пример что щас дам - работает. (8.10)

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

#Component "F_UserReport"
#include UserReport.vih
VipInterface UserReport_Staff Implements IUserReport   Licensed (Free);
Interface    UserReport_Staff;
procedure Run;
begin
 RunInterface('z_staff_tnf::rep_stuff');
end;
function GetReportName: String;
begin
  GetReportName := 'Отчет о численности.'
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.
Обратите внимание на функцию GetGroupName, по-моему у меня из за нее и висло...

Добавлено: 04 апр 2008, 13:24
PViP
Алексей, спасибо! Догадался правда сам, без Вашей помощи!

Запихал вот так в оба отчета

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

function VisibleInModule(Ind : Byte) : String; 
begin 
   VisibleInModule := 'SKLAD'; 
end;
 
а надо

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

function VisibleInModule(Ind : Byte) : String; 
begin 
  VisibleInModule := ''; 
  case Ind of 
    1 :  VisibleInModule := 'SKLAD'; 
  end; 
end;