Попытался добавить маркер конкретно к своей задаче - ничё не фурычит. Может из-за этого galnet.inc. Как его подключить? Так #include galnet.inc? Или нужно прописать путь сервера где находится #include '\\Srv31\gal810ora\frm_unpack\galFrm\Inc\galnet.inc'?
Код: Выделить всё
//vipinterface ietalon parameters (kgroup:comp;ketalon:comp;ckatstan:comp);
#include galnet.ccm;
#include galnet.csc;
end;
interface ietalon alwaysReturn;
Show At (,,93,25);
var ketalon,kgroup,ckatstan:comp;
	res:word;
	mcname:string;
	etalmc:string;
	groupmcname:string;
	idwindow:longInt;
	Markers      : longInt;
    FieldMarkers : longInt;
    IndexNo      : longInt;
	Markers2      : longInt;
    FieldMarkers2 : longInt;
    IndexNo2      : longInt;
	getnrec		 : longInt;
	i:integer;
	j:longint;
table struct marktable
			 (
				nRec : comp,
			    cmcnrec: comp
			 )
			 with index
			 (
				 mark01 = nRec(Unique,Surrogate),
			     mark02 = cmcnrec
			 );
function funrec:comp; forward;
create view
var wnrec:comp
  (MarkerStr2,MarkerStr)
 as select
 if (SearchMarker(Markers2, k4.nrec, IndexNo2) = True, 'v', ' '),
 if (SearchMarker(Markers, katmc.nrec, IndexNo) = True, 'v', ' '),
 ppkatstan.name,katmc.name from ppkatstan,ppkatstanmc,katmc, katmc k4(katmc02)
where((wnrec==ppkatstan.atl_nrec and
ppkatstan.atl_nrec==ppkatstanmc.cppkatstan
and ppkatstanmc.cmc  ==katmc.nrec and 0==k4.isarch));
create view etalon
as select /*etalon(ppkatstan.atl_nrec),*,*/k1.name,ppkatstan.name,*//,groupmc.name,*
from katmc k1,PPKATSTAN,groupmc
where ((
ppkatstan.cmc==k1.nrec
and (7=k1.isarch)
and groupmc.nrec==ppkatstan.cgroupmc));
parameters kgroup,ketalon,ckatstan;
function funrec :comp;
{
	 funrec:=ckatstan;
	 //message(ckatstan);
}
tableevent table ppkatstanmc
	cmDeleteRecord :
	{
	delete current ppkatstanmc;
	}
