Страница 1 из 1
					
				Редактирование собственной организации
				Добавлено: 15 май 2020, 00:51
				 maikl
				Как то получается у пользователей отредактировать собственную организацию.
Как бы настроить так, чтобы они не могли это делать ?
Подскажите
			 
			
					
				Re: Редактирование собственной организации
				Добавлено: 15 май 2020, 13:17
				 oiko
				Попробуйте докомпилировать интерфейс katorg запретите событие cmedit для своей организации.
			 
			
					
				Re: Редактирование собственной организации
				Добавлено: 15 май 2020, 17:14
				 maikl
				oiko писал(а):Попробуйте докомпилировать интерфейс katorg запретите событие cmedit для своей организации.
Спасибо. Попробуем
 
			
					
				Re: Редактирование собственной организации
				Добавлено: 18 май 2020, 12:02
				 maikl
				У нас исходных текстов ((((
			 
			
					
				Re: Редактирование собственной организации
				Добавлено: 31 май 2020, 09:54
				 edward_K
				Добавьте свою функцию
Function CanEditTbl : boolean;
например
Ну помимо очевидных способов
Код: Выделить всё
TableEvent KatOrgImp
cmPositionChanged :
{  ProtetRecord(#KatOrgImp, not CanEditTbl);
    if Inherited::HandleEvent(cmPositionChanged)=heAbort abort;
}
cmUpdateRecord :
{  if not CanEditTbl
   { message....
     ReReadRecord(#KatOrgImp);
     Exit;
   }
    if Inherited::HandleEvent(cmUpdateRecord)=heAbort abort;
}
cmDeleteRecord :
{  if not CanEditTbl
   { message....
     ReReadRecord(#KatOrgImp);
     Exit;
   }
    if Inherited::HandleEvent(cmDeleteRecord)=heAbort abort;
}
end;
Добавьте обработку в 
Procedure ProcessMyPick;
Procedure OnUpdateRecord;
в событие окна редактирования
cmAttrib:
Procedure OnPositionChanged;
там есть кстати такой кусок
Код: Выделить всё
  if boGetTune('RghTbl.NoUpdate.KatOrg')
    {
      ProtectRecord(#KatOrgImp  , TRUE);
      ProtectRecord(#KatOrg     , TRUE);
      ProtectRecord(#KatOrgDescr, TRUE);
    }
Ну и можно еще дополнить процедурой SetEditMode(_canEdit :boolean) например на базе установки прав в cmInit интерфейса
Тут запрет, в своей процедуре вы должны также обеспечить его отмену. Обратите на переменную IsReadOnly - вам ее тоже нужно бы переключать туда/сюда.
Код: Выделить всё
  if ( boGetTune('RghTbl.NoUpdate.KatOrg') )
    {
      IsReadOnly := TRUE;
      InfoProtector.LinkTo(cfsGetCurrentContainerSelf, 'wKatOrg');
      InfoProtector.SetProtected(TRUE);
      DisableCommand(cmDelete);
      DisableCommand(cmInsert);
      DisableCommand(cmAddNewRec);
      DisableCommand(cmAltInsert);
      DisableCommand(cmInsLowLevel);
      DisableCommand(cmSaveDoc);
      DisableCommand(cmRestoreDoc);
      DisableCommand(cmValue20);
      DisableCommand(cmValue28);
    }
Вообще здесь большинство контролей идет на базе настройки RghTbl.NoUpdate.KatOrg - можно при старте интерфейса запомнить ее значение,  потом менять ее значение для своих нужд, при выходе из интерфейса восстановить значение.
в Procedure OnSetDefault; вам нужно будет отменять все сделанные вами ограничения.
 
			
					
				Re: Редактирование собственной организации
				Добавлено: 23 июн 2020, 19:33
				 Masygreen
				зачем такие сложности ? именно эту запись по Nrec  в протекте защитите.. katorg+ groupkatrog (ิили вроде того)
			 
			
					
				Re: Редактирование собственной организации
				Добавлено: 23 июн 2020, 20:07
				 maikl
				Masygreen писал(а):зачем такие сложности ? именно эту запись по Nrec  в протекте защитите.. katorg+ groupkatrog (ิили вроде того)
У меня не получилось.
ТП добавит настройку