Вопрос про событие

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

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

snoopy
Новичок
Сообщения: 23
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Тюмень

Вопрос про событие

Сообщение snoopy »

Есть необходимость обработать запись при переходе на другую запись, cmPositionChanged не подходит так как он срабатывает когда уже перешел на другую запись, есть ли событие срабатывающее до cmPositionChanged?
Тоесть до перехода на другую запись. ???
paul
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49
Откуда: урал -

Re: Вопрос про событие

Сообщение paul »

cmCheckRecord
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вопрос про событие

Сообщение Руслан »

Сделал protectrecord(#normzapas, true); protectrecord(#normzapasspec, true); в событии cmpositionchanged. После этого интерфейс ведет себя совсем странно, статусы меняются во всех документах, выбираешь в одном, меняется во всех документах.

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

#include %src%\src\normzapas.vih;
#include %src%\src\vipInterface.h;
!#include %src%\src\GetKau.vih
!#include %src%\src\Galnet.ccm;
interface Normzapas 'Нормы страхового запаса';
!#include %src%\src\GetKau.var
 show   at   (,,92,25);
	const
	  cmPrintDoc = 3440;
	end;
 var
 	nr,mcnrec,katednrec,katpodrnrec,linenrec,formatnrec,katstannrec,ctitle,titlenrec,specnrec, katnotesnrec: comp;
	pptitlenrec,unitm:comp;
	wkl,grant_s, check_del, checkspecif,check_screen:boolean;
 	 res,check_i : word;
	 nmc:string;
	 pdate, pbdate, pedate : date;
	 statusnnrec:comp;
	 UnMea,plancopy:string;
	 somewindow:longint;
	 n:longint;
	 wValues: array [1..3] of word;
	 lValues: array [1..3] of comp;
	 sValues: array [1..1] of string;
	 begindate,enddate:date;
	 sort1,teh_poteri,dek1,dek2,dek3,summ_plan,poludek1,poludek2,poludek3,summ_polu:double;
	 sum_gresbordur,gresbordur1,gresbordur2,gresbordur3:double;
	 sum_vstavka,vstavka1,vstavka2,vstavka3:double;
	 maxi,maxs:word;
	 butpick:longInt;
	 nomer_plana,formatname:string;
	 linia_name,podrasd,titlenpp:string;
	 status_plana,old_status,old_linia :comp;
	 v1 : iSecurity_norm;

create view normz
var status,linia_filter,grup_filter,format_filter, nomer_plana: word;
	x:integer;
	fldselect:longint;
	linia,gruppa,etalon,format,titlenrec,specifnrec,specifnrec2,specifnrec3, pmc:comp;
(Vsego,meash)
 as select katpodr.name,normzapas.npp, *
from normzapas, normzapasspec, katpodr, katmc, x$users, katnotes, katpodr katpodr_2, ppstatus//, katmc katmc_2
where((	normzapas.cpodrazd==katpodr.nrec
        and normzapas.atl_nrec == normzapasspec.cnorm
   		and normzapasspec.cmc==katmc.nrec
!		and comp(userid) == normzapas.atl_owner
	    and normzapas.atl_owner==x$users.atl_nrec
	    and katpodrnrec == katpodr_2.nrec
		and normzapas.cstatus == katnotes.nrec
!	    and katmc.nrec == katmc_2.nrec
!		and pmc == katmc.nrec
		))
		order by normzapas.npp;

window NormCorrect 'Редактирование норм';
show at(,,,28);
toolbar F_Common::tbPrintDoc;
handleevent
    cmPrintDoc:
												{
												   UpdateTable();
												   res:=RunInterface('ireport',titlenrec);
												}
end;
			screen sCornormzapas(,,sci1EnEsc); //SciAqaSwitchItemName
			show at (,,,10);
			table katpodr;
			bevel be1 {1,0,110,10,bsRaised, bsFrame};
				fields
					normzapas.pdate :protect;
					normzapas.pbdate:noprotect;
					normzapas.pedate:noprotect;
					normzapas.npp:protect,noPickButton; //:noprotect; //(,,sciAQACancel1)
					katpodr.name :pickButton, protect;
!					status  : [ list 'item 1', 'item 2', 'item 3' ];
!					ppstatus.name (,,SciAqaSwitchItemName) : [ list 'item 1', 'item 2', 'item 3' ];
					katnotes.name :pickButton, protect;

<<

                     Дата         Начало действия         Конец действия
                    .@@@@@@@@@      .@@@@@@@@@            .@@@@@@@@@
                    Номер            Структурное подразделение
		            .@@@@@@@@@@@@   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                       Статус  .@@@@@@@@@@@@@@@@@@@@@
>>
			end;
!			browse bCornormzapas(,,Sci13478Esc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc)
				browse bCornormzapas(,,Sci178EnEsc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc) sci1478EnEscTreeI
						show at (,11,,22)
							  table normzapasspec;
			 fields
					katmc.name 'Наименование МЦ' : [20], pickButton;
					normzapasspec.kol 'Количество':[5,'666.88'],noprotect,noPickButton;
			end;
			procedure grants();
				{
												if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = FALSE )
													{
															cfsSetProp('bnormzapas','StatusCtx', Sci17EnEsc);
															cfsSetProp('bCornormzapas','StatusCtx',sciAQACancel1);
															cfsSetProp('status','StatusCtx',SciAqaSwitchItemName);
															SetFormat(sCornormzapas);
				   //										 cfsSetProp('sCorPPlan_nogrant','StatusCtx',sciAQACancel1);
														   // SetFieldOption(#ppspecif.npp,ofProtected);
															grant_s:=false;
			//												message('grant_s false');
													}
													else if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = true )
													{
													   if( getfirst x$users where (( sGetTune('USER.descr') == x$users.XU$LOGINNAME )) = tsOk )
													   {
				   //									   cfsSetCurrentContainer('Plan.PlanCorrect.sCorPPlan');
				   //									   cfsCreateObject('button', 'sCorPPlan', 'Etalons', false, butpick);
														   if (x$users.xu$type=1)
														   {
															 // SetFieldOption(#ppspecif.npp,ofSelectable);
				   //											 if (x$users.xu$type=1 and x$users.xu$loginname='pivovarchukaa')
				   //												 {
																	   //message('full_grants');
																	   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
																	   SetFormat(sCornormzapas);
																	   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
																	   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
				   //												 }
			//	   													   message('grant_s true');
														   }
														   else
														   {
															   //message('grants');
															   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
															   SetFormat(sCornormzapas);
															   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
															   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
														   }
																grant_s:=true;
													   }
													}
													rescanpanel(#normzapas);
				}
         tableevent table normzapasspec
										 cmSetDefault:
										 {
										 set normzapasspec.cnorm :=normzapas.atl_nrec
										 }
										 cmUpdateRecord :
										 { //if grant_s=false
																						 //{
										  update current normzapasspec;
																		 //}
										 }
											cminsertrecord:
											{
											insert current normzapasspec;
											UpDatePanels();
											}
											cmDeleteRecord :
											 {
											Delete Current normzapasspec;
											 }
		 end;
end;

						  browse bnormzapas(,,Sci178EnEsc)
							  table normzapas;
							  fields
								  normzapas.pdate   'Дата' : [15] , protect, noAutoSize;
 								  normzapas.npp   'Номер' : [25], protect, noAutoSize;
								  katpodr.name   'Подразделение' : [25] , protect, noAutoSize;
							      x$users.xu$fullname 'Создатель':[20],protect,noAutoSize;
						          katnotes.name 'Статус':[20],protect,noAutoSize;
						  end;
						   //end;
						  tableevent table normzapas

							 cmSetDefault: {
														normzapas.pdate:=Cur_Date();
														normzapas.cpodrazd:=0;
														normzapas.cstatus := comp ('4001F55A5B805E36h')
														normzapas.npp := 1;
														SetModified(true);
														UpDateTableWithInserted
														 PutCommand(cmDefault);
											}
							cmUpdateRecord :{ //if grant_s=false
							  					//{
												  	update current normzapas;
												//}
										 	}
							cmInsertRecord :{
							   					insert current normzapas;
!							                    insert current normzapasspec;
												UpDatePanels();
											}
							cmDeleteRecord :
							{
							  if Message('Удалить нормы?', yesButton + noButton) = cmYes
								{
								    Delete Current normzapas;
								Delete Current normzapasspec;
								}

							}
							cmCheckRecord:
 							{
									MakeValid(#normzapas);
									if isvalid(#normzapas)
											{
									update current normzapas;
											}
									if isnew
											{
									Putcommand(cmInsertRecord);
											}

							}
							cmCheckField:
							  {
									updatetable;
									SetModified(true);
									  case CurField of
										#normzapas.pbdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pedate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.npp:
										{
									  	  update current normzapas;
										  RescanPanel(#normzapas);
										}
										end;
							  }
							end;

							handleEvent
										cmInit:
										{
										 RescanPanel(Scornormzapas);
										   Rescanpanel(#normzapas);
										}
									cmPick:
									{
											  Updatetable();
											  case CurField of
												#katnotes.name:
												{
												 res:=RunInterface('L_DOGOVOR::GETSOMKATNOTES', 0, word(1), 0, false, katnotesnrec);
												 normzapas.cstatus:=katnotesnrec
												 update current normzapas;
												 if getfirst katnotes where((normzapas.cstatus==katnotes.nrec))=tsOk
												 {
												 }
												 RescanPanel(#normzapas);
												}
												#katpodr.name:
												{
												  katpodrnrec:=normzapas.cpodrazd;
												  res:=RunInterface('Z_KATPODR::GETANYPODR',katpodrnrec);
												  normzapas.cpodrazd:=katpodrnrec
												  update current normzapas;
												if getfirst katpodr where((normzapas.cpodrazd==katpodr.nrec))=tsOk
												  {
												  }
												  RescanPanel(#normzapas);
												}
												#katmc.name:
												{
												pmc := normzapasspec.cmc;
												res := runinterface('L_MCU::GetSomeMC_KatMC', pmc, false, -12345);//вызов интерфейса выбора МЦ без ввода количества
!												res := runinterface('L_MCU::GetSomeMC', pmc);
!												res := runinterface('iGetKau.GetCodeKau', pmc);
												normzapasspec.cmc := pmc;
												update current normzapasspec;
												if getfirst katmc where((normzapasspec.cmc==katmc.nrec))=tsOk
												  {
												  }
												RescanPanel(#normzapasspec);
												}
											  end;
										}
										cmCheckField : update current normzapas;
									cmCancel:
									{
									}
									cmpositionchanged:
									{
									  if getfirst normzapas where((comp(4612066703671205222) == normzapas.cstatus))=tsOk
									  {
									  protectrecord(#normzapas, true);
									  protectrecord(#normzapasspec, true);
									  }
									  if getfirst normzapas where((comp(4612010840391242927) == normzapas.cstatus))=tsOk
									  {
									  protectrecord(#normzapas, true);
									  protectrecord(#normzapasspec, true);
									  }
									}
									cmPrintDoc:
											{
											   UpdateTable();
											   res:=RunInterface('ireport',titlenrec);
											}
									cmClose:
									{
									   CloseWindow(cmDefault);
									}
									cmDefault:
									{
										   PutCommand(cmCheckField);
										   runwindowmodal(NormCorrect);
									  Rescanpanel(#normzapas);
									}
									cmInsert:
									{
!			   message('cminsert1');
!			titlenrec:=normzapas.atl_nrec;
!			maxs:=normzapas.npp;
!			specnrec:=normzapas.npp;
!!			_loop normzapas where ((titlenrec==normzapas.atl_nrec))
!!			{
!			   if (maxs<normzapas.npp) or (maxs=normzapas.npp)
!			   {
!			   message('cminsert2');
!			   normzapas.npp:=normzapas.npp+1;
!				  	update current normzapas;
!			   }
!//			   maxs:=maxs+1;
!!			}
!			maxs:=maxs+1;
									}
									cmDelete:
									{

									}
									cmDone:
									{
										  rescanpanel(#normzapas);
									}
							end;
end.

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

Re: Вопрос про событие

Сообщение edward_K »

Get fist katnotes явно лишнее
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вопрос про событие

Сообщение Руслан »

edward_K писал(а):Get fist katnotes явно лишнее
Убрал getfirst, ничего не изменилось...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Вопрос про событие

Сообщение edward_K »

Вместо это фигни
Руслан писал(а):Сделал protectrecord(#normzapas, true); protectrecord(#normzapasspec, true); в событии cmpositionchanged. После этого интерфейс ведет себя совсем странно, статусы меняются во всех документах, выбираешь в одном, меняется во всех документах.

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

									cmpositionchanged:
									{
									  if getfirst normzapas where((comp(4612066703671205222) == normzapas.cstatus))=tsOk
									  {
									  protectrecord(#normzapas, true);
									  protectrecord(#normzapasspec, true);
									  }
									  if getfirst normzapas where((comp(4612010840391242927) == normzapas.cstatus))=tsOk
									  {
									  protectrecord(#normzapas, true);
									  protectrecord(#normzapasspec, true);
									  }
									}
									

следует написать типа

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

var ww_stattus
ww_status:=0;
if isvalid(tnKatNotes)
  ww_status:=katnotes.status;
ProtectRecord(tnnormzapas,ww_status<>0);
на sp вроде как не нужно. И еще - это событие вроде как табличное.
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вопрос про событие

Сообщение Руслан »

Возникает ошибка "Ожидалось ":" (стр.304, поз.12 в D:\NET\VIP\TEST\PROEKT\ADD_CU_MENU\SRC\normzapas.vip) ww_status:=0;"

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

#include %src%\src\normzapas.vih;
#include %src%\src\vipInterface.h;
!#include %src%\src\GetKau.vih
!#include %src%\src\Galnet.ccm;
interface Normzapas 'Нормы страхового запаса';
!#include %src%\src\GetKau.var
 show   at   (,,92,25);
	const
	  cmPrintDoc = 3440;
	end;
 var
 	nr,mcnrec,katednrec,katpodrnrec,linenrec,formatnrec,katstannrec,ctitle,titlenrec,specnrec, katnotesnrec: comp;
	pptitlenrec,unitm:comp;
	wkl,grant_s, check_del, checkspecif,check_screen:boolean;
 	 res,check_i : word;
	 nmc:string;
	 pdate, pbdate, pedate : date;
	 statusnnrec:comp;
	 UnMea,plancopy:string;
	 somewindow:longint;
	 n:longint;
	 wValues: array [1..3] of word;
	 lValues: array [1..3] of comp;
	 sValues: array [1..1] of string;
	 begindate,enddate:date;
	 sort1,teh_poteri,dek1,dek2,dek3,summ_plan,poludek1,poludek2,poludek3,summ_polu:double;
	 sum_gresbordur,gresbordur1,gresbordur2,gresbordur3:double;
	 sum_vstavka,vstavka1,vstavka2,vstavka3:double;
	 maxi,maxs:word;
	 butpick:longInt;
	 nomer_plana,formatname:string;
	 linia_name,podrasd,titlenpp:string;
	 status_plana,old_status,old_linia :comp;
	 v1 : iSecurity_norm;

create view normz
var status,linia_filter,grup_filter,format_filter, nomer_plana: word;
	x:integer;
	fldselect:longint;
	linia,gruppa,etalon,format,titlenrec,specifnrec,specifnrec2,specifnrec3, pmc:comp;
(Vsego,meash)
 as select katpodr.name,normzapas.npp, *
from normzapas, normzapasspec, katpodr, katmc, x$users, katnotes, katpodr katpodr_2, ppstatus//, katmc katmc_2
where((	normzapas.cpodrazd==katpodr.nrec
        and normzapas.atl_nrec == normzapasspec.cnorm
   		and normzapasspec.cmc==katmc.nrec
!		and comp(userid) == x$users.atl_nrec //normzapas.atl_owner
	    and normzapas.atl_owner==x$users.atl_nrec
	    and katpodrnrec == katpodr_2.nrec
		and normzapas.cstatus == katnotes.nrec
!	    and katmc.nrec == katmc_2.nrec
!		and pmc == katmc.nrec
		))
		order by normzapas.npp;

window NormCorrect 'Редактирование норм';
show at(,,,28);
toolbar F_Common::tbPrintDoc;
handleevent
    cmPrintDoc:
												{
												   UpdateTable();
												   res:=RunInterface('ireport',titlenrec);
												}
end;
			screen sCornormzapas(,,sci1EnEsc); //SciAqaSwitchItemName
			show at (,,,10);
			table katpodr;
			bevel be1 {1,0,110,10,bsRaised, bsFrame};
				fields
					normzapas.pdate :protect;
					normzapas.pbdate:noprotect;
					normzapas.pedate:noprotect;
					normzapas.npp:protect,noPickButton; //:noprotect; //(,,sciAQACancel1)
					katpodr.name :pickButton, protect;
!					status  : [ list 'item 1', 'item 2', 'item 3' ];
!					ppstatus.name (,,SciAqaSwitchItemName) : [ list 'item 1', 'item 2', 'item 3' ];
					katnotes.name :pickButton, protect;

<<

                     Дата         Начало действия         Конец действия
                    .@@@@@@@@@      .@@@@@@@@@            .@@@@@@@@@
                    Номер            Структурное подразделение
		            .@@@@@@@@@@@@   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                       Статус  .@@@@@@@@@@@@@@@@@@@@@
>>
			end;
!			browse bCornormzapas(,,Sci13478Esc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc)
				browse bCornormzapas(,,Sci178EnEsc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc) sci1478EnEscTreeI
						show at (,11,,22)
							  table normzapasspec;
			 fields
					katmc.name 'Наименование МЦ' : [20], pickButton;
					normzapasspec.kol 'Количество':[5,'666.88'],noprotect,noPickButton;
			end;
			procedure grants();
				{
												if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = FALSE )
													{
															cfsSetProp('bnormzapas','StatusCtx', Sci17EnEsc);
															cfsSetProp('bCornormzapas','StatusCtx',sciAQACancel1);
															cfsSetProp('status','StatusCtx',SciAqaSwitchItemName);
															SetFormat(sCornormzapas);
				   //										 cfsSetProp('sCorPPlan_nogrant','StatusCtx',sciAQACancel1);
														   // SetFieldOption(#ppspecif.npp,ofProtected);
															grant_s:=false;
			//												message('grant_s false');
													}
													else if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = true )
													{
													   if( getfirst x$users where (( sGetTune('USER.descr') == x$users.XU$LOGINNAME )) = tsOk )
													   {
				   //									   cfsSetCurrentContainer('Plan.PlanCorrect.sCorPPlan');
				   //									   cfsCreateObject('button', 'sCorPPlan', 'Etalons', false, butpick);
														   if (x$users.xu$type=1)
														   {
															 // SetFieldOption(#ppspecif.npp,ofSelectable);
				   //											 if (x$users.xu$type=1 and x$users.xu$loginname='pivovarchukaa')
				   //												 {
																	   //message('full_grants');
																	   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
																	   SetFormat(sCornormzapas);
																	   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
																	   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
				   //												 }
			//	   													   message('grant_s true');
														   }
														   else
														   {
															   //message('grants');
															   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
															   SetFormat(sCornormzapas);
															   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
															   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
														   }
																grant_s:=true;
													   }
													}
													rescanpanel(#normzapas);
				}
         tableevent table normzapasspec
										 cmSetDefault:
										 {
										 set normzapasspec.cnorm :=normzapas.atl_nrec
										 }
										 cmUpdateRecord :
										 { //if grant_s=false
																						 //{
										  update current normzapasspec;
																		 //}
										 }
											cminsertrecord:
											{
											insert current normzapasspec;
											UpDatePanels();
											}
											cmDeleteRecord :
											 {
											Delete Current normzapasspec;
											 }
		 end;
end;

						  browse bnormzapas(,,Sci178EnEsc)
							  table normzapas;
							  fields
								  normzapas.pdate   'Дата' : [15] , protect, noAutoSize;
 								  normzapas.npp   'Номер' : [25], protect, noAutoSize;
								  katpodr.name   'Подразделение' : [25] , protect, noAutoSize;
							      x$users.xu$fullname 'Создатель':[20],protect,noAutoSize;
						          katnotes.name 'Статус':[20],protect,noAutoSize;
						  end;
						   //end;
						  tableevent table normzapas

							 cmSetDefault: {
														normzapas.pdate:=Cur_Date();
														normzapas.cpodrazd:=0;
														normzapas.cstatus := comp ('4001F55A5B805E36h')
														normzapas.npp := 1;
														SetModified(true);
														UpDateTableWithInserted
														 PutCommand(cmDefault);
											}
							cmUpdateRecord :{ //if grant_s=false
							  					//{
												  	update current normzapas;
												//}
										 	}
							cmInsertRecord :{
							   					insert current normzapas;
!							                    insert current normzapasspec;
												UpDatePanels();
											}
							cmDeleteRecord :
							{
							  if Message('Удалить нормы?', yesButton + noButton) = cmYes
								{
								    Delete Current normzapas;
								Delete Current normzapasspec;
								}

							}
							cmCheckRecord:
 							{
									MakeValid(#normzapas);
									if isvalid(#normzapas)
											{
									update current normzapas;
											}
									if isnew
											{
									Putcommand(cmInsertRecord);
											}

							}
							cmCheckField:
							  {
									updatetable;
									SetModified(true);
									  case CurField of
										#normzapas.pbdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pedate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.npp:
										{
									  	  update current normzapas;
										  RescanPanel(#normzapas);
										}
										end;
							  }
							end;

							handleEvent
										cmInit:
										{
!										if getfirst normzapas where((comp(userid) == normzapas.atl_owner))=tsOk
!																							{

!																							}
										 RescanPanel(Scornormzapas);
										   Rescanpanel(#normzapas);
										}
									cmPick:
									{
											  Updatetable();
											  case CurField of
												#katnotes.name:
												{
												 res:=RunInterface('L_DOGOVOR::GETSOMKATNOTES', 0, word(1), 0, false, katnotesnrec);
												 normzapas.cstatus:=katnotesnrec
												 update current normzapas;
												 if getfirst katnotes where((normzapas.cstatus==katnotes.nrec))=tsOk
												 {
												 }
												 RescanPanel(#normzapas);
												}
												#katpodr.name:
												{
												  katpodrnrec:=normzapas.cpodrazd;
												  res:=RunInterface('Z_KATPODR::GETANYPODR',katpodrnrec);
												  normzapas.cpodrazd:=katpodrnrec
												  update current normzapas;
												if getfirst katpodr where((normzapas.cpodrazd==katpodr.nrec))=tsOk
												  {
												  }
												  RescanPanel(#normzapas);
												}
												#katmc.name:
												{
												pmc := normzapasspec.cmc;
												res := runinterface('L_MCU::GetSomeMC_KatMC', pmc, false, -12345);//вызов интерфейса выбора МЦ без ввода количества
!												res := runinterface('L_MCU::GetSomeMC', pmc);
!												res := runinterface('iGetKau.GetCodeKau', pmc);
												normzapasspec.cmc := pmc;
												update current normzapasspec;
												if getfirst katmc where((normzapasspec.cmc==katmc.nrec))=tsOk
												  {
												  }
												RescanPanel(#normzapasspec);
												}
											  end;
										}
										cmCheckField : update current normzapas;
									cmCancel:
									{
									}
									cmpositionchanged:
									{
									  var ww_stattus
									  ww_status:=0;
									  if isvalid(tnKatNotes)
										ww_status:=katnotes.status;
									  ProtectRecord(tnnormzapas,ww_status<>0);
!									  if getfirst normzapas where((comp(4612066703671205222) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
!									  if getfirst normzapas where((comp(4612010840391242927) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
									}
									cmPrintDoc:
											{
											   UpdateTable();
											   res:=RunInterface('ireport',titlenrec);
											}
									cmClose:
									{
									   CloseWindow(cmDefault);
									}
									cmDefault:
									{
										   PutCommand(cmCheckField);
										   runwindowmodal(NormCorrect);
									  Rescanpanel(#normzapas);
									}
									cmInsert:
									{
!			   message('cminsert1');
!			titlenrec:=normzapas.atl_nrec;
!			maxs:=normzapas.npp;
!			specnrec:=normzapas.npp;
!!			_loop normzapas where ((titlenrec==normzapas.atl_nrec))
!!			{
!			   if (maxs<normzapas.npp) or (maxs=normzapas.npp)
!			   {
!			   message('cminsert2');
!			   normzapas.npp:=normzapas.npp+1;
!				  	update current normzapas;
!			   }
!//			   maxs:=maxs+1;
!!			}
!			maxs:=maxs+1;
									}
									cmDelete:
									{

									}
									cmDone:
									{
										  rescanpanel(#normzapas);
									}
							end;
end.

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

Re: Вопрос про событие

Сообщение edward_K »

я часто пишу с планшета - вы уж дописывайте сами то.
Например
var ww_stattus:word;
Через переменную - чтобы отработать не подвязанный статус. Вообще обычно в таблице вместе с cNote есть поле status:word - тогда можно проверять только его.
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вопрос про событие

Сообщение Руслан »

Сделал, но проблема в том, что когда дату изменяешь пишет "Попытка модифицировать заблокированную запись", но дату меняет. Когда выбираешь подразделение вообще никакого сообщения не появляется и подразделение успешно меняется.

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

#include %src%\src\normzapas.vih;
#include %src%\src\vipInterface.h;
!#include %src%\src\GetKau.vih
!#include %src%\src\Galnet.ccm;
interface Normzapas 'Нормы страхового запаса';
!#include %src%\src\GetKau.var
 show   at   (,,92,25);
	const
	  cmPrintDoc = 3440;
	end;
 var
 	nr,mcnrec,katednrec,katpodrnrec,linenrec,formatnrec,katstannrec,ctitle,titlenrec,specnrec, katnotesnrec: comp;
	pptitlenrec,unitm:comp;
	wkl,grant_s, check_del, checkspecif,check_screen:boolean;
 	 res,check_i : word;
	 nmc:string;
	 pdate, pbdate, pedate : date;
	 statusnnrec:comp;
	 UnMea,plancopy:string;
	 somewindow:longint;
	 n:longint;
	 wValues: array [1..3] of word;
	 lValues: array [1..3] of comp;
	 sValues: array [1..1] of string;
	 begindate,enddate:date;
	 sort1,teh_poteri,dek1,dek2,dek3,summ_plan,poludek1,poludek2,poludek3,summ_polu:double;
	 sum_gresbordur,gresbordur1,gresbordur2,gresbordur3:double;
	 sum_vstavka,vstavka1,vstavka2,vstavka3:double;
	 maxi,maxs:word;
	 butpick:longInt;
	 nomer_plana,formatname:string;
	 linia_name,podrasd,titlenpp:string;
	 status_plana,old_status,old_linia :comp;
	 v1 : iSecurity_norm;

create view normz
var status,linia_filter,grup_filter,format_filter, nomer_plana: word;
	x:integer;
	fldselect:longint;
	linia,gruppa,etalon,format,titlenrec,specifnrec,specifnrec2,specifnrec3, pmc:comp;
(Vsego,meash)
 as select katpodr.name,normzapas.npp, *
from normzapas, normzapasspec, katpodr, katmc, x$users, katnotes, katpodr katpodr_2, ppstatus//, katmc katmc_2
where((	normzapas.cpodrazd==katpodr.nrec
        and normzapas.atl_nrec == normzapasspec.cnorm
   		and normzapasspec.cmc==katmc.nrec
!		and comp(userid) == x$users.atl_nrec //normzapas.atl_owner
	    and normzapas.atl_owner==x$users.atl_nrec
	    and katpodrnrec == katpodr_2.nrec
		and normzapas.cstatus == katnotes.nrec
!	    and katmc.nrec == katmc_2.nrec
!		and pmc == katmc.nrec
		))
		order by normzapas.npp;

window NormCorrect 'Редактирование норм';
show at(,,,28);
toolbar F_Common::tbPrintDoc;
handleevent
    cmPrintDoc:
												{
												   UpdateTable();
												   res:=RunInterface('ireport',titlenrec);
												}
end;
			screen sCornormzapas(,,sci1EnEsc); //SciAqaSwitchItemName
			show at (,,,10);
			table katpodr;
			bevel be1 {1,0,110,10,bsRaised, bsFrame};
				fields
					normzapas.pdate :protect;
					normzapas.pbdate:noprotect;
					normzapas.pedate:noprotect;
					normzapas.npp:protect,noPickButton; //:noprotect; //(,,sciAQACancel1)
					katpodr.name :pickButton, protect;
!					status  : [ list 'item 1', 'item 2', 'item 3' ];
!					ppstatus.name (,,SciAqaSwitchItemName) : [ list 'item 1', 'item 2', 'item 3' ];
					katnotes.name :pickButton, protect;

<<

                     Дата         Начало действия         Конец действия
                    .@@@@@@@@@      .@@@@@@@@@            .@@@@@@@@@
                    Номер            Структурное подразделение
		            .@@@@@@@@@@@@   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                       Статус  .@@@@@@@@@@@@@@@@@@@@@
>>
			end;
!			browse bCornormzapas(,,Sci13478Esc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc)
				browse bCornormzapas(,,Sci178EnEsc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc) sci1478EnEscTreeI
						show at (,11,,22)
							  table normzapasspec;
			 fields
					katmc.name 'Наименование МЦ' : [20], pickButton;
					normzapasspec.kol 'Количество':[5,'666.88'],noprotect,noPickButton;
			end;
			procedure grants();
				{
												if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = FALSE )
													{
															cfsSetProp('bnormzapas','StatusCtx', Sci17EnEsc);
															cfsSetProp('bCornormzapas','StatusCtx',sciAQACancel1);
															cfsSetProp('status','StatusCtx',SciAqaSwitchItemName);
															SetFormat(sCornormzapas);
				   //										 cfsSetProp('sCorPPlan_nogrant','StatusCtx',sciAQACancel1);
														   // SetFieldOption(#ppspecif.npp,ofProtected);
															grant_s:=false;
			//												message('grant_s false');
													}
													else if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = true )
													{
													   if( getfirst x$users where (( sGetTune('USER.descr') == x$users.XU$LOGINNAME )) = tsOk )
													   {
				   //									   cfsSetCurrentContainer('Plan.PlanCorrect.sCorPPlan');
				   //									   cfsCreateObject('button', 'sCorPPlan', 'Etalons', false, butpick);
														   if (x$users.xu$type=1)
														   {
															 // SetFieldOption(#ppspecif.npp,ofSelectable);
				   //											 if (x$users.xu$type=1 and x$users.xu$loginname='pivovarchukaa')
				   //												 {
																	   //message('full_grants');
																	   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
																	   SetFormat(sCornormzapas);
																	   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
																	   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
				   //												 }
			//	   													   message('grant_s true');
														   }
														   else
														   {
															   //message('grants');
															   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
															   SetFormat(sCornormzapas);
															   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
															   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
														   }
																grant_s:=true;
													   }
													}
													rescanpanel(#normzapas);
				}
         tableevent table normzapasspec
										 cmSetDefault:
										 {
										 set normzapasspec.cnorm :=normzapas.atl_nrec
										 }
										 cmUpdateRecord :
										 { //if grant_s=false
																						 //{
										  update current normzapasspec;
																		 //}
										 }
											cminsertrecord:
											{
											insert current normzapasspec;
											UpDatePanels();
											}
											cmDeleteRecord :
											 {
											Delete Current normzapasspec;
											 }
		 end;
end;

						  browse bnormzapas(,,Sci178EnEsc)
							  table normzapas;
							  fields
								  normzapas.pdate   'Дата' : [15] , protect, noAutoSize;
 								  normzapas.npp   'Номер' : [25], protect, noAutoSize;
								  katpodr.name   'Подразделение' : [25] , protect, noAutoSize;
							      x$users.xu$fullname 'Создатель':[20],protect,noAutoSize;
						          katnotes.name 'Статус':[20],protect,noAutoSize;
						  end;
						   //end;
						  tableevent table normzapas

							 cmSetDefault: {
														normzapas.pdate:=Cur_Date();
														normzapas.cpodrazd:=0;
														normzapas.cstatus := comp ('4001F55A5B805E36h')
														normzapas.npp := 1;
														SetModified(true);
														UpDateTableWithInserted
														 PutCommand(cmDefault);
											}
							cmUpdateRecord :{ //if grant_s=false
							  					//{
												  	update current normzapas;
												//}
										 	}
							cmInsertRecord :{
							   					insert current normzapas;
!							                    insert current normzapasspec;
												UpDatePanels();
											}
							cmDeleteRecord :
							{
							  if Message('Удалить нормы?', yesButton + noButton) = cmYes
								{
								    Delete Current normzapas;
								Delete Current normzapasspec;
								}

							}
							cmCheckRecord:
 							{
									MakeValid(#normzapas);
									if isvalid(#normzapas)
											{
									update current normzapas;
											}
									if isnew
											{
									Putcommand(cmInsertRecord);
											}

							}
							cmCheckField:
							  {
									updatetable;
									SetModified(true);
									  case CurField of
										#normzapas.pbdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pedate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.npp:
										{
									  	  update current normzapas;
										  RescanPanel(#normzapas);
										}
										end;
							  }
							end;

							handleEvent
										cmInit:
										{
!										if getfirst normzapas where((comp(userid) == normzapas.atl_owner))=tsOk
!																							{

!																							}
										 RescanPanel(Scornormzapas);
										   Rescanpanel(#normzapas);
										}
									cmPick:
									{
											  Updatetable();
											  case CurField of
												#katnotes.name:
												{
												 res:=RunInterface('L_DOGOVOR::GETSOMKATNOTES', 0, word(1), 0, false, katnotesnrec);
												 normzapas.cstatus:=katnotesnrec
												 update current normzapas;
												 if getfirst katnotes where((normzapas.cstatus==katnotes.nrec))=tsOk
												 {
												 }
												 RescanPanel(#normzapas);
												}
												#katpodr.name:
												{
												  katpodrnrec:=normzapas.cpodrazd;
												  res:=RunInterface('Z_KATPODR::GETANYPODR',katpodrnrec);
												  normzapas.cpodrazd:=katpodrnrec
												  update current normzapas;
												if getfirst katpodr where((normzapas.cpodrazd==katpodr.nrec))=tsOk
												  {
												  }
												  RescanPanel(#normzapas);
												}
												#katmc.name:
												{
												pmc := normzapasspec.cmc;
												res := runinterface('L_MCU::GetSomeMC_KatMC', pmc, false, -12345);//вызов интерфейса выбора МЦ без ввода количества
!												res := runinterface('L_MCU::GetSomeMC', pmc);
!												res := runinterface('iGetKau.GetCodeKau', pmc);
												normzapasspec.cmc := pmc;
												update current normzapasspec;
												if getfirst katmc where((normzapasspec.cmc==katmc.nrec))=tsOk
												  {
												  }
												RescanPanel(#normzapasspec);
												}
											  end;
										}
										cmCheckField : update current normzapas;
									cmCancel:
									{
									}
									cmpositionchanged:
									{
									  var ww_status:word; 
									  ww_status:=0;
									  if isvalid(tnKatNotes)
									  ww_status:=katnotes.status;
									  ProtectRecord(tnnormzapas,ww_status<>0);
									  ProtectRecord(tnnormzapasspec,ww_status<>0);
!									  if getfirst normzapas where((comp(4612066703671205222) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
!									  if getfirst normzapas where((comp(4612010840391242927) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
									}
									cmPrintDoc:
											{
											   UpdateTable();
											   res:=RunInterface('ireport',titlenrec);
											}
									cmClose:
									{
									   CloseWindow(cmDefault);
									}
									cmDefault:
									{
										   PutCommand(cmCheckField);
										   runwindowmodal(NormCorrect);
									  Rescanpanel(#normzapas);
									}
									cmInsert:
									{
!			   message('cminsert1');
!			titlenrec:=normzapas.atl_nrec;
!			maxs:=normzapas.npp;
!			specnrec:=normzapas.npp;
!!			_loop normzapas where ((titlenrec==normzapas.atl_nrec))
!!			{
!			   if (maxs<normzapas.npp) or (maxs=normzapas.npp)
!			   {
!			   message('cminsert2');
!			   normzapas.npp:=normzapas.npp+1;
!				  	update current normzapas;
!			   }
!//			   maxs:=maxs+1;
!!			}
!			maxs:=maxs+1;
									}
									cmDelete:
									{

									}
									cmDone:
									{
										  rescanpanel(#normzapas);
									}
							end;
end.

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

Re: Вопрос про событие

Сообщение edward_K »

добавьте событие
cmProtectedInput :
{ stop;
}
а в cmPick добавьте проверку if IsProtected(#normzapas)
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вопрос про событие

Сообщение Руслан »

Добавил проверку IsProtected. Проблема в том, что когда меняешь статус, это сразу не применяется. Допустим переводишь документ из статуса "закрытый" в "оформляемый", он все равно блокирует записи. Даже когда откроешь, закроешь документ, с раза второго только отрабатывает.

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

#include %src%\src\normzapas.vih;
#include %src%\src\vipInterface.h;
!#include %src%\src\GetKau.vih
!#include %src%\src\Galnet.ccm;
interface Normzapas 'Нормы страхового запаса';
!#include %src%\src\GetKau.var
 show   at   (,,92,25);
	const
	  cmPrintDoc = 3440;
	end;
 var
 	nr,mcnrec,katednrec,katpodrnrec,linenrec,formatnrec,katstannrec,ctitle,titlenrec,specnrec, katnotesnrec: comp;
	pptitlenrec,unitm:comp;
	wkl,grant_s, check_del, checkspecif,check_screen:boolean;
 	 res,check_i : word;
	 nmc:string;
	 pdate, pbdate, pedate : date;
	 statusnnrec:comp;
	 UnMea,plancopy:string;
	 somewindow:longint;
	 n:longint;
	 wValues: array [1..3] of word;
	 lValues: array [1..3] of comp;
	 sValues: array [1..1] of string;
	 begindate,enddate:date;
	 sort1,teh_poteri,dek1,dek2,dek3,summ_plan,poludek1,poludek2,poludek3,summ_polu:double;
	 sum_gresbordur,gresbordur1,gresbordur2,gresbordur3:double;
	 sum_vstavka,vstavka1,vstavka2,vstavka3:double;
	 maxi,maxs:word;
	 butpick:longInt;
	 nomer_plana,formatname:string;
	 linia_name,podrasd,titlenpp:string;
	 status_plana,old_status,old_linia :comp;
	 v1 : iSecurity_norm;

create view normz
var status,linia_filter,grup_filter,format_filter, nomer_plana: word;
	x:integer;
	fldselect:longint;
	linia,gruppa,etalon,format,titlenrec,specifnrec,specifnrec2,specifnrec3, pmc:comp;
(Vsego,meash)
 as select katpodr.name,normzapas.npp, *
from normzapas, normzapasspec, katpodr, katmc, x$users, katnotes, katpodr katpodr_2, ppstatus//, katmc katmc_2
where((	normzapas.cpodrazd==katpodr.nrec
        and normzapas.atl_nrec == normzapasspec.cnorm
   		and normzapasspec.cmc==katmc.nrec
!		and comp(userid) == x$users.atl_nrec //normzapas.atl_owner
	    and normzapas.atl_owner==x$users.atl_nrec
	    and katpodrnrec == katpodr_2.nrec
		and normzapas.cstatus == katnotes.nrec
!	    and katmc.nrec == katmc_2.nrec
!		and pmc == katmc.nrec
		))
		order by normzapas.npp;

window NormCorrect 'Редактирование норм';
show at(,,,28);
toolbar F_Common::tbPrintDoc;
handleevent
    cmPrintDoc:
												{
												   UpdateTable();
												   res:=RunInterface('ireport',titlenrec);
												}
end;
			screen sCornormzapas(,,sci1EnEsc); //SciAqaSwitchItemName
			show at (,,,10);
			table katpodr;
			bevel be1 {1,0,110,10,bsRaised, bsFrame};
				fields
					normzapas.pdate :protect;
					normzapas.pbdate:noprotect;
					normzapas.pedate:noprotect;
					normzapas.npp:protect,noPickButton; //:noprotect; //(,,sciAQACancel1)
					katpodr.name :pickButton, protect;
!					status  : [ list 'item 1', 'item 2', 'item 3' ];
!					ppstatus.name (,,SciAqaSwitchItemName) : [ list 'item 1', 'item 2', 'item 3' ];
					katnotes.name :pickButton, protect;

<<

                     Дата         Начало действия         Конец действия
                    .@@@@@@@@@      .@@@@@@@@@            .@@@@@@@@@
                    Номер            Структурное подразделение
		            .@@@@@@@@@@@@   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                       Статус  .@@@@@@@@@@@@@@@@@@@@@
>>
			end;
!			browse bCornormzapas(,,Sci13478Esc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc)
				browse bCornormzapas(,,Sci178EnEsc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc) sci1478EnEscTreeI
						show at (,11,,22)
							  table normzapasspec;
			 fields
					katmc.name 'Наименование МЦ' : [20], pickButton;
					normzapasspec.kol 'Количество':[5,'666.88'],noprotect,noPickButton;
			end;
			procedure grants();
				{
												if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = FALSE )
													{
															cfsSetProp('bnormzapas','StatusCtx', Sci17EnEsc);
															cfsSetProp('bCornormzapas','StatusCtx',sciAQACancel1);
															cfsSetProp('status','StatusCtx',SciAqaSwitchItemName);
															SetFormat(sCornormzapas);
				   //										 cfsSetProp('sCorPPlan_nogrant','StatusCtx',sciAQACancel1);
														   // SetFieldOption(#ppspecif.npp,ofProtected);
															grant_s:=false;
			//												message('grant_s false');
													}
													else if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = true )
													{
													   if( getfirst x$users where (( sGetTune('USER.descr') == x$users.XU$LOGINNAME )) = tsOk )
													   {
				   //									   cfsSetCurrentContainer('Plan.PlanCorrect.sCorPPlan');
				   //									   cfsCreateObject('button', 'sCorPPlan', 'Etalons', false, butpick);
														   if (x$users.xu$type=1)
														   {
															 // SetFieldOption(#ppspecif.npp,ofSelectable);
				   //											 if (x$users.xu$type=1 and x$users.xu$loginname='pivovarchukaa')
				   //												 {
																	   //message('full_grants');
																	   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
																	   SetFormat(sCornormzapas);
																	   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
																	   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
				   //												 }
			//	   													   message('grant_s true');
														   }
														   else
														   {
															   //message('grants');
															   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
															   SetFormat(sCornormzapas);
															   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
															   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
														   }
																grant_s:=true;
													   }
													}
													rescanpanel(#normzapas);
				}
         tableevent table normzapasspec
										 cmSetDefault:
										 {
										 set normzapasspec.cnorm :=normzapas.atl_nrec
										 }
										 cmUpdateRecord :
										 { //if grant_s=false
																						 //{
										  update current normzapasspec;
																		 //}
										 }
											cminsertrecord:
											{
											insert current normzapasspec;
											UpDatePanels();
											}
											cmDeleteRecord :
											 {
											Delete Current normzapasspec;
											 }
		 end;
end;

						  browse bnormzapas(,,Sci178EnEsc)
							  table normzapas;
							  fields
								  normzapas.pdate   'Дата' : [15] , protect, noAutoSize;
 								  normzapas.npp   'Номер' : [25], protect, noAutoSize;
								  katpodr.name   'Подразделение' : [25] , protect, noAutoSize;
							      x$users.xu$fullname 'Создатель':[20],protect,noAutoSize;
						          katnotes.name 'Статус':[20],protect,noAutoSize;
						  end;
						   //end;
						  tableevent table normzapas

							 cmSetDefault: {
														normzapas.pdate:=Cur_Date();
														normzapas.cpodrazd:=0;
														normzapas.cstatus := comp ('4001F55A5B805E36h')
														normzapas.npp := 1;
														SetModified(true);
														UpDateTableWithInserted
														 PutCommand(cmDefault);
											}
							cmUpdateRecord :{ //if grant_s=false
							  					//{
												  	update current normzapas;
												//}
										 	}
							cmInsertRecord :{
							   					insert current normzapas;
!							                    insert current normzapasspec;
												UpDatePanels();
											}
							cmDeleteRecord :
							{
							  if Message('Удалить нормы?', yesButton + noButton) = cmYes
								{
								    Delete Current normzapas;
								Delete Current normzapasspec;
								}

							}
							cmCheckRecord:
 							{
									MakeValid(#normzapas);
									if isvalid(#normzapas)
											{
									update current normzapas;
											}
									if isnew
											{
									Putcommand(cmInsertRecord);
											}

							}
							cmCheckField:
							  {
									updatetable;
									SetModified(true);
									  case CurField of
										#normzapas.pbdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pedate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.npp:
										{
									  	  update current normzapas;
										  RescanPanel(#normzapas);
										}
										end;
							  }
							end;

							handleEvent
										cmInit:
										{
!										if getfirst normzapas where((comp(userid) == normzapas.atl_owner))=tsOk
!																							{

!																							}
										 RescanPanel(Scornormzapas);
										   Rescanpanel(#normzapas);
										}
									cmPick:
									{
									          if pr_CurUserAdmin = true
											  {
											  case CurField of
																							  #katnotes.name:
																							  {
																							   res:=RunInterface('L_DOGOVOR::GETSOMKATNOTES', 0, word(1), 0, false, katnotesnrec);
																							   normzapas.cstatus:=katnotesnrec
																							   update current normzapas;
																							   if getfirst katnotes where((normzapas.cstatus==katnotes.nrec))=tsOk
																							   {
																							   }
																							   RescanPanel(#normzapas);
																							  }
																							 end;
											  }
 
									          if IsProtected(#normzapas) = true
											  {
											  break;
											  }
											  Updatetable();
											  case CurField of
												#katnotes.name:
												{
												 res:=RunInterface('L_DOGOVOR::GETSOMKATNOTES', 0, word(1), 0, false, katnotesnrec);
												 normzapas.cstatus:=katnotesnrec
												 update current normzapas;
												 if getfirst katnotes where((normzapas.cstatus==katnotes.nrec))=tsOk
												 {
												 }
												 RescanPanel(#normzapas);
												}
												#katpodr.name:
												{
												  katpodrnrec:=normzapas.cpodrazd;
												  res:=RunInterface('Z_KATPODR::GETANYPODR',katpodrnrec);
												  normzapas.cpodrazd:=katpodrnrec
												  update current normzapas;
												if getfirst katpodr where((normzapas.cpodrazd==katpodr.nrec))=tsOk
												  {
												  }
												  RescanPanel(#normzapas);
												}
												#katmc.name:
												{
												pmc := normzapasspec.cmc;
												res := runinterface('L_MCU::GetSomeMC_KatMC', pmc, false, -12345);//вызов интерфейса выбора МЦ без ввода количества
!												res := runinterface('L_MCU::GetSomeMC', pmc);
!												res := runinterface('iGetKau.GetCodeKau', pmc);
												normzapasspec.cmc := pmc;
												update current normzapasspec;
												if getfirst katmc where((normzapasspec.cmc==katmc.nrec))=tsOk
												  {
												  }
												RescanPanel(#normzapasspec);
												}
											  end;
                 							}
										cmCheckField : update current normzapas;
									cmCancel:
									{
									}
									cmpositionchanged:
									{
									  var ww_status:word; 
									  ww_status:=0;
									  if isvalid(tnKatNotes)
									  ww_status:=katnotes.status;
									  ProtectRecord(tnnormzapas,ww_status<>0);
									  ProtectRecord(tnnormzapasspec,ww_status<>0);
!									  if getfirst normzapas where((comp(4612066703671205222) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
!									  if getfirst normzapas where((comp(4612010840391242927) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
									}
									cmProtectedInput :
									{ 
                                     stop;
									} 
									cmPrintDoc:
											{
											   UpdateTable();
											   res:=RunInterface('ireport',titlenrec);
											}
									cmClose:
									{
									   CloseWindow(cmDefault);
									}
									cmDefault:
									{
										   PutCommand(cmCheckField);
										   runwindowmodal(NormCorrect);
									  Rescanpanel(#normzapas);
									}
									cmInsert:
									{
!			   message('cminsert1');
!			titlenrec:=normzapas.atl_nrec;
!			maxs:=normzapas.npp;
!			specnrec:=normzapas.npp;
!!			_loop normzapas where ((titlenrec==normzapas.atl_nrec))
!!			{
!			   if (maxs<normzapas.npp) or (maxs=normzapas.npp)
!			   {
!			   message('cminsert2');
!			   normzapas.npp:=normzapas.npp+1;
!				  	update current normzapas;
!			   }
!//			   maxs:=maxs+1;
!!			}
!			maxs:=maxs+1;
									}
									cmDelete:
									{

									}
									cmDone:
									{
										  rescanpanel(#normzapas);
									}
							end;
end.

Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вопрос про событие

Сообщение Руслан »

Еще проблема, когда даты изменяешь пишет, что модификация запрещена, но даты все равно меняет

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

#include %src%\src\normzapas.vih;
#include %src%\src\vipInterface.h;
!#include %src%\src\GetKau.vih
!#include %src%\src\Galnet.ccm;
interface Normzapas 'Нормы страхового запаса';
!#include %src%\src\GetKau.var
 show   at   (,,92,25);
	const
	  cmPrintDoc = 3440;
	end;
 var
 	nr,mcnrec,katednrec,katpodrnrec,linenrec,formatnrec,katstannrec,ctitle,titlenrec,specnrec, katnotesnrec: comp;
	pptitlenrec,unitm:comp;
	wkl,grant_s, check_del, checkspecif,check_screen:boolean;
 	 res,check_i : word;
	 nmc:string;
	 pdate, pbdate, pedate : date;
	 statusnnrec:comp;
	 UnMea,plancopy:string;
	 somewindow:longint;
	 n:longint;
	 wValues: array [1..3] of word;
	 lValues: array [1..3] of comp;
	 sValues: array [1..1] of string;
	 begindate,enddate:date;
	 sort1,teh_poteri,dek1,dek2,dek3,summ_plan,poludek1,poludek2,poludek3,summ_polu:double;
	 sum_gresbordur,gresbordur1,gresbordur2,gresbordur3:double;
	 sum_vstavka,vstavka1,vstavka2,vstavka3:double;
	 maxi,maxs:word;
	 butpick:longInt;
	 nomer_plana,formatname:string;
	 linia_name,podrasd,titlenpp:string;
	 status_plana,old_status,old_linia :comp;
	 v1 : iSecurity_norm;

create view normz
var status,linia_filter,grup_filter,format_filter, nomer_plana: word;
	x:integer;
	fldselect:longint;
	linia,gruppa,etalon,format,titlenrec,specifnrec,specifnrec2,specifnrec3, pmc:comp;
(Vsego,meash)
 as select katpodr.name,normzapas.npp, *
from normzapas, normzapasspec, katpodr, katmc, x$users, katnotes, katpodr katpodr_2, ppstatus//, katmc katmc_2
where((	normzapas.cpodrazd==katpodr.nrec
        and normzapas.atl_nrec == normzapasspec.cnorm
   		and normzapasspec.cmc==katmc.nrec
!		and comp(userid) == x$users.atl_nrec //normzapas.atl_owner
	    and normzapas.atl_owner==x$users.atl_nrec
	    and katpodrnrec == katpodr_2.nrec
		and normzapas.cstatus == katnotes.nrec
!	    and katmc.nrec == katmc_2.nrec
!		and pmc == katmc.nrec
		))
		order by normzapas.npp;

window NormCorrect 'Редактирование норм';
show at(,,,28);
toolbar F_Common::tbPrintDoc;
handleevent
    cmPrintDoc:
												{
												   UpdateTable();
												   res:=RunInterface('ireport',titlenrec);
												}
end;
			screen sCornormzapas(,,sci1EnEsc); //SciAqaSwitchItemName
			show at (,,,10);
			table katpodr;
			bevel be1 {1,0,110,10,bsRaised, bsFrame};
				fields
					normzapas.pdate :protect;
					normzapas.pbdate:noprotect;
					normzapas.pedate:noprotect;
					normzapas.npp:protect,noPickButton; //:noprotect; //(,,sciAQACancel1)
					katpodr.name :pickButton, protect;
!					status  : [ list 'item 1', 'item 2', 'item 3' ];
!					ppstatus.name (,,SciAqaSwitchItemName) : [ list 'item 1', 'item 2', 'item 3' ];
					katnotes.name :pickButton, protect;

<<

                     Дата         Начало действия         Конец действия
                    .@@@@@@@@@      .@@@@@@@@@            .@@@@@@@@@
                    Номер            Структурное подразделение
		            .@@@@@@@@@@@@   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                       Статус  .@@@@@@@@@@@@@@@@@@@@@
>>
			end;
!			browse bCornormzapas(,,Sci13478Esc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc)
				browse bCornormzapas(,,Sci178EnEsc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc) sci1478EnEscTreeI
						show at (,11,,22)
							  table normzapasspec;
			 fields
					katmc.name 'Наименование МЦ' : [20], pickButton;
					normzapasspec.kol 'Количество':[5,'666.88'],noprotect,noPickButton;
			end;
			procedure grants();
				{
												if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = FALSE )
													{
															cfsSetProp('bnormzapas','StatusCtx', Sci17EnEsc);
															cfsSetProp('bCornormzapas','StatusCtx',sciAQACancel1);
															cfsSetProp('status','StatusCtx',SciAqaSwitchItemName);
															SetFormat(sCornormzapas);
				   //										 cfsSetProp('sCorPPlan_nogrant','StatusCtx',sciAQACancel1);
														   // SetFieldOption(#ppspecif.npp,ofProtected);
															grant_s:=false;
			//												message('grant_s false');
													}
													else if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = true )
													{
													   if( getfirst x$users where (( sGetTune('USER.descr') == x$users.XU$LOGINNAME )) = tsOk )
													   {
				   //									   cfsSetCurrentContainer('Plan.PlanCorrect.sCorPPlan');
				   //									   cfsCreateObject('button', 'sCorPPlan', 'Etalons', false, butpick);
														   if (x$users.xu$type=1)
														   {
															 // SetFieldOption(#ppspecif.npp,ofSelectable);
				   //											 if (x$users.xu$type=1 and x$users.xu$loginname='pivovarchukaa')
				   //												 {
																	   //message('full_grants');
																	   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
																	   SetFormat(sCornormzapas);
																	   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
																	   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
				   //												 }
			//	   													   message('grant_s true');
														   }
														   else
														   {
															   //message('grants');
															   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
															   SetFormat(sCornormzapas);
															   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
															   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
														   }
																grant_s:=true;
													   }
													}
													rescanpanel(#normzapas);
				}
         tableevent table normzapasspec
										 cmSetDefault:
										 {
										 set normzapasspec.cnorm :=normzapas.atl_nrec
										 }
										 cmUpdateRecord :
										 { //if grant_s=false
																						 //{
										  update current normzapasspec;
																		 //}
										 }
											cminsertrecord:
											{
											insert current normzapasspec;
											UpDatePanels();
											}
											cmDeleteRecord :
											 {
											Delete Current normzapasspec;
											 }
		 end;
end;

						  browse bnormzapas(,,Sci178EnEsc)
							  table normzapas;
							  fields
								  normzapas.pdate   'Дата' : [15] , protect, noAutoSize;
 								  normzapas.npp   'Номер' : [25], protect, noAutoSize;
								  katpodr.name   'Подразделение' : [25] , protect, noAutoSize;
							      x$users.xu$fullname 'Создатель':[20],protect,noAutoSize;
						          katnotes.name 'Статус':[20],protect,noAutoSize;
						  end;
						   //end;
						  tableevent table normzapas

							 cmSetDefault: {
														normzapas.pdate:=Cur_Date();
														normzapas.cpodrazd:=0;
														normzapas.cstatus := comp ('4001F55A5B805E36h')
														normzapas.npp := 1;
														SetModified(true);
														UpDateTableWithInserted
														 PutCommand(cmDefault);
											}
							cmUpdateRecord :{ //if grant_s=false
							  					//{
												  	update current normzapas;
												//}
										 	}
							cmInsertRecord :{
							   					insert current normzapas;
!							                    insert current normzapasspec;
												UpDatePanels();
											}
							cmDeleteRecord :
							{
							  if Message('Удалить нормы?', yesButton + noButton) = cmYes
								{
								    Delete Current normzapas;
								Delete Current normzapasspec;
								}

							}
							cmCheckRecord:
 							{
									MakeValid(#normzapas);
									if isvalid(#normzapas)
											{
									update current normzapas;
											}
									if isnew
											{
									Putcommand(cmInsertRecord);
											}

							}
							cmCheckField:
							  {
									updatetable;
									SetModified(true);
									  case CurField of
										#normzapas.pbdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pedate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.npp:
										{
									  	  update current normzapas;
										  RescanPanel(#normzapas);
										}
										end;
							  }
							end;

							handleEvent
										cmInit:
										{
!										if getfirst normzapas where((comp(userid) == normzapas.atl_owner))=tsOk
!																							{

!																							}
										 RescanPanel(Scornormzapas);
										   Rescanpanel(#normzapas);
										}
									cmPick:
									{
									          if pr_CurUserAdmin = true
											  {
											  case CurField of
																							  #katnotes.name:
																							  {
																							   res:=RunInterface('L_DOGOVOR::GETSOMKATNOTES', 0, word(1), 0, false, katnotesnrec);
																							   normzapas.cstatus:=katnotesnrec
																							   update current normzapas;
																							   if getfirst katnotes where((normzapas.cstatus==katnotes.nrec))=tsOk
																							   {
																							   }
																							   ReReadRecord(#normzapasspec);
																							   ReReadRecord(#normzapas);
!																							   RescanPanel(#normzapas);
																							  }
																							 end;
											  }
											  ReReadRecord(#normzapasspec);
									          ReReadRecord(#normzapas);
									          if IsProtected(#normzapas) = true
											  {
											  break;
											  ReReadRecord(#normzapasspec);
											  ReReadRecord(#normzapas);
											  }
!											  Rescanpanel(#normzapas);
!											  Rescanpanel(#normzapasspec);
											  Updatetable();
											  case CurField of
												#katnotes.name:
												{
												 res:=RunInterface('L_DOGOVOR::GETSOMKATNOTES', 0, word(1), 0, false, katnotesnrec);
												 normzapas.cstatus:=katnotesnrec
												 update current normzapas;
												 if getfirst katnotes where((normzapas.cstatus==katnotes.nrec))=tsOk
												 {
												 }
											  ReReadRecord(#normzapasspec);
                                              ReReadRecord(#normzapas);
!												 RescanPanel(#normzapas);
												}
												#katpodr.name:
												{
												  katpodrnrec:=normzapas.cpodrazd;
												  res:=RunInterface('Z_KATPODR::GETANYPODR',katpodrnrec);
												  normzapas.cpodrazd:=katpodrnrec
												  update current normzapas;
												if getfirst katpodr where((normzapas.cpodrazd==katpodr.nrec))=tsOk
												  {
												  }
												  RescanPanel(#normzapas);
												}
												#katmc.name:
												{
												pmc := normzapasspec.cmc;
												res := runinterface('L_MCU::GetSomeMC_KatMC', pmc, false, -12345);//вызов интерфейса выбора МЦ без ввода количества
!												res := runinterface('L_MCU::GetSomeMC', pmc);
!												res := runinterface('iGetKau.GetCodeKau', pmc);
												normzapasspec.cmc := pmc;
												update current normzapasspec;
												if getfirst katmc where((normzapasspec.cmc==katmc.nrec))=tsOk
												  {
												  }
												RescanPanel(#normzapasspec);
												}
											  end;
                 							}
										cmCheckField : update current normzapas;
									cmCancel:
									{
									}
									cmpositionchanged:
									{
									  var ww_status:word; 
									  ww_status:=0;
									  if isvalid(tnKatNotes)
									  ww_status:=katnotes.status;
									  ProtectRecord(tnnormzapas,ww_status<>0);
									  ProtectRecord(tnnormzapasspec,ww_status<>0);
!									  if getfirst normzapas where((comp(4612066703671205222) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
!									  if getfirst normzapas where((comp(4612010840391242927) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
									}
									cmProtectedInput :
									{ 
                                     stop;
									} 
									cmPrintDoc:
											{
											   UpdateTable();
											   res:=RunInterface('ireport',titlenrec);
											}
									cmClose:
									{
									   CloseWindow(cmDefault);
									}
									cmDefault:
									{
										   PutCommand(cmCheckField);
										   runwindowmodal(NormCorrect);
									  Rescanpanel(#normzapas);
									}
									cmInsert:
									{
!			   message('cminsert1');
!			titlenrec:=normzapas.atl_nrec;
!			maxs:=normzapas.npp;
!			specnrec:=normzapas.npp;
!!			_loop normzapas where ((titlenrec==normzapas.atl_nrec))
!!			{
!			   if (maxs<normzapas.npp) or (maxs=normzapas.npp)
!			   {
!			   message('cminsert2');
!			   normzapas.npp:=normzapas.npp+1;
!				  	update current normzapas;
!			   }
!//			   maxs:=maxs+1;
!!			}
!			maxs:=maxs+1;
									}
									cmDelete:
									{

									}
									cmDone:
									{
										  rescanpanel(#normzapas);
									}
							end;
end.

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

Re: Вопрос про событие

Сообщение edward_K »

перетащите cmProtectedInput : в табличные события.
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вопрос про событие

Сообщение Руслан »

edward_K писал(а):перетащите cmProtectedInput : в табличные события.
Сделал, стало еще хуже, раньше по крайней когда меняешь статус на "закрытый" количество в спецификации сразу блокировало, а теперь дает изменять, на второй раз уже блокирует. И так со всеми полями, только со второго раза блокирует. Пробовал применять второй браузер, где поля заблокированы, но не отрабатывает:

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

#include %src%\src\normzapas.vih;
#include %src%\src\vipInterface.h;
!#include %src%\src\GetKau.vih
!#include %src%\src\Galnet.ccm;
interface Normzapas 'Нормы страхового запаса';
!#include %src%\src\GetKau.var
 show   at   (,,92,25);
	const
	  cmPrintDoc = 3440;
	end;
 var
 	nr,mcnrec,katednrec,katpodrnrec,linenrec,formatnrec,katstannrec,ctitle,titlenrec,specnrec, katnotesnrec: comp;
	pptitlenrec,unitm:comp;
	wkl,grant_s, check_del, checkspecif,check_screen:boolean;
 	 res,check_i : word;
	 nmc:string;
	 pdate, pbdate, pedate : date;
	 statusnnrec:comp;
	 UnMea,plancopy:string;
	 somewindow:longint;
	 n:longint;
	 wValues: array [1..3] of word;
	 lValues: array [1..3] of comp;
	 sValues: array [1..1] of string;
	 begindate,enddate:date;
	 sort1,teh_poteri,dek1,dek2,dek3,summ_plan,poludek1,poludek2,poludek3,summ_polu:double;
	 sum_gresbordur,gresbordur1,gresbordur2,gresbordur3:double;
	 sum_vstavka,vstavka1,vstavka2,vstavka3:double;
	 maxi,maxs:word;
	 butpick:longInt;
	 nomer_plana,formatname:string;
	 linia_name,podrasd,titlenpp:string;
	 status_plana,old_status,old_linia :comp;
	 v1 : iSecurity_norm;

create view normz
var status,linia_filter,grup_filter,format_filter, nomer_plana: word;
	x:integer;
	fldselect:longint;
	linia,gruppa,etalon,format,titlenrec,specifnrec,specifnrec2,specifnrec3, pmc:comp;
(Vsego,meash)
 as select katpodr.name,normzapas.npp, *
from normzapas, normzapasspec, katpodr, katmc, x$users, katnotes, katpodr katpodr_2, ppstatus//, katmc katmc_2
where((	normzapas.cpodrazd==katpodr.nrec
        and normzapas.atl_nrec == normzapasspec.cnorm
   		and normzapasspec.cmc==katmc.nrec
!		and comp(userid) == x$users.atl_nrec //normzapas.atl_owner
	    and normzapas.atl_owner==x$users.atl_nrec
	    and katpodrnrec == katpodr_2.nrec
		and normzapas.cstatus == katnotes.nrec
!	    and katmc.nrec == katmc_2.nrec
!		and pmc == katmc.nrec
		))
		order by normzapas.npp;

window NormCorrect 'Редактирование норм';
show at(,,,28);
toolbar F_Common::tbPrintDoc;
handleevent
    cmPrintDoc:
												{
												   UpdateTable();
												   res:=RunInterface('ireport',titlenrec);
												}
end;
			screen sCornormzapas(,,sci1EnEsc); //SciAqaSwitchItemName
			show at (,,,10);
			table katpodr;
			bevel be1 {1,0,110,10,bsRaised, bsFrame};
				fields
					normzapas.pdate :protect;
					normzapas.pbdate:noprotect;
					normzapas.pedate:noprotect;
					normzapas.npp:protect,noPickButton; //:noprotect; //(,,sciAQACancel1)
					katpodr.name :pickButton, protect;
!					status  : [ list 'item 1', 'item 2', 'item 3' ];
!					ppstatus.name (,,SciAqaSwitchItemName) : [ list 'item 1', 'item 2', 'item 3' ];
					katnotes.name :pickButton, protect;

<<

                     Дата         Начало действия         Конец действия
                    .@@@@@@@@@      .@@@@@@@@@            .@@@@@@@@@
                    Номер            Структурное подразделение
		            .@@@@@@@@@@@@   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                       Статус  .@@@@@@@@@@@@@@@@@@@@@
>>
			end;
			
			screen sCornormzapas_nogrant(,,sci1EnEsc); //SciAqaSwitchItemName
						show at (,,,10);
						table katpodr;
						bevel be1 {1,0,110,10,bsRaised, bsFrame};
							fields
								normzapas.pdate :protect;
								normzapas.pbdate:protect;
								normzapas.pedate:protect;
								normzapas.npp:protect,noPickButton; //:noprotect; //(,,sciAQACancel1)
								katpodr.name :pickButton, protect, skip;
!					status  : [ list 'item 1', 'item 2', 'item 3' ];
!					ppstatus.name (,,SciAqaSwitchItemName) : [ list 'item 1', 'item 2', 'item 3' ];
								katnotes.name :pickButton, protect;
			
			<<
			
								 Дата         Начало действия         Конец действия
								.@@@@@@@@@      .@@@@@@@@@            .@@@@@@@@@
								Номер            Структурное подразделение
								.@@@@@@@@@@@@   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
								   Статус  .@@@@@@@@@@@@@@@@@@@@@
			>>
						end;
!			browse bCornormzapas(,,Sci13478Esc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc)
				browse bCornormzapas(,,Sci178EnEsc )//F1,F4,F7,F8,Esc//(,,sci178EnEsc) sci1478EnEscTreeI
						show at (,11,,22)
							  table normzapasspec;
			 fields
					katmc.name 'Наименование МЦ' : [20], pickButton;
					normzapasspec.kol 'Количество':[5,'666.88'],noprotect,noPickButton;
			end;
			procedure grants();
				{
												if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = FALSE )
													{
															cfsSetProp('bnormzapas','StatusCtx', Sci17EnEsc);
															cfsSetProp('bCornormzapas','StatusCtx',sciAQACancel1);
															cfsSetProp('status','StatusCtx',SciAqaSwitchItemName);
															SetFormat(sCornormzapas);
				   //										 cfsSetProp('sCorPPlan_nogrant','StatusCtx',sciAQACancel1);
														   // SetFieldOption(#ppspecif.npp,ofProtected);
															grant_s:=false;
			//												message('grant_s false');
													}
													else if(v1.fSecurityPolicy(sGetTune('USER.descr'),normzapas.atl_nrec,normzapas.cstatus) = true )
													{
													   if( getfirst x$users where (( sGetTune('USER.descr') == x$users.XU$LOGINNAME )) = tsOk )
													   {
				   //									   cfsSetCurrentContainer('Plan.PlanCorrect.sCorPPlan');
				   //									   cfsCreateObject('button', 'sCorPPlan', 'Etalons', false, butpick);
														   if (x$users.xu$type=1)
														   {
															 // SetFieldOption(#ppspecif.npp,ofSelectable);
				   //											 if (x$users.xu$type=1 and x$users.xu$loginname='pivovarchukaa')
				   //												 {
																	   //message('full_grants');
																	   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
																	   SetFormat(sCornormzapas);
																	   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
																	   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
				   //												 }
			//	   													   message('grant_s true');
														   }
														   else
														   {
															   //message('grants');
															   cfsSetProp('Bnormzapas','StatusCtx',Sci178EnEsc);
															   SetFormat(sCornormzapas);
															   cfsSetProp('bCornormzapas','StatusCtx',Sci13478Esc);
															   cfsSetProp('sCornormzapas','StatusCtx',SciAqaSwitchItemName);
														   }
																grant_s:=true;
													   }
													}
													rescanpanel(#normzapas);
				}
         tableevent table normzapasspec
										 cmSetDefault:
										 {
										 set normzapasspec.cnorm :=normzapas.atl_nrec
										 }
										 cmUpdateRecord :
										 { //if grant_s=false
																						 //{
										  update current normzapasspec;
																		 //}
										 }
											cminsertrecord:
											{
											insert current normzapasspec;
											UpDatePanels();
											}
											cmDeleteRecord :
											 {
											Delete Current normzapasspec;
											 }
		 end;
end;

						  browse bnormzapas(,,Sci178EnEsc)
							  table normzapas;
							  fields
								  normzapas.pdate   'Дата' : [15] , protect, noAutoSize;
 								  normzapas.npp   'Номер' : [25], protect, noAutoSize;
								  katpodr.name   'Подразделение' : [25] , protect, noAutoSize;
							      x$users.xu$fullname 'Создатель':[20],protect,noAutoSize;
						          katnotes.name 'Статус':[20],protect,noAutoSize;
						  end;
						   //end;
						  tableevent table normzapas

							 cmSetDefault: {
														normzapas.pdate:=Cur_Date();
														normzapas.cpodrazd:=0;
														normzapas.cstatus := comp ('4001F55A5B805E36h')
														normzapas.npp := 1;
														SetModified(true);
														UpDateTableWithInserted
														 PutCommand(cmDefault);
											}
							cmUpdateRecord :{ //if grant_s=false
							  					//{
												  	update current normzapas;
												//}
										 	}
							cmInsertRecord :{
							   					insert current normzapas;
!							                    insert current normzapasspec;
												UpDatePanels();
											}
							cmDeleteRecord :
							{
							  if Message('Удалить нормы?', yesButton + noButton) = cmYes
								{
								    Delete Current normzapas;
								Delete Current normzapasspec;
								}

							}
							cmCheckRecord:
 							{
									MakeValid(#normzapas);
									if isvalid(#normzapas)
											{
									update current normzapas;
											}
									if isnew
											{
									Putcommand(cmInsertRecord);
											}

							}
							cmCheckField:
							  {
									updatetable;
									SetModified(true);
									  case CurField of
										#normzapas.pbdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pedate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.pdate:
										{
										  update current normzapas;
										  RescanPanel(#normzapas);
										}
										#normzapas.npp:
										{
									  	  update current normzapas;
										  RescanPanel(#normzapas);
										}
										end;
							  }
							cmProtectedInput :
							  { 
							   stop;
							  } 
							end;

							handleEvent
										cmInit:
										{
							            if IsProtected(#normzapas) = true
													{
													SetFormat(sCornormzapas_nogrant);
   												    }
													else
																  {
																  SetFormat(sCornormzapas);
																  }
!										if getfirst normzapas where((comp(userid) == normzapas.atl_owner))=tsOk
!																							{

!																							}
										 RescanPanel(Scornormzapas);
										   Rescanpanel(#normzapas);
										}
									cmPick:
									{
									          if pr_CurUserAdmin = true
											  {
											  case CurField of
																							  #katnotes.name:
																							  {
																							   res:=RunInterface('L_DOGOVOR::GETSOMKATNOTES', 0, word(1), 0, false, katnotesnrec);
																							   normzapas.cstatus:=katnotesnrec
																							   update current normzapas;
																							   if getfirst katnotes where((normzapas.cstatus==katnotes.nrec))=tsOk
																							   {
																							   }
																							   ReReadRecord(#normzapasspec);
																							   ReReadRecord(#normzapas);
!																							   RescanPanel(#normzapas);
																							  }
																							 end;
											  }
											  ReReadRecord(#normzapasspec);
									          ReReadRecord(#normzapas);
									          if IsProtected(#normzapas) = true
											  {
											  break;
											  ReReadRecord(#normzapasspec);
											  ReReadRecord(#normzapas);
											  }
!											  Rescanpanel(#normzapas);
!											  Rescanpanel(#normzapasspec);
											  Updatetable();
											  case CurField of
												#katnotes.name:
												{
												 res:=RunInterface('L_DOGOVOR::GETSOMKATNOTES', 0, word(1), 0, false, katnotesnrec);
												 normzapas.cstatus:=katnotesnrec
												 update current normzapas;
												 if getfirst katnotes where((normzapas.cstatus==katnotes.nrec))=tsOk
												 {
												 }
											  ReReadRecord(#normzapasspec);
                                              ReReadRecord(#normzapas);
!												 RescanPanel(#normzapas);
												}
												#katpodr.name:
												{
												  katpodrnrec:=normzapas.cpodrazd;
												  res:=RunInterface('Z_KATPODR::GETANYPODR',katpodrnrec);
												  normzapas.cpodrazd:=katpodrnrec
												  update current normzapas;
												if getfirst katpodr where((normzapas.cpodrazd==katpodr.nrec))=tsOk
												  {
												  }
												  RescanPanel(#normzapas);
												}
												#katmc.name:
												{
												pmc := normzapasspec.cmc;
												res := runinterface('L_MCU::GetSomeMC_KatMC', pmc, false, -12345);//вызов интерфейса выбора МЦ без ввода количества
!												res := runinterface('L_MCU::GetSomeMC', pmc);
!												res := runinterface('iGetKau.GetCodeKau', pmc);
												normzapasspec.cmc := pmc;
												update current normzapasspec;
												if getfirst katmc where((normzapasspec.cmc==katmc.nrec))=tsOk
												  {
												  }
												RescanPanel(#normzapasspec);
												}
											  end;
                 							}
										cmCheckField : update current normzapas;
									cmCancel:
									{
									}
									cmpositionchanged:
									{
									  var ww_status:word; 
									  ww_status:=0;
									  if isvalid(tnKatNotes)
									  ww_status:=katnotes.status;
									  ProtectRecord(tnnormzapas,ww_status<>0);
									  ProtectRecord(tnnormzapasspec,ww_status<>0);
!									  if getfirst normzapas where((comp(4612066703671205222) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
!									  if getfirst normzapas where((comp(4612010840391242927) == normzapas.cstatus))=tsOk
!									  {
!									  protectrecord(#normzapas, true);
!									  protectrecord(#normzapasspec, true);
!									  }
									}

									cmPrintDoc:
											{
											   UpdateTable();
											   res:=RunInterface('ireport',titlenrec);
											}
									cmClose:
									{
									   CloseWindow(cmDefault);
									}
									cmDefault:
									{
										   PutCommand(cmCheckField);
										   runwindowmodal(NormCorrect);
									  Rescanpanel(#normzapas);
									}
									cmInsert:
									{
!			   message('cminsert1');
!			titlenrec:=normzapas.atl_nrec;
!			maxs:=normzapas.npp;
!			specnrec:=normzapas.npp;
!!			_loop normzapas where ((titlenrec==normzapas.atl_nrec))
!!			{
!			   if (maxs<normzapas.npp) or (maxs=normzapas.npp)
!			   {
!			   message('cminsert2');
!			   normzapas.npp:=normzapas.npp+1;
!				  	update current normzapas;
!			   }
!//			   maxs:=maxs+1;
!!			}
!			maxs:=maxs+1;
									}
									cmDelete:
									{

									}
									cmDone:
									{
										  rescanpanel(#normzapas);
									}
							end;
end.

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

Re: Вопрос про событие

Сообщение edward_K »

кто ищет тот найдет.
VipProgr.chm

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

cmProtectedInput: попытка редактировать защищенную от ввода запись Назад В начало Вперед 
Идентификатор события - cmProtectedInput.
Оператор Abort не может быть выполнен.
Оператор Stop может быть выполнен.
Событие возникает если пользователь пытается редактировать защищенную от ввода запись. Стандартный обработчик выдает сообщение "Запись защищена от ввода".
Можно попытаться в обработчике снова взять запись с блокировкой.
+

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

  cmUpdateRecord :
  {
   if not IsProtected(#.....)
   { update current ...
+

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

 
TableEvent Table .....;
....
 cmProtectedInput :
  {
    // Даем выбрать статус, только если есть права по дескриптору
    if (CurField = #KatNotes.Name) and ...
    {
      ProtectRecord(#...., false);
      PutCommand(cmPick);
      Stop;
    }
      Stop;
  }
скомпонуйте уж как нибудь. В конце Pick у вас должна сработать функция по блокировке записи(я советовал блокировку сделать функцией , поскольку условия нужны дважды) - она сработала? + ReScanPanel(#....) никто не отменял
Ответить