end;
window wmc 'Выбор реальных МЦ';
function MyTable_Add(add_n: comp): boolean;
  {
	  //clearbuffer(#mytable);
	  if (getFirst marktable where ((add_n == marktable.cmcNrec)) = tsOk)
	  {
	  delete current marktable;
	  }
	  else
	  {
		  marktable.cmcNrec := add_n;
		  if insert current marktable <> tsOk
		  {
			message(''#3'Ошибка добавления записи в таблицу MyTable');
			MyTable_Add := false;
		  }
		  else
		  {
			MyTable_Add := true;
			//message(add_n+' '+add_name);
		  }
	  }
   }
 panel pwMC
  browse bwMC (,,Sci1478EscIns)
  table k4,cartesian;
  //recMarker {k4.nrec};
 fields
 	MarkerStr2        ''  :[1], Skip;
 	k4.name 'Реальные МЦ':protect;
end;
handleEvent
			cmDoMarkUnMark :
			{
			InvertMarker(Markers2, k4.nrec);
			 if ((GetNext k4) = tsOk) {};
			RescanPanel(#k4);
			}
			cmUnSelAll:
 			{
			  ClearMarker(Markers2);
			  RescanPanel(#k4);
			}
			cmSelAll: {
			  StartNewVisual( vtRotateVisual, vfTimer, 'Помечаю все', 1);
			  PushPos(#k4);
			  if ((Modifier GetFirst k4) = tsOk)
			  begin
				do
				begin
				  InsertMarker(Markers, k4.nrec);
				  NextVisual;
				end;
				while (Modifier GetNext k4 = tsOk)
			  end;
			  PopPos(#k4);
			  StopVisual('', 0);
			  RescanPanel(#k4);
			}
			cmDoInvertMark: {
			  StartNewVisual( vtRotateVisual, vfTimer, 'Инвертирую список', 1);
			  PushPos(#k4);
			  if ((Modifier GetFirst k4) = tsOk)
			  begin
				do
				begin
				  InvertMarker(Markers, k4.nrec);
				  NextVisual;
				end;
				while (Modifier GetNext k4 = tsOk)
			  end;
			  PopPos(#k4);
			  StopVisual( '', 0);
			  RescanPanel(#k4);
			}
end;
end;
handleEvent
	 	cmInit:
		{
			 Markers2 := InitMarker('spisokmc2', 2, 1000, 100);
			   FieldMarkers2 := InitMarker('', 2, 20, 20);
		}
		cmClose:
		{
			message(GetMarkerCount(Markers2));
				  _loop katmc
				  {
					   //GetMarker(Markers2,i,k4.nrec)
					   if getfirst ppkatstanmc where((ckatstan==ppkatstanmc.cppkatstan))=tsOk
					   {
						if (katmc.nrec=ppkatstanmc.cmc)
 							 {
								 message('№1= '+katmc.nrec);
								 j:=GetMarkerCount(Markers2) ;
								for (i := 0; i <GetMarkerCount(Markers2) ; i++)
								 {
									 GetMarker(Markers2,i,getnrec);
									 message(getnrec);
									if (getnrec<>katmc.nrec)
									{
										 delete current ppkatstanmc;
										 	rescanpanel(#ppkatstan);
										 rescanpanel(#ppkatstanmc);
										  rescanpanel(#katmc);
									}
								 }
						     }
					   }
					   else
					   {
							ppkatstanmc.cmc:=katmc.nrec;
							ppkatstanmc.cppkatstan:=ckatstan;
							insert current ppkatstanmc;
								rescanpanel(#ppkatstan);
							rescanpanel(#ppkatstanmc);
							rescanpanel(#katmc);
					   }
				  }
		}
		cmDone:
		{
			   DoneMarker(Markers2, 'spisokmc2');
			    DoneMarker(FieldMarkers2, '');
		}
end;
end;
panel petalon
 screen setalon (,,Sci1478EscIns)
    show at (,,,8);
  fields
  	mcname:noprotect;
  	etalmc:protect,pickbutton;
  	groupmcname:protect,pickbutton;
  buttons
	cmRealMC;
<<
    МЦ          .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Эталон МЦ   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Группа МЦ   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 			<.~в~ыбор МЦ.>
>>
end;
  browse  betalon2 (,,Sci1478EscIns);
      show at (,9,,);
	table ppkatstan,cartesian;
	//recMarker {katmc.nrec};
	fields
		MarkerStr        ''  :[1], Skip;
		katmc.name:protect;
  end;
	handleevent
		cmCheckField:
		{
			 case CurField of
				 #mcname:
				 {
					 if etalon.getfirst ppkatstan where((ckatstan==ppkatstan.atl_nrec))=tsok
					 {
						 etalon.ppkatstan.name:=mcname;
						 update current ppkatstan;
					 }
 						 rescanpanel(#ppkatstan);
				 }
			 end;
		}
		cmDoMarkUnMark:
		{
			InvertMarker(Markers, katmc.nrec);
			 if ((GetNext katmc) = tsOk) {};
			 RescanPanel(#katmc);
		}
		cmUnSelAll:
 		{
		  ClearMarker(Markers);
		  RescanPanel(#katmc);
		}
		cmSelAll: {
		  StartNewVisual( vtRotateVisual, vfTimer, 'Помечаю все', 1);
		  PushPos(#katmc);
		  if ((Modifier GetFirst katmc) = tsOk)
		  begin
			do
			begin
			  InsertMarker(Markers, katmc.nrec);
			  NextVisual;
			end;
			while (Modifier GetNext katmc = tsOk)
		  end;
		  PopPos(#katmc);
		  StopVisual('', 0);
		  RescanPanel(#katmc);
		}
		cmDoInvertMark: {
		  StartNewVisual( vtRotateVisual, vfTimer, 'Инвертирую список', 1);
		  PushPos(#katmc);
		  if ((Modifier GetFirst katmc) = tsOk)
		  begin
			do
			begin
			  InvertMarker(Markers, katmc.nrec);
			  NextVisual;
			end;
			while (Modifier GetNext katmc = tsOk)
		  end;
		  PopPos(#katmc);
		  StopVisual( '', 0);
		  RescanPanel(#katmc);
		}
	end;
end;
	handleevent
	  	cmInit:
	  		{
				 Markers := InitMarker('spisokmc', 2, 1000, 100);
				 FieldMarkers := InitMarker('', 2, 20, 20);
				 //FieldMarkers := InitMarker('', 2, 20, 20);
				idwindow:=wmc;
				// message(ckatstan);
				 if getfirst ppkatstan where ((ckatstan==ppkatstan.atl_nrec))=tsok
				 {
					// mcname:=ppkatstan.name;
					 wnrec:=ppkatstan.atl_nrec;
				 }
				 if etalon.getfirst ppkatstan where ((ckatstan==ppkatstan.atl_nrec))=tsok
				{
					mcname:=etalon.ppkatstan.name;
					ckatstan:=etalon.ppkatstan.atl_nrec;
				}
			if etalon.getfirst k1 where ((ketalon==k1.nrec))=tsok
				{
					etalmc:=etalon.k1.name;
					ketalon:=etalon.k1.nrec;
				}
			if etalon.getfirst groupmc where ((kgroup==groupmc.nrec))=tsok
				{
					groupmcname:=etalon.groupmc.name;
					ckatstan:=etalon.groupmc.nrec;
				}
				rescanpanel(setalon);
				rescanpanel(#etalon.ppkatstan);
				rescanpanel(#etalon.k1);
				rescanpanel(#etalon.groupmc);
				rescanpanel(#katmc);
				rescanpanel(betalon2);
			}
		cmPick:
		{
				  UpdateTable();
 				  case CurField of
					#etalmc:
					{
						res:=  RunInterface(PickKatMC,ketalon);
						ppkatstan.cmc:=ketalon;
						if etalon.getfirst k1 where ((ketalon==k1.nrec))=tsOk
							{
								etalmc:=etalon.k1.name;
								ketalon:=etalon.k1.nrec;
							}
						rescanpanel(#etalon.k1);
						rescanpanel(#ppkatstan);
	     			}
					#groupmcname:
					{
						res:=  RunInterface(PickGroupMC,kgroup);
						ppkatstan.cgroupmc:=kgroup;
						if etalon.getfirst groupmc where ((kgroup==groupmc.nrec))=tsok
							{
								groupmcname:=etalon.groupmc.name;
								ckatstan:=etalon.groupmc.nrec;
							}
							rescanpanel(#etalon.groupmc);
							rescanpanel(#ppkatstan);
					}
					end;
		}
		cmRealMC:
		{
			 RunWindowModal(wmc);
		}
		cmClose:
		{
			message(GetMarkerCount(Markers));
		}
		cmDone:
		{
			   DoneMarker(Markers, 'spisokmc');
			    DoneMarker(FieldMarkers, '');
		}
	end;
end.