cmMarkunmark

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

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

Ответить
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

cmMarkunmark

Сообщение korvanakorvana »

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

Const
  xlColorBlack     = 0;
end;


Interface kor_zayavki_test 'Заявки' (,,sci178InsPM) escclose;
show at(,,93,30);

table struct teemp
(
nrek:string
)
With Index (idx1=nrek);



create view
var 
dat1:date 
dat2:date 
date1:date 
date2:date 
zdate:date
flag:boolean
myorg:string[151];
mydescr:string[21];
sort:string[20];
as
Select *
From basedoc, katorg, lastnumd, zayavki2,teemp _teemp

Where
((
word(60001)==lastnumd.lndtype

and word(201)==basedoc.viddoc
and dat1<<=basedoc.ddoc
and dat2>>=basedoc.ddoc
//and ''!=basedoc.nkvit

and basedoc.corg == katorg.nrec
//and teemp.nrek == zayavki2.Znom 
and dat1<<=zayavki2.zdat
and dat2>>=zayavki2.zdat

))
//order by_zdat by zayavki2.zdat
//order by_zdat_desc by zayavki2.zdat (desc)
bounds sort_zdat ordered by zayavki2.zdat
bounds sort_zdat_desc ordered by zayavki2.zdat (desc) 
//bounds sort_zdat_desc ordered by index zayavki2.zayavki_02 (desc)
bounds sort_znom ordered by zayavki2.znom
bounds sort_ddoc ordered by zayavki2.ddoc
bounds sort_nodoc ordered by zayavki2.nodoc
bounds sort_org  ordered by zayavki2.org
bounds sort_descr ordered by zayavki2.descr
bounds sort_status ordered by zayavki2.status
bounds sort_status_desc ordered by zayavki2.status (desc)
; 

window z_edit;
show at(,,73,5);

var wzdate:date;
var wsdate:date;
var wstime:time;
var wkdate:date;
var wktime:time;
var wzprim:string[70];

screen z_edit_screen show at(,,72,4);
fields 
wzdate:,noprotect;
wsdate:,noprotect;
wstime:,noprotect;
wkdate:,noprotect;
wktime:,noprotect;
wzprim:,noprotect;

buttons 
cmOK, default;
<<
 Дата заявки .@@@@@@@@@@    Отправка на склад .@@@@@@@@@@ .@@@@@@@@@@
 Поступление на склад 			      .@@@@@@@@@@ .@@@@@@@@@@
 Примечание
 .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 <.                              ok                                .>
>>
end;

handleevent
cmInit:
{
	wzdate:=zayavki2.zdat;
	wsdate:=zayavki2.sdate;
	wstime:=zayavki2.stime;
	wkdate:=zayavki2.kdate;
	wktime:=zayavki2.ktime;
	wzprim:=zayavki2.zprim;
}
cmOK:
{
	update current zayavki2 set
		zdat:=wzdate,
		zprim:=wzprim;

	if (mydescr='ALX' or mydescr='ALE' or mydescr='SME' or mydescr='KIM') {

		update current zayavki2 set
			sdate:=wsdate,
			stime:=wstime;
	}

	if (mydescr='ALX' or mydescr='ALE' or mydescr='POS') {
//		message('update current zayavki2 set kdate:='+string(wkdate)+', ktime:='+string(wktime)+';');
		update current zayavki2 set
			kdate:=wkdate,
			ktime:=wktime;
	}

	closewindow(z_edit);

	rereadrecord();
	RescanPanel (#zayavki2);
}
end;

end;



window do_select;

screen do_params show at(,,,1);
fields 
zdate:,noprotect;
buttons 
cmOK, default;
<<
 Дата заявки .@@@@@@@@@@  <. ok .>
>>
end;

panel P2
 show at(,2,,);
 browse Bro2
  table basedoc;
  fields
  basedoc.ddoc  'Дата' :[9],protect;
  basedoc.nodoc 'Номер':[8],protect;
  katorg.name   'Организация':[40],protect;
  end;
end;

handleevent
cmInit:
{
zdate:=cur_date;
flag:=false;
}
cmOK:
{
flag:=true;
closewindow(do_select);
}
end;

end;


screen params 
show at(,,,3);
fields 
date1:,noprotect;
date2:,noprotect;
buttons 
cmSelect;
cmAdd;
cmZEdit;
cmDel;
cmCancel;
<<
с .@@@@@@@@@@ по .@@@@@@@@@@   <.Выбрать/Обновить данные за период.>
<.Добавить.> <.Изменить статус.> <.Удалить.> <.  Закрыть интерфейс  .>
>>
end;

panel P1
show at(1,4,92,);
 browse Bro1
  table zayavki2;
  fields
 if (isValid(#_teemp), 'v', 'x'):[1],skip, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
// katorg.name 'Наименование организации':[30],protect, {FONT = { COLOR = IF( isvalid(tn_katorg), 3, 0)}};
  zayavki2.zdat   'Дата':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.znom   'Номер':[8],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  IF(zayavki2.status=0, 'нов.', IF(zayavki2.status=1, 'исп.', IF(zayavki2.status=2, 'резерв', 'готово'))) 'Статус':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.ddoc   'Дата с/ф':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.nodoc  'Номер с/ф':[8],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.descr  'Деск.':[5],protect,{FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};

  zayavki2.sdate   'Дата скл.>':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.stime  'Время скл.>':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};

  zayavki2.kdate   'Дата скл.^':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.ktime  'Время скл.^':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
                                            
  zayavki2.org    'Организация':[30],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.zprim  'Примечания':[30],protect,{FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
 end;

end;


handleevent
cmMarkUnMark: 
  	{message ('cmMarkUnMark');
	if not isValid(#_teemp)
		{
                insert in teemp set  teemp.nrek:=zayavki2.ZNOM;
                message(teemp.nrek);
                if getnext zayavki2 = tsOk {}
        	}
        else
               {
                delete from teemp where ((zayavki2.ZNOM==teemp.nrek));
                if getnext zayavki2 = tsOk {}
               }
	RescanPanel (#zayavki2);
	}

  cmSelectAll:
	{     message ('cmSelectAll');
	PushPos(tnzayavki2);
	_loop zayavki2 if not isValid(#_teemp) insert in teemp set teemp.nrek:=zayavki2.ZNOM;
	PopPos(tnzayavki2);
        RescanPanel (#zayavki2);
	}

  cmUnSelectAll: 
  	{ message ('cmUnSelectAll');
	  PushPos(tnzayavki2);
	  delete all from teemp;
	  PopPos(tnzayavki2);
          RescanPanel (#zayavki2);
	}
  cmInvertAll:
 
	{ // Обработка клавиши "Gray *"
	  message ('cmInvertAll');
          PushPos(tnzayavki2);
  	  _loop zayavki2
	  if not isValid(#_teemp)
               {
                 insert in teemp set teemp.nrek:=zayavki2.ZNOM;
               }
          else
               {
                 delete from teemp where ((zayavki2.ZNOM==teemp.nrek));
               }

	  PopPos(tnzayavki2);
          RescanPanel (#zayavki2);
	};


cmZEdit:
{
	var stat:word;

//	message(mydescr);

	if (mydescr<>'ALE' and mydescr<>'ALX' and mydescr<>'SME' and mydescr<>'KIM' and mydescr<>'POS') exit;

//	message('cmDefault');

//	0 - новая
//	1 - исполненная
//	2 - резерв
//	3 - другая


	stat := zayavki2.status;

//	message(stat);

	if (stat=3) stat:=0;
	else stat:=stat+1;

//	message(stat);
	
	update current zayavki2 set zayavki2.status := stat;

	rereadrecord();
	RescanPanel (#zayavki2);
}

cmColumnClicked: 
{
	case Target of
	#zayavki2.zdat :  {
//		SetOrder(tiby_zdat); 
//		SetOrder(tiby_zdat_desc); 
//		Pushbounds(tbsort_zdat);
//		Pushbounds(tbsort_zdat_desc);
//		settablebackorderin (#zayavki2, true); 

		Pushbounds(tbsort_zdat);

		if (sort='date-desc') then {
		        sort:='date-asc';
			settablebackorderin (#zayavki2, false); 
		} else {
			sort:='date-desc';
			settablebackorderin (#zayavki2, true); 
		}
	}
	#zayavki2.znom :  {
		Pushbounds(tbsort_znom);
	}
	#zayavki2.ddoc :  {
		Pushbounds(tbsort_ddoc);
	}
	#zayavki2.nodoc :  {
		Pushbounds(tbsort_nodoc);
	}
	#zayavki2.org   :  {
		Pushbounds(tbsort_org);
	}
	#zayavki2.descr :  {
		Pushbounds(tbsort_descr);
	}
	-1 :    {
		Pushbounds(tbsort_status);
//		Pushbounds(tbsort_status_desc);
	}

	end;

	rereadrecord();
	RescanPanel (#zayavki2);
}

cmInit:
{
myorg  := sGetTune('MyOrg');
mydescr  := sGetTune('USER.DESCR');

//message(mydescr + ' ' + myorg);

getfirst lastnumd;

date1:=sub_months(cur_date,3);
date2:=add_months(cur_date,1);
dat1:=date1;
dat2:=date2;
//message(dat1);

//getfirst zayavki2;
if getlast zayavki2 <> tsOk {};

Pushbounds(tbsort_zdat);
sort:='date-desc';
settablebackorderin (#zayavki2, true); 

rereadrecord(#zayavki2);
RescanPanel (#zayavki2);
}

cmSelect:
{
dat1:=date1;
dat2:=date2;

//message(dat1);

PopBounds(tnzayavki2);
if getlast zayavki2 <> tsOk {};

rereadrecord();
RescanPanel (#zayavki2);
}

cmAdd:
{
var  lastnum:integer;
var slastnum:string;

	rereadrecord();
	getfirst lastnumd;
	rereadrecord();

	RunWindowModal(do_select);

	if (flag=false) exit;

	//message(basedoc.ddoc + ' ' + basedoc.nodoc);

	lastnum:=integer(lastnumd.lndnum)+1;

	slastnum:=DoubleToStr(lastnum,'777777');

	update current lastnumd set lndnum:=slastnum;

		insert into zayavki2 set
			zayavki2.cbasedoc := basedoc.nrec,
			zayavki2.znom	 := slastnum,
			zayavki2.zdat	 := zdate,
			zayavki2.nodoc    := basedoc.nodoc,
			zayavki2.ddoc     := basedoc.ddoc,
			zayavki2.org	 := katorg.name,
			zayavki2.descr	 := basedoc.descr
			zayavki2.status   := 0;
	rereadrecord();
	RescanPanel (#zayavki2);
}

///////////////////////////УДАЛЕНИЕ ЗАЯВОК////////////////////////////
cmDel:
{
	if (mydescr<>'ALX' and mydescr<>'ALE' and mydescr<>'SME' and mydescr<>'KIM') exit;

	//delete current from zayavki2;
	//getfirst zayavki2;
	_loop zayavki2
          {
           _loop teemp
             {
              if(zayavki2.ZNOM=teemp.nrek) then
              message ('УРА ___ '+ zayavki2.znom);
             }

           }

	rereadrecord();
	RescanPanel (#zayavki2);
}

////////////////////////////////////////////////////////////////////ё

cmDefault:
{
	RunWindowModal(z_edit);
}

cmCancel:
{
	closeinterface(cmDone);
}

end;

end.


Ребята вопрос такой
Почему вот эта строка не срабатывает, что опять я не так делаю :lol:

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

if (isValid(#_teemp), 'v', 'x'):[1],skip, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
Почему #_teemp всегда в состоянии FALSE
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

может быть потому что
а) нет ни одного явного позиционирования на какую-либо запись _teemp
б) ни в одной из связок ЛТ нет _teemp, сл-но никак не получить позицию
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Прошу прощения за свои пять копеек, но разве с некоторого времени команда не cmDoMarkUnMark? Хотя, возможно, у вас более ранняя версия.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

RAJAH писал(а):Прошу прощения за свои пять копеек, но разве с некоторого времени команда не cmDoMarkUnMark? Хотя, возможно, у вас более ранняя версия.
хм.. у меня 27 Атлантис, и нормально юзается cmMarkUnMark
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Вспомнил! Где-то это я уже видел. Здесь http://www.tyumbit.ru/gal_forum/viewtopic.php?t=5794
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

Я нашла ошибку
вот теперь Код работает)Maverick Спасибо

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

/
Const
  xlColorBlack     = 0;
end;


//Interface _kor_zayavki 'Заявки' escclose,cyan;
Interface _gt_zayavki 'Заявки' (,,sci178InsPM) escclose;
show at(,,93,30);

table struct teemp
(
nrek:string
)
With Index (idx1=nrek);



create view
var 
dat1:date 
dat2:date 
date1:date 
date2:date 
zdate:date
flag:boolean
myorg:string[151];
mydescr:string[21];
sort:string[20];
as
Select *
From basedoc, katorg, lastnumd, zayavki2,teemp _teemp

Where
((
word(60001)==lastnumd.lndtype

and word(201)==basedoc.viddoc
and dat1<<=basedoc.ddoc
and dat2>>=basedoc.ddoc
//and ''!=basedoc.nkvit

and basedoc.corg == katorg.nrec
and  zayavki2.Znom==_teemp.nrek 

and dat1<<=zayavki2.zdat
and dat2>>=zayavki2.zdat

))
//order by_zdat by zayavki2.zdat
//order by_zdat_desc by zayavki2.zdat (desc)
bounds sort_zdat ordered by zayavki2.zdat
bounds sort_zdat_desc ordered by zayavki2.zdat (desc) 
//bounds sort_zdat_desc ordered by index zayavki2.zayavki_02 (desc)
bounds sort_znom ordered by zayavki2.znom
bounds sort_ddoc ordered by zayavki2.ddoc
bounds sort_nodoc ordered by zayavki2.nodoc
bounds sort_org  ordered by zayavki2.org
bounds sort_descr ordered by zayavki2.descr
bounds sort_status ordered by zayavki2.status
bounds sort_status_desc ordered by zayavki2.status (desc)
; 

window z_edit;
show at(,,73,5);

var wzdate:date;
var wsdate:date;
var wstime:time;
var wkdate:date;
var wktime:time;
var wzprim:string[70];

screen z_edit_screen show at(,,72,4);
fields 
wzdate:,noprotect;
wsdate:,noprotect;
wstime:,noprotect;
wkdate:,noprotect;
wktime:,noprotect;
wzprim:,noprotect;

buttons 
cmOK, default;
<<
 Дата заявки .@@@@@@@@@@    Отправка на склад .@@@@@@@@@@ .@@@@@@@@@@
 Поступление на склад 			      .@@@@@@@@@@ .@@@@@@@@@@
 Примечание
 .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 <.                              ok                                .>
>>
end;

handleevent
cmInit:
{
	wzdate:=zayavki2.zdat;
	wsdate:=zayavki2.sdate;
	wstime:=zayavki2.stime;
	wkdate:=zayavki2.kdate;
	wktime:=zayavki2.ktime;
	wzprim:=zayavki2.zprim;
}
cmOK:
{
	update current zayavki2 set
		zdat:=wzdate,
		zprim:=wzprim;

	if (mydescr='ALX' or mydescr='ALE' or mydescr='SME' or mydescr='KIM') {

		update current zayavki2 set
			sdate:=wsdate,
			stime:=wstime;
	}

	if (mydescr='ALX' or mydescr='ALE' or mydescr='POS') {
//		message('update current zayavki2 set kdate:='+string(wkdate)+', ktime:='+string(wktime)+';');
		update current zayavki2 set
			kdate:=wkdate,
			ktime:=wktime;
	}

	closewindow(z_edit);

	rereadrecord();
	RescanPanel (#zayavki2);
}
end;

end;



window do_select;

screen do_params show at(,,,1);
fields 
zdate:,noprotect;
buttons 
cmOK, default;
<<
 Дата заявки .@@@@@@@@@@  <. ok .>
>>
end;

panel P2
 show at(,2,,);
 browse Bro2
  table basedoc;
  fields
  basedoc.ddoc  'Дата' :[9],protect;
  basedoc.nodoc 'Номер':[8],protect;
  katorg.name   'Организация':[40],protect;
  end;
end;

handleevent
cmInit:
{
zdate:=cur_date;
flag:=false;
}
cmOK:
{
flag:=true;
closewindow(do_select);
}
end;

end;


screen params 
show at(,,,3);
fields 
date1:,noprotect;
date2:,noprotect;
buttons 
cmSelect;
cmAdd;
cmZEdit;
cmDel;
cmCancel;
<<
с .@@@@@@@@@@ по .@@@@@@@@@@   <.Выбрать/Обновить данные за период.>
<.Добавить.> <.Изменить статус.> <.Удалить.> <.  Закрыть интерфейс  .>
>>
end;

panel P1
show at(1,4,92,);
 browse Bro1
  table zayavki2;
  fields
 if (isValid(#_teemp), 'v', ''):[1],skip, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
// katorg.name 'Наименование организации':[30],protect, {FONT = { COLOR = IF( isvalid(tn_katorg), 3, 0)}};
  zayavki2.zdat   'Дата':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.znom   'Номер':[8],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  IF(zayavki2.status=0, 'нов.', IF(zayavki2.status=1, 'исп.', IF(zayavki2.status=2, 'резерв', 'готово'))) 'Статус':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.ddoc   'Дата с/ф':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.nodoc  'Номер с/ф':[8],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.descr  'Деск.':[5],protect,{FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};

  zayavki2.sdate   'Дата скл.>':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.stime  'Время скл.>':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};

  zayavki2.kdate   'Дата скл.^':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.ktime  'Время скл.^':[9],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
                                            
  zayavki2.org    'Организация':[30],protect, {FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
  zayavki2.zprim  'Примечания':[30],protect,{FONT = { COLOR = IF( zayavki2.status = 1, 3, IF (zayavki2.status =2, 2, IF (zayavki2.status =3, 13, 0)))}};
 end;

end;


handleevent
cmMarkUnMark: 
  	{//message ('cmMarkUnMark');
	if not isValid(#_teemp)
		{
                insert in teemp set  teemp.nrek:=zayavki2.ZNOM;
                //message(teemp.nrek);
                if getnext zayavki2 = tsOk {}
        	}
        else
               {
                delete from teemp where ((zayavki2.ZNOM==teemp.nrek));
                if getnext zayavki2 = tsOk {}
               }
	RescanPanel (#zayavki2);
	}

  cmSelectAll:
	{   //  message ('cmSelectAll');
	PushPos(tnzayavki2);
	_loop zayavki2 if not isValid(#_teemp) insert in teemp set teemp.nrek:=zayavki2.ZNOM;
	PopPos(tnzayavki2);
        RescanPanel (#zayavki2);
	}

  cmUnSelectAll: 
  	{ //message ('cmUnSelectAll');
	  PushPos(tnzayavki2);
	  delete all from teemp;
	  PopPos(tnzayavki2);
          RescanPanel (#zayavki2);
	}
  cmInvertAll:
 
	{ // Обработка клавиши "Gray *"
	  //message ('cmInvertAll');
          PushPos(tnzayavki2);
  	  _loop zayavki2
	  if not isValid(#_teemp)
               {
                 insert in teemp set teemp.nrek:=zayavki2.ZNOM;
               }
          else
               {
                 delete from teemp where ((zayavki2.ZNOM==teemp.nrek));
               }

	  PopPos(tnzayavki2);
          RescanPanel (#zayavki2);
	};


cmZEdit:
{
	var stat:word;

//	message(mydescr);

	if (mydescr<>'ALE' and mydescr<>'ALX' and mydescr<>'SME' and mydescr<>'KIM' and mydescr<>'POS') exit;

//	message('cmDefault');

//	0 - новая
//	1 - исполненная
//	2 - резерв
//	3 - другая


	stat := zayavki2.status;

//	message(stat);

	if (stat=3) stat:=0;
	else stat:=stat+1;

//	message(stat);
	
	update current zayavki2 set zayavki2.status := stat;

	rereadrecord();
	RescanPanel (#zayavki2);
}

cmColumnClicked: 
{
	case Target of
	#zayavki2.zdat :  {
//		SetOrder(tiby_zdat); 
//		SetOrder(tiby_zdat_desc); 
//		Pushbounds(tbsort_zdat);
//		Pushbounds(tbsort_zdat_desc);
//		settablebackorderin (#zayavki2, true); 

		Pushbounds(tbsort_zdat);

		if (sort='date-desc') then {
		        sort:='date-asc';
			settablebackorderin (#zayavki2, false); 
		} else {
			sort:='date-desc';
			settablebackorderin (#zayavki2, true); 
		}
	}
	#zayavki2.znom :  {
		Pushbounds(tbsort_znom);
	}
	#zayavki2.ddoc :  {
		Pushbounds(tbsort_ddoc);
	}
	#zayavki2.nodoc :  {
		Pushbounds(tbsort_nodoc);
	}
	#zayavki2.org   :  {
		Pushbounds(tbsort_org);
	}
	#zayavki2.descr :  {
		Pushbounds(tbsort_descr);
	}
	-1 :    {
		Pushbounds(tbsort_status);
//		Pushbounds(tbsort_status_desc);
	}

	end;

	rereadrecord();
	RescanPanel (#zayavki2);
}

cmInit:
{
myorg  := sGetTune('MyOrg');
mydescr  := sGetTune('USER.DESCR');
//message(mydescr + ' ' + myorg);

getfirst lastnumd;

date1:=sub_months(cur_date,3);
date2:=add_months(cur_date,1);
dat1:=date1;
dat2:=date2;
//message(dat1);

//getfirst zayavki2;
if getlast zayavki2 <> tsOk {};

Pushbounds(tbsort_zdat);
sort:='date-desc';
settablebackorderin (#zayavki2, true); 

rereadrecord(#zayavki2);
RescanPanel (#zayavki2);
}

cmSelect:
{
dat1:=date1;
dat2:=date2;

//message(dat1);

PopBounds(tnzayavki2);
if getlast zayavki2 <> tsOk {};

rereadrecord();
RescanPanel (#zayavki2);
}

cmAdd:
{
var  lastnum:integer;
var slastnum:string;

	rereadrecord();
	getfirst lastnumd;
	rereadrecord();

	RunWindowModal(do_select);

	if (flag=false) exit;

	//message(basedoc.ddoc + ' ' + basedoc.nodoc);

	lastnum:=integer(lastnumd.lndnum)+1;

	slastnum:=DoubleToStr(lastnum,'777777');

	update current lastnumd set lndnum:=slastnum;

		insert into zayavki2 set
			zayavki2.cbasedoc := basedoc.nrec,
			zayavki2.znom	 := slastnum,
			zayavki2.zdat	 := zdate,
			zayavki2.nodoc    := basedoc.nodoc,
			zayavki2.ddoc     := basedoc.ddoc,
			zayavki2.org	 := katorg.name,
			zayavki2.descr	 := basedoc.descr
			zayavki2.status   := 0;
	rereadrecord();
	RescanPanel (#zayavki2);
}

///////////////////////////УДАЛЕНИЕ ЗАЯВОК////////////////////////////
cmDel:
{
	if (mydescr<>'ALX' and mydescr<>'ALE' and mydescr<>'SME' and mydescr<>'KIM') exit;

	//delete current from zayavki2;
	//getfirst zayavki2;
         //message ('текущая'+ zayavki2.znom);
	_loop zayavki2
          {
           _loop teemp
             {
              if(zayavki2.ZNOM=teemp.nrek) then
              {
              //message ('УРА ___ '+ zayavki2.znom);
              delete current from zayavki2;
              getfirst zayavki2;
              }
             }

           }

	rereadrecord();
	RescanPanel (#zayavki2);
}

////////////////////////////////////////////////////////////////////ё

cmDefault:
{
	RunWindowModal(z_edit);
}

cmCancel:
{
	closeinterface(cmDone);
}

end;




end.

Вот только вопрос как ускорить удаление из таблицы zayavki2.
Как оптимизировать поиск?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

external _loop zayavki2
{ if isvalid(#teemp )
delete current zayavki2;
}
или
delete zayavki2 where (( ... and zayavki2.ZNOM /==teemp.nrek )) ;
Ответить