Hallo , wir importieren pdf via Server-API
$oJob = $session.NewJob( „dms.XMLInsert“ );
leider werden dabei Addon hinterlegte Felder nicht gefüllt,
via Enaio-Client aber schon.
Kann man das API irgendwie forcieren ?
(Enaio 9.10)
Danke und Grüsse Joachim
Hallo zusammen,
konnte es selber lösen:
$oJob = $session.NewJob( „krn.GetCounter“ );
in dem Fall war als Objekt folgende ID definiert, die man via API auslesen kann wenn man die os_guid mitgibt):
$oJob.InputParameters.AddNewStringParameter(„CounterGUID“, „xxxx“);
OjectDef:
-<![CDATA[[EDV|Dokument|Schriftstück-ID]
ADDON32=axaddcnt.dll
EXTRA00=COUNTERWIDTH=5
EXTRA01=COUNTERTYPE=3
EXTRA02=YEARFORMAT=4
EXTRA03=INITIALVALUE=1
EXTRA04=FORMAT=/
Gruss Joachim
Hoi @jowin, ich bin völlig verwirrt, in welcher Sprache ist denn Dein Code notiert?
Hallo @jowin,
sobald man ausserhalb des enaio Windows Client ist empfiehlt es sich meistens solche Dinge wie Counter Felder (Barcodes, DokumentIDs) nach meiner Erfahrung direkt im Server Event umzusetzen.
Hierzu kannst du den Server Event KernelAfterJob::std.IndexDataChanged
verwenden.
CONST COUNTER_ENDLESS=0
CONST COUNTER_DAILY=1
CONST COUNTER_MONTHLY=2
CONST COUNTER_YEARLY=3
Function Main()
Dim ObjectId: ObjectId = clng(RC.InputParams.Value("dwObjectID"))
Dim ObjectTypeId: ObjectTypeId = clng(RC.InputParams.Value("dwObjectType"))
Dim ActionID: ActionID = clng(RC.InputParams.Value("Action"))
If ObjectTypeId = 14 And ActionId = 2 Then
SetCounter ObjectId, ObjectTypeId, ActionID
End If
End Function
Function SetCounter(ObjectId, ObjectTypeId, ActionID)
Dim Counter: Counter = Counter("UNIQUE_COUNTER_ID", COUNTER_ENDLESS)
' Update des Objekts per dms.XMLUpdate fehlt hier noch
End Function
Public Function Counter(ByVal Guid, ByVal CounterType)
Dim JobInputParameter: Set JobInputParameter = RC.NewJobsParams
Dim JobOutputParameter: Set JobOutputParameter = RC.NewJobsParams
With JobInputParameter
.Value("CounterGUID") = Guid
.Value("Flags") = 0
.Value("Initial") = 1
.Value("Reset") = False
.Value("CounterType") = CounterType
End With
RC.Jobs.krn.GetCounter jobInputParameter, jobOutputParameter
Counter = jobOutputParameter.Value("Counter")
End Function
Bei ObjectTypeId = 14
handelt es sich um die Objekt Typ ID.
ActionId = 2
ist sehr wichtig, da so nur Neuanlagen geprüft werden. Ansonsten kann es schnell zu Rekursionen kommen. Im Beispiel Fehler noch der Update Befehl.
Falls bei Ihnen die konstanzer Helper Klasse RCHelper
bereits im System vorhanden sind dann kann man das Ganze auch etwas schlanker schreiben. Das können Sie prüfen in dem Sie in Event GlobalServerScript
nach class RCHelperClass
suchen,
Beispiel (auf Basis des RCHelper ) ist bereits inklusive Update des ID/Barcode Felds wobei die ID mit dem prefix Prefix
und einem Barcode mit acht Stellen (mit führen Nullen) generiert wird.
Function Main()
Dim ObjectId: ObjectId = clng(RC.InputParams.Value("dwObjectID"))
Dim ObjectTypeId: ObjectTypeId = clng(RC.InputParams.Value("dwObjectType"))
Dim ActionID: ActionID = clng(RC.InputParams.Value("Action"))
If ObjectTypeId = 14 And ActionId = ACTION_DOCUMENT_CREATED Then
Dim Counter: Counter = RCHelper.Counter("UNIQUE_KEY_FOR_COUNTER", COUNTER_ENDLESS)
Dim MyObject: Set MyObject = RCHelper.GetObjectDetailsAsObject(ObjectId, ObjectTypeId)
MyObject.SetField "ID", "Prefix-" & Right("00000000" & Counter, 8)
MyObject.Update
End If
End Function
Hallo @rk, ist powershell .
Hallo @uw,
Danke für die ausführliche Hilfe, werde mir das anschauen.
Viele Grüsse
Anbei die komplette Powershell routine / Grüsse jowin :
function addPdftest($session, $file){
$oJob = $session.NewJob( „krn.GetCounter“ );
$oJob.InputParameters.AddNewIntegerParameter(„Flags“, 0);
$oJob.InputParameters.AddNewBooleanParameter(„Reset“, 0);
$oJob.InputParameters.AddNewIntegerParameter(„Initial“, 0);
$oJob.InputParameters.AddNewIntegerParameter(„CounterType“, 3);
$oJob.InputParameters.AddNewStringParameter(„CounterGUID“, „4E25AD8A41634461845C4E23523E5713“);
$oJob.Execute();
$a = $oJob.OutputParameters(1).Value;
$str = $a.ToString(‚0000‘)
$date = get-date -Format yyyy
$str = $str + „/$date“;
$xml= [xml]@"
<?xml version='1.0' encoding='UTF-8'?> Altakte Eintritt via powershell Bemerkung $file Antrag $str "@;$xml.InnerXml > c:\temp\server-apirequest.xml
$oJob = $session.NewJob( „dms.XMLInsert“ );
$oJob.InputParameters.AddNewIntegerParameter(„Flags“, 0);
$oJob.InputParameters.AddNewXMLParameter(„XML“,$xml.InnerXml);
$oJob.InputParameters.AddNewStringParameter(„File_0“,$file);
$oJob.Execute();
$oJob.OutputParameters(1).XML > c:\temp\server-apiresponse.xml ;
}