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

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

Добавлено: 20 июн 2003, 12:58
snoopy
Есть необходимость обработать запись при переходе на другую запись, cmPositionChanged не подходит так как он срабатывает когда уже перешел на другую запись, есть ли событие срабатывающее до cmPositionChanged?
Тоесть до перехода на другую запись. ???

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

Добавлено: 20 июн 2003, 13:34
paul
cmCheckRecord

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

Добавлено: 25 июл 2014, 14:43
Руслан
Сделал 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.


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

Добавлено: 25 июл 2014, 21:23
edward_K
Get fist katnotes явно лишнее

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

Добавлено: 26 июл 2014, 11:11
Руслан
edward_K писал(а):Get fist katnotes явно лишнее
Убрал getfirst, ничего не изменилось...

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

Добавлено: 28 июл 2014, 01:06
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 вроде как не нужно. И еще - это событие вроде как табличное.

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

Добавлено: 28 июл 2014, 11:29
Руслан
Возникает ошибка "Ожидалось ":" (стр.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.


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

Добавлено: 28 июл 2014, 11:57
edward_K
я часто пишу с планшета - вы уж дописывайте сами то.
Например
var ww_stattus:word;
Через переменную - чтобы отработать не подвязанный статус. Вообще обычно в таблице вместе с cNote есть поле status:word - тогда можно проверять только его.

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

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

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

#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.


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

Добавлено: 28 июл 2014, 12:52
edward_K
добавьте событие
cmProtectedInput :
{ stop;
}
а в cmPick добавьте проверку if IsProtected(#normzapas)

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

Добавлено: 28 июл 2014, 14:46
Руслан
Добавил проверку 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.


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

Добавлено: 29 июл 2014, 12:18
Руслан
Еще проблема, когда даты изменяешь пишет, что модификация запрещена, но даты все равно меняет

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

#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.


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

Добавлено: 29 июл 2014, 17:29
edward_K
перетащите cmProtectedInput : в табличные события.

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

Добавлено: 29 июл 2014, 17:46
Руслан
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.


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

Добавлено: 29 июл 2014, 17:56
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(#....) никто не отменял