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

Функция coGetAttr

Добавлено: 06 мар 2015, 16:36
Руслан
Ругается при компиляции на функцию coGetAttr. Нет такой функции, поля или метода

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

#include ExtAttr.Vih
#include TxoApi.vih
#Component "F_TxoApi"
VipInterface Txo_RentOSMC Implements ObjTxoIdentPlugin Licensed(Free);

! Простой интерфейс для обработки накладной
Interface Txo_RentOSMC;
!
create view TXOview
var
 CurSoprDoc:comp;
 CurTiDkGal:word;
 as select 
  spkatos.nrec
 ,spkatos.CGRUP
 ,osmc.nrec
 ,osmc.cmc
 ,osmc.cKatos
 ,sposmc.nrec
 ,sposmc.cosmc
 ,sposmc.cnastros
 ,sposmc.SIZNM
 ,groupmc.nrec
 ,groupmc.kod
 ,katmc.nrec
 ,katmc.CGROUPMC
 ,attrval.nRec
 ,attrval.wtable
 ,attrval.cRec
 ,attrval.cattrnam
 ,attrval.vcomp
 
from
  spkatos  (readonly)
 ,OSMC     (readonly)
 ,SPOSMC   (readonly)
 ,KATMC    (readonly)
 ,GROUPMC  (readonly)
 ,ATTRVAL  (readonly)
where
((
  CurSoprDoc == OSMC.cKatos                     and
  OSMC.cmc == KatMC.nrec                        and
  Katmc.CGROUPMC == GROUPMC.nrec                and
  9002 == GROUPMC.KOD                           and
  OSMC.nrec == SPOSMC.COSMC                     and
  cogettune('OS.USER.METUM') == SPOSMC.CNASTROS and 
  OSMC.nrec == ATTRVAL.cRec                     and
  word(3109) == ATTRVAL.WTABLE
));


function GetInfo : string;
{
   GetInfo := 'обработка состава инвертарной карточки сданных в аренду';
}

function ParamMaster : string;
   {
        Message('!!!');
        ParamMaster :='';
   }

procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
 {
   // установить ограничения на логическую таблицу
   CurTiDkGal := buf.TiDkgal;
   CurSoprDoc := buf.cSoprDoc;
!
   TxoAllowRecallStoreCycles(hTxo);
!    TxoHeadAddKau(hTxo, wFlKau_auto, 18, KatSopr.cOrg)
    // построить выгрузку циклов
 
    TXOview._loop OSMC 
      {
       if(getfirst katmc = tsok)
        {
         if(getfirst GROUPMC= tsok)
          {
           if(getfirst SPOSMC = tsok)
            {
           
              TxoBodyClear(hTxo); // очистить промежуточный буффер
!             
            TxoBodyAddKau(hTxo, 0, 1 , coGetAttr (3109; OSMC.nrec; 'Арендатор'));  
              TxoBodyAddKau(hTxo, 0, 14, coGetAttr (3109; OSMC.nrec; 'Аренда договор'));     
!              
              TxoBodySetSum(hTxo, round(SPOSMC.SIZNM,0), 0, 0);  // закачать суммы
              TxoBodyInsert(hTxo);  // добавить в выгрузку   
            }
          }
        }
      }
    
 }
end.

Re: Функция coGetAttr

Добавлено: 06 мар 2015, 17:15
Den
Это же объектный метод. Понятно что так ругаться будет. Нужно объявить ссылку типа vipinterface и писать .coGetAttr(...

Re: Функция coGetAttr

Добавлено: 06 мар 2015, 17:28
Irina_
Здравствуйте. Попробуйте
Var var1 : iExtAttr;
Pp : Comp;

pp:= var1.coGetAttr (3109; OSMC.nrec; 'Арендатор')
TxoBodyAddKau(hTxo, 0, 1 , pp);

Re: Функция coGetAttr

Добавлено: 06 мар 2015, 18:55
Руслан
Irina_ писал(а):Здравствуйте. Попробуйте
Var var1 : iExtAttr;
Pp : Comp;

pp:= var1.coGetAttr (3109; OSMC.nrec; 'Арендатор')
TxoBodyAddKau(hTxo, 0, 1 , pp);
Добавил, теперь ругается на эту строку:

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

TxoBodyAddKau(hTxo, 0, 1 , (var1.coGetAttr (3109; OSMC.nrec; 'Арендатор')));
Не хватает скобки...

Re: Функция coGetAttr

Добавлено: 07 мар 2015, 20:18
edward_K
а с чего вы решили что перечисление переменных в объектных функциях отличается от обычных?
в описании - ;, но при вызове то нужно ставить запятую - это практически во всех языках так, а vip наследник смеси С и паскаля.