Не работает Pick

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

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

Ответить
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Не работает Pick

Сообщение Semi-bit »

Уважаемые господа, вы моя последняя надежда. Есть такой код:

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

cmPick:{
  case CurField of
  #PodrFilter: if RunInterface(GetAnyPodr, 0h, 14) = cmDefault then {
    var Count: integer;
    Count := 0;
    if tsOk = GetFirst Pick where ((word(11) == Pick.wList)) then
    do { Inc(Count); } while (tsOk = GetNext Pick where ((word(11) == Pick.wList)));
    case Count of
    0: Set PodrFilter := '';
    1: Set PodrFilter := KatPodr.Name;
    else
      Set PodrFilter := 'Выбрано ' + RowCount + ' подразделений';
    end;
  }
  #MolFilter: if RunInterface(GetSomeMol) = cmDefault then {
    _loop Pick where ((word(8) == Pick.wList)) {}
    case RowCount of
    0: Set MolFilter := '';
    1: Set MolFilter := KatMol.Name;
    else
      Set MolFilter := 'Выбрано ' + RowCount + ' лиц';
    end;
  }
  end;
}
И он не работает, то есть после любого выбора в обоих вызываемых интерфейсах поля остаются пустыми. ИЧСХ, результаты выбора от вызова к вызову сохраняются, но их не видно извне. Проверил всё, что только можно. Остаются только шаманские методы, коих, я надеюсь, вы мне подкинете.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Не работает Pick

Сообщение RAJAH »

Возможно, нужны какие-то инклюды, указание статус-строки, перерисовка интерфейса...
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Не работает Pick

Сообщение Semi-bit »

Инклюды подключены, прога компилируется. Статус-строки не нужны, интерфейсы вызываются, горячие клавиши в них работают. Перерисовка интерфейса осуществляется оператором Set. Я выложил только проблемный кусок, могу полный код привести.
P.S. Система, стыдно признаться, Галактика 7.12.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Не работает Pick

Сообщение Masygreen »

попробуйте все же RescanPanel .. Redraw принудительно
Время ведет!
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Не работает Pick

Сообщение Semi-bit »

Пробовал, не помогает :( Похоже, придётся писать своё окно выбора.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: Не работает Pick

Сообщение KATZ »

1. При выборе подразделения переменная для счетчика названа Count. Есть функции с такими же именами. Возможно, причина в совпадении имен.

2. При выборе МОЛ используется RowCount. Она, как пишет документация, "возвращает количество обработанных записей при групповых операциях модификации". Вы ничего не модифицировали, просто прошлись по всем записям. Вполне логично, что функция вернет 0.
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Не работает Pick

Сообщение Semi-bit »

Насчёт Count'а вы правы, нашёл функцию с таким названием. Но замена на Cnt (просится другое название) ничего не изменила. Далее, попробовал _loop заменить на delete - RowCount так же выводит 0, а при вызове интерфейса выбора результаты не очищаются. Такое ощущение, что вызываемый и вызывающий интерфейсы работают в разных базах, но это бред. Использование ReScanPanel выглядит наиболее целесообразным, но тоже не помогает, даже ReReadRecord не помогает.
И раньше в документации было указано, что RowCount также подсчитывает количество пройденных строк в операции loop, сейчас такой информации нет.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: Не работает Pick

Сообщение KATZ »

Чудес не бывает. Для визуализации оператора set должно хватать. Выложите полный код, с ним яснее станет.

З. Ы. Что-то я в документации не встретил функцию Inc, она точно есть в "Галактике"? Если вместо нее написать Cnt:=Cnt+1, то что-нибудь меняется?
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Не работает Pick

Сообщение Semi-bit »

ОК, выкладываю.

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

#make "DisposalAct.frm"

#include GalNet.Inc
end;
/*table struct CntMove
(
  dmove :date,
  cmove : comp, 
  cpodr : comp,
  cmol  : comp
)
with index
(
  CntMove01 =  cpodr + cmol + dmove (unique)
)
; */
//type TCntMove = record as table CntMove;
 
Interface Create_For_Sip_Manual 'Галактическое безобразие' ('', hcNoContext, sci1Esc);
show at(,,50,5);
var
   dfrom, dto : date;
  // cntMBPIn : TCntMove;
   Marker : longint;

create view GetReq
var
  PodrFilter, MolFilter: string;
as select *
from
  MBPMove, Synonym MBPMove MBPMoveCreate,  Synonym MBPMove CntMove/* IsAUTO*/,
  MBPIn,
  MBPOUT, Synonym MBPOut MBPOutCreate,
  SoprHoz,
  MagOper,
  Pick,
  Pick PickPodr,
  Pick PickMol,
  KatPodr,
  KatMol
   
where
((
      word(0) == MBPin.extmod    
  and word(1) == MBPIn.status  (noindex) // введено в эксплуатацию
 // and word(4) == MBPIn.instate (noindex) // только по вводу в эксплуатацию
  and word(1) == MBPIn.inekspl (noindex)
  
  and dfrom <<= MBPIn.dateeksp (noindex) 
  and dto   >>= MBPIn.dateeksp (noindex) 
  and MBPin.cmbp == katmbp.nrec
  and 'AUTO' == CntMove.descr
  and MBPin.cpodr == CntMove.cpodrt (noindex)
  and MBPin.cmol  == CntMove.cmolt(noindex)
 // and date(0,0,0) == mbpin.datespis (noindex)
  and date(last_day(MBPIn.DATEEKSP), month(MBPIn.DATEEKSP), year(MBPIn.DATEEKSP)) == CntMove.DMOVE

  and PickPodr.cRec == KatPodr.nRec
  and PickMol.cRec == KatMol.nRec
))
bounds byPodr as MBPIn.cPodr /== PickPodr.cRec and word(11) == PickPodr.wList
bounds byMol as MbpIn.cMol /== PickMol.cRec and word(8) == PickMol.wList
condition  SIZ as ((substr(KatMBP.KodGr, 7, 2) = '01') or (substr(KatMBP.KodGr, 1, 9) = '120000003'))
;

#include tranfunc.vpp

Function InitFunction : boolean;
{
  InitFunction := false 
  //set dfrom :=  date(1,month(cur_date)-3, year(cur_date)) ;
  set dfrom := date(1,1,2007);
  //set dto := date(last_day(cur_date), month(cur_date), year (cur_date));
  set dto := date(30,4,2012);
  //set dto := date(31,10,2011);
  Marker := InitMarker('Marker' , 8, 100, 10);
  PushCondition (tcSIZ);
  rereadrecord;
  InitFunction := true;   
};


Function GetNum (tip : word) : string;
var
   chislo : integer;
   rec : comp; 
{
  case tip of  
  1: { rec:= comp(4001672163BFB58Fh);
       Update LastNumD  Where (rec=LastNumD.nrec) set LastNumD.LndNum:= Doubletostr(integer(LastNumD.LndNum) + 1, '777777');  // нельзя терять нули впереди

       GetNum:= LastNumD.LndNum;
  };
  end;    
} ;

Function CreateOUT(dend : date) : boolean;
var
  i : integer;
begin
  CreateOUT  := false;
  
  ClearBuffer (tnMBPOutCreate);
  MBPOutCreate.NOM      := GetNum (1);
  MBPOutCreate.STATUS   := 4;
  MBPOutCreate.DOUT     := dend;
  MBPOutCreate.TKOL     := MBPIn.KOLfact;
  MBPOutCreate.TPERCENT := MBPIn.TPERCENT;
  MBPOutCreate.TSUMMA   := MBPIn.SUMFACT;
  MBPOutCreate.TSUMMAISN:= MBPIn.SUMISNF;
  MBPOutCreate.KOL      := MBPIn.KOLfact;
  MBPOutCreate.PERCENT  := 0;
  MBPOutCreate.SUMMA    := MBPIn.SUMFACT;
  MBPOutCreate.SUMMAisn := MBPIn.SUMISNF;
  MBPOutCreate.CMOVE    := MBPMoveCreate.nrec;
  MBPOutCreate.CMBPIN   := MBPIn.nrec;
  MBPOutCreate.NOMSOPRD := MBPIn.NOMSOPRD;
  MBPOutCreate.nrec     := 0h;
!  if (Insert current MBPMoveCreate) = 0 then message('good') else message('bad');
!  if (Insert current MBPMoveCreate) <> 0 then exit;
  if (Insert current MBPOutCreate) <>0 then exit; 

  
  ClearBuffer(tnSoprHoz);     
  SoprHoz.DATOB       := dend;
  SoprHoz.CSOPRDOC    := MBPOutCreate.nrec;
  SoprHoz.TIPDOC      := word(19);
  SoprHoz.TIDKGAL     := word(19);
  SoprHoz.DESCR       := sGetTune('User.Descr');
  SoprHoz.DESGR       := sgetTune('USER.DESGR');
  SoprHoz.NameSHO  := 'Списание '+String(MBPOutCreate.Kol)+' ед. МБП по цене '+ String(MBPIn.Price)+
                   If(MBPOutCreate.tPercent>0.0001
                   , ' (ранее нач.износ:'+string(MBPOutCreate.tPercent)+'%)'
                   , ' износ не начислялся' );
  SoprHoz.SUMMA       := MBPOutCreate.kol*MBPIn.price;
  SoprHoz.DIRECT      := word(2);
  SoprHoz.VHSUMHOZ    := Chr('+');
!  if (insert current SoprHoz) = 0 then message('good') else message('bad');
  if (Insert current SoprHoz) <> 0 then exit;

  for (i:=0; i<2; Inc(i)){
      ClearBuffer(tnMagOper);
      MagOper.TIPDOC      := word(19);
      MagOper.CSOPRDOC    := MBPOutCreate.nrec;
      MagOper.DHOZOPER    := dend;
      MagOper.CPLANSSCH   := if (i=0,0000000000000005h,4001AD7D0FF15F6Dh);
      MagOper.dESCR       := sGetTune('User.Descr');
      MagOper.DESGR       := sgetTune('USER.DESGR');
      MagOper.CSOPRHOZ    := SoprHoz.nrec;
!      if (insert current MagOper) <>0 then message('good') else message('bad');
      if (insert current MagOper) <>0 then exit;                      
  }

  CreateOUT  := true;    
end;


Function UpdateMBPIn (dend : date): boolean;

begin
  UpdateMBPIn := false;
  
  MBPIn.KOLFACT  := 0;
  MBPIn.SUMFACT  := 0;
  MBPIn.STATUS   := 0;
  MBPIn.DATESPIS := dend;
  MBPIn.DATEZERO := dend;
  if (UpDate current MBPIN) <> 0 exit;
  
  UpdateMBPIn := true;
end;


Function CreateMove(dend : date) : boolean;
begin
  CreateMove := false;

  ClearBuffer(tnMBPMoveCreate);
  MBPMoveCreate.NOM    := GetNum(1);
  MBPMoveCreate.DMOVE  := dend;
  MBPMoveCreate.CPODRF := MBPIn.CPODRF; 
  MBPMoveCreate.CMOLF  := MBPIn.CMOLF;
  MBPMoveCreate.CPODRt := MBPIn.CPODR;
  MBPMoveCreate.CMOLt  := MBPIn.CMOL;
  MBPMoveCreate.STATUS := 5;
  MBPMoveCreate.SUMMA  := MBPIn.SUMFACT;
  MBPMoveCreate.SUMMAISN:= MBPIn.SUMISNF;
  MBPMoveCreate.CVALOLD:= to_days (dend);
  MBPMoveCreate.DESCR  := 'ADMIN';
  if (Insert current MBPMoveCreate) <> 0 then {exit};
  
  if not CreateOUT (dend) then {/*MESSAGE('not CreateOUT '+KatMBP.nrec + '  '+katmbp.name);*/exit};
  if not UpDateMBPIn (dend) then {exit};

  CreateMove := true;                               
end;

Function UpdateMove(rec : comp; dend : date) : boolean;
begin

  UpdateMove := false;
  if getfirst MBPMoveCreate where ((rec == MBPMoveCreate.nrec)) <> 0 then exit;

  MBPMoveCreate.SUMMA  := MBPMoveCreate.SUMMA + MBPIn.SUMMA;
  MBPMoveCreate.SUMMAISN:= MBPMoveCreate.SUMMAISN + MBPIn.SUMMAISNN;
  MBPMoveCreate.DESCR  := 'ADMIN';
  if (Update Current MBPMoveCreate) <> 0 then exit;
    
  if not CreateOUT(dend) then exit;
  if not UpDateMBPIn(dend) then exit;
  
  UpdateMove := true; 
end;
              
Window winMBPin;
show at (, , ,);
Browse brMBPin;
show at (,,,20);
table MBPIN
fields
   MBPIN.nom :[6], protect;
   MBPIN.din : [6],  protect;
   KatMBP.name: [10], protect;
   KatMBP.KodGr : [10], protect;
   if (MBPIn.status=1, 'в эксплуатации', 'серенькая') :[15], protect;
   
end;
Screen ScrMBPIN;
show at (,21,,);
buttons
cmOk;
<<
  <. Окей .>
>>
end;
HandleEvent  
cmOk : {
  var i : integer;
  var HasSuchMove : boolean;

  PushCondition (tcSIZ);
   
  BegTrans;
  StartNewVisual( vtRotateVisual, vfTimer + vfBreak + vfConfirm, '',1);
  SetVisualTitle('Подождите пожалуйста...');
  SetVisualHeader('Производится формирование актов списания...');
  _Loop MBPIn
  {
       SetVisualHeader('проверяется карточка '+MBPin.nom + ' от '+datetostr(MBPIn.din, 'DD.MM.YY'));
       if not nextVisual then {
          StopVisual ('Прервано пользователем ',1);
          break;
       };
      if (getfirst CntMove = 0 )
      then      
      { 
         if not UpdateMove(cntMove.nrec,  CntMove.dmove)
         {
            message('Обновление существующего акта списания прошло неудачно.'#13 + 'Осуществляю откат изменений ... ');
            AbortTrans;
            //StopVisual ('',0);
            break;//exit;
         };
      }
      else
      {    
         if not CreateMove (date(last_day(MBPIn.DATEEKSP), month(MBPIn.DATEEKSP), year(MBPIn.DATEEKSP)))
         {  
            message('Вставка акта списания прошлa неудачно.'#13 + 'Осуществляю откат изменений ... ');
            AbortTrans;
           // StopVisual ('',0);
            break;//exit;
         }
      };
  }
  StopVisual ('',0);
  DoneTrans;
  PopCondition (tcSIZ);

}
end;//handleevent
end;//window

Screen scEnterParams 'Введите параметры' ('', hcNoContext, sci1Esc);
Fields
  dFrom: [10], noprotect;
  dTo: [10], noprotect;
  PodrFilter (,,sci13Esc): protect, PickButton;
  MolFilter (,,sci13Esc): protect, PickButton;
Buttons
  cmOk;
  cmCancel;
<<
   ` Период с ` .@@@@@@@@@ ` по ` .@@@@@@@@@
   ` Подразделение ` .@@@@@@@@@@@@@@@@@@@@@@
   ` МОЛ `           .@@@@@@@@@@@@@@@@@@@@@@
          <. ОК .>         <. Отмена .>
>>
End;

form Report('DisposalAct.out', 'Disposal_Act');

#include function_date.inc 
HandleEvent
cminit:
{ 
  if not InitFunction then Abort;
}
cmPick:{
  case CurField of
  #PodrFilter: if RunInterface(GetAnyPodr, 0h, 14) = cmDefault then {
    if BoundActive(tbByPodr) then
      SubBounds(tbByPodr);
    var Cnt: Integer;
    Cnt := 0;
    GetReq._loop Pick where ((word(11) == Pick.wList)) { Inc(Cnt); }
    case Cnt of
    0: Set PodrFilter := '';
    1: Set PodrFilter := KatPodr.Name;
    else
      Set PodrFilter := 'Выбрано ' + Cnt + ' подразделений';
    end;
    if PodrFilter <> '' then
      if not BoundActive(tbByPodr) then
        AddBounds(tbByPodr);
  }
  #MolFilter: if RunInterface(GetSomeMol) = cmDefault then {
    if BoundActive(tbByMol) then
      SubBounds(tbByMol);
    _loop Pick where ((word(8) == Pick.wList)) {}
    case RowCount of
    0: Set MolFilter := '';
    1: Set MolFilter := KatMol.Name;
    else
      Set MolFilter := 'Выбрано ' + RowCount + ' лиц';
    end;
    if MolFilter <> '' then
      if not BoundActive(tbByMol) then
        AddBounds(tbByMol);
  }
  end;
}
cmOk:{
    //RunWindowModal('winMBPin');
//---------------------------------------------------------------------------------------------------------------
  //if not (cur_date = last_workday_in_month()) then {abort; exit;}
  if (integer(dFrom) = 0) or (integer(dTo) = 0) or (dFrom > dTo) then {
    Message('Неверно задан период!', Error + CancelButton);
    Abort;
    Exit;
  }
  Var    FileName , LogString: string;
//  FileName :=  '\\ptc-adem\programmers\Solonnikova\AUTOSFO.LOG';
//  LogString := '--------Запуск Интерфейса Create_For_Sip в ручном режиме-------';
//  LogStrToFile (FileName, LogString);
//  LogString := string(cur_date) + ', начало запуска: ' + TimeToStr(cur_time, 'HH:MM:SS');
//  LogStrToFile (FileName, LogString);


  var i : integer;
  var HasSuchMove : boolean;

  PushCondition (tcSIZ);

  BegTrans;
  StartNewVisual( vtRotateVisual, vfTimer + vfBreak + vfConfirm, '',1);
  SetVisualTitle('Подождите пожалуйста...');
  SetVisualHeader('Производится формирование актов списания...');
  Report.write(Cur_Date);
  Report.write(PodrFilter);
  Report.write(MolFilter);
  Report.write('СИЗ');
  _Loop MBPIn
  {
       SetVisualHeader('проверяется карточка '+MBPin.nom + ' от '+ DateToStr(MBPIn.din, 'DD.MM.YY'));
       if not nextVisual then {
          StopVisual ('Прервано пользователем ',1);
          break;
       };
      if (getfirst CntMove = 0 )
      then
      {
         if not UpdateMove(cntMove.nrec,  CntMove.dmove)
         {
           // message('Обновление существующего акта списания прошло неудачно.'#13 + 'Осуществляю откат изменений ... ');
            LogString := 'Обновление существующего акта списания прошло неудачно.'
//            LogStrToFile (FileName, LogString);
            SetVisualHeader(LogString);
            AbortTrans;
            //StopVisual ('',0);
            break;//exit;
         };
      }
      else
      {
         if not CreateMove (date(last_day(MBPIn.DATEEKSP), month(MBPIn.DATEEKSP), year(MBPIn.DATEEKSP)))
         {
           // message('Вставка акта списания прошлa неудачно.'#13 + 'Осуществляю откат изменений ... ');
            LogString := 'Вставка акта списания прошлa неудачно.'
//            LogStrToFile (FileName, LogString);
            SetVisualHeader(LogString);
//            AbortTrans;
           // StopVisual ('',0);
            break;//exit;
         }
      };
      Report.PutEvent(feDoLoop);
      Report.write(KatMbp.Name);
      Report.write(KatMbp.NNumber);
      Report.write(MbpOutCreate.Kol);
      Report.write(MbpIn.Price);
      Report.write(MbpOutCreate.Summa);
      Report.write(MbpIn.dIn);
      Report.write(MbpIn.Nom);
  }
//  LogString := string(cur_date) + ', конец  запуска: ' + TimeToStr(cur_time, 'HH:MM:SS');
//  LogStrToFile (FileName, LogString);
  StopVisual ('',0);
//  DoneTrans;
  PopCondition (tcSIZ);
   if (Marker <> 0) DoneMarker(Marker, '');

  if not Report.Error then
    Report.ShowFile('DisposalAct.out');
  else
    Report.AbortForm;

//---------------------------------------------------------------------------------------------------------------
}

 /*cmDone: 
 {    abort;
  exit;     
 };    */
end;
end.
DisposalAct.frm:

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

.form Disposal_Act
.fields
// шапка
FormDate: date
Podr
Mol
Grp
// спецификация
NameMc
BarKod
Kol: double
Price: double
Cost: double
EnterDate: date
EnterNum
.endfields
^ ^ ^ ^
.{CheckEnter
^ ^ ^ ^ ^ ^ ^
.}
.endform
function_date.inc:

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

Function Last_workday_in_month : date;
var
  need_day, lastday : date;
begin
  lastday := date(Last_day(cur_date), month(cur_date), year(cur_date));
  case day_of_week(Lastday) of 
  7: need_day := date (day(lastday)-2, month(lastday), year(lastday));
  6: need_day := date (day(lastday)-1, month(lastday), year(lastday));
  else  need_day := lastday;
  end;
  Last_workday_in_month := need_day; 
end;
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Не работает Pick

Сообщение Den »

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

Interface testpick;
  create view
   var  p: string;
        i: integer;
  ;

Screen Scr1
 viewtable;
  fields
    p : [25],pickbutton;
<<

   .@@@@@@@@@@@@@@@@@@@@@@@@
>>
end;

 HandleEvent
  CmPick:{
   	       delete all from pick where ((word(11) == Pick.wList));

    	   if RunInterface('Z_KATPODR::GetSomePodr')=cmDefault
    	   {

    	    _loop pick where  ((word(11) == Pick.wList))
    	    {
    	     inc(i)
    	    }
    	    p:='выбрано '+string(i)+' подразделений';
    	   }
           ReScanPanel(tnnotable);
         }
 CmInit:{
            p:='а давайте зададим подразделения !';
        }
 end;
end.
У Вас
...
Screen scEnterParams 'Введите параметры' ('', hcNoContext, sci1Esc);
Fields
...

Выдержки из доки :
"
<анкетный-редактор> = screen <имя> [<текст-лепестка-вкладки>]
[<контексты>];
[ <координаты> ] [ <лист> ] <анкета>
end;

Лист это имя физической таблицы, которая является корневой для данного видимого элемента. Лист может находиться в одном из 3-х режимов: table, viewTable, noTableNavigation.

<лист> = (table <имя-узла>) | viewTable | noTableNavigation
{, eventNavigation | cartesian };
Ключевое слово table связывает редактор с физической таблицей <имя-узла>.

Ключевое слово viewTable связывает редактор с логической таблицей. В результате в данной области ввода будет видна вся логическая таблица. Пользователь будет видеть перед собой результат предложения select, на котором построена выборка.
"

А вообще viewTable глючная вроде как. Лучше всегда связывайте с какой нить table
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: Не работает Pick

Сообщение KATZ »

Посмотрел ваш код, даже скомпилировал на 8.1, поудаляв лишнее. Для случая Cnt>1 всё нормально отрабатывает, при Cnt==1 проблема, т. к. в этом случае берется NAME из KATPODR или KATMOL, но позиции в этих таблицах никак не связаны со сделанным выбором. Ситуацию Cnt==0 при RunInterface()==cmDefault не воспроизвести.
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Не работает Pick

Сообщение Semi-bit »

KATZ писал(а):Посмотрел ваш код, даже скомпилировал на 8.1, поудаляв лишнее. Для случая Cnt>1 всё нормально отрабатывает, при Cnt==1 проблема, т. к. в этом случае берется NAME из KATPODR или KATMOL, но позиции в этих таблицах никак не связаны со сделанным выбором. Ситуацию Cnt==0 при RunInterface()==cmDefault не воспроизвести.
А что конкретно лишнее поудаляли? И работало ли с этим лишним?
P.S. Даже если добавить

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

Insert PickPodr Set wList := 11;
_loop PickPodr...
всё равно не заходит в этот луп :-(
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Не работает Pick

Сообщение Den »

а если заблокировать condition SIZ везде в коде ? (да хотя бы в cminin)то тоже не зайдет ?
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: Не работает Pick

Сообщение KATZ »

Semi-bit писал(а):А что конкретно лишнее поудаляли? И работало ли с этим лишним?
1. Инклудится tranfunc.vpp, самого файла нет. Удалил обращения к отсутствующим функциям.
2. В таблице MAGOPER нет некоторых полей. То ли их в 8.1 не стало, то ли у вас модифицированный словарь.
3. Убрал всё, что делается после нажатия cmOK.
4. Убрал из проекции таблицы, на которые компилятор ругался, что они не были явно использованы.
5. Может, что-то еще по мелочи.
Работало ли с лишним - не проверял. Кстати, совет Den-а дельный, попробуйте без condition.
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Не работает Pick

Сообщение Semi-bit »

Да-да-да, после убирания кондишна всё заработало :grin:
Всем большое спасибо!
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
Ответить