[Gelöst] Kill Objekt NAV2013

25. Juni 2013 17:17

Weiß Jemand, wie man Kill-Objekte unter NAV2013 erstellen kann?
Mit
Code:
Objekt.INIT;
Objekt.Type := Objekt.Type::Table;
Objekt.ID := 5082445;
Objekt.Name := 'DEL_DEL_NAPA BE Arbeitsp0';
Objekt."Version List" := 'NABE3.10.02.00,del';
Objekt.INSERT;

scheint es nicht mehr zu funktionieren.
Es kommt dann:
In die Objekttabelle können keine Inhalte eingefügt werden. Verwenden Sie die Microsoft Dynamics NAV Development Enviroment, um die erforderlichen Änderungen vorzunehmen.
Zuletzt geändert von rkoch am 8. Januar 2014 13:25, insgesamt 1-mal geändert.

Re: Kill Objekt NAV2013

25. Juni 2013 19:16

Der Grund ist der: viewtopic.php?p=84161#p84161
Und nein, ich kenne leider keinen Workaround :-(
Probier mal was passiert, wenn du das noch vollständige Objekte als txt exportierst, das Maximale rauslöschst, wieder importierst, und das geänderte Objekt als fob exportierst.

Re: Kill Objekt NAV2013

25. Juni 2013 20:39

Hallo,

ein Workaround könnte eine Abfrage im SQL- Managementstudio auf der entsprechenden DB sein.

Code:
delete [dbo].[Object]
  where ([Type] > 1) and not (([ID] > 104000) and ([ID] <199000))
 
delete [dbo].[Object Metadata]
  where [Object Type]>1 and not (([Object ID] >104000) and ([Object ID] <199000))
 
delete [dbo].[Object Tracking]
  where [Object Type]>1 and not (([Object ID] >104000) and ([Object ID] <199000))


Am Beispiel des Upgrade Toolkits ohne Tabellen. Den Rest sollte sich jeder selbst zusammenreimen können :wink:

Gruß, Fiddi

Re: Kill Objekt NAV2013

26. Juni 2013 07:49

Natalie hat geschrieben:Der Grund ist der: viewtopic.php?p=84161#p84161
Und nein, ich kenne leider keinen Workaround :-(
Probier mal was passiert, wenn du das noch vollständige Objekte als txt exportierst, das Maximale rauslöschst, wieder importierst, und das geänderte Objekt als fob exportierst.


Das funktionierte doch in NAV 2009 schon nicht?
Durch das Insert erzeugt man theoretisch nur ein Tabellenobjekt, was aber TableData (Die SQL Tabelle), Fields und Keys benötigt. Dadurch gabs schon in vorherigen Versionen Fehler?

Btw, was sind Kill-Objekte?

Re: Kill Objekt NAV2013

26. Juni 2013 07:53

Btw, was sind Kill-Objekte?


Dabei handelt es sich um Objekte, die dafür sorgen, das sie das ursprüngliche Objekt mit der gleichen ID löschen. Durch das importieren einer FOB mit den entsprechenden KILL- Objekten werden diese Objekte aus der DB gelöscht.

Gruß, Fiddi

Re: Kill Objekt NAV2013

27. Juni 2013 10:23

fiddi hat geschrieben:
Btw, was sind Kill-Objekte?


Dabei handelt es sich um Objekte, die dafür sorgen, das sie das ursprüngliche Objekt mit der gleichen ID löschen. Durch das importieren einer FOB mit den entsprechenden KILL- Objekten werden diese Objekte aus der DB gelöscht.

Gruß, Fiddi


Wie kann eine Fob-Datei Lösch-Anweisungen haben, um ein "F4 auf der Zieltabelle auszuführen"? Wie erkennt man die dann im Import-Worksheet?

Re: Kill Objekt NAV2013

27. Juni 2013 10:43

JanGD hat geschrieben:Wie kann eine Fob-Datei Lösch-Anweisungen haben, um ein "F4 auf der Zieltabelle auszuführen"? Wie erkennt man die dann im Import-Worksheet?

Früher konnte man einfach einen Eintrag in die Objekt-Tabelle schreiben, wobei das BLOB-Feld leer blieb.
Exportiert man dieses Objekt als FOB, so wurde einem beim Import im Import Worksheet als Action "Delete" vorgeschlagen.

Re: Kill Objekt NAV2013

3. Juli 2013 15:05

Timo Lässer hat geschrieben:
JanGD hat geschrieben:Wie kann eine Fob-Datei Lösch-Anweisungen haben, um ein "F4 auf der Zieltabelle auszuführen"? Wie erkennt man die dann im Import-Worksheet?

Früher konnte man einfach einen Eintrag in die Objekt-Tabelle schreiben, wobei das BLOB-Feld leer blieb.
Exportiert man dieses Objekt als FOB, so wurde einem beim Import im Import Worksheet als Action "Delete" vorgeschlagen.


Ah, danke für die Info!
Ömm, was heißt früher? Ich habe mal versucht in NAV 2009 (oder evtl auch NAV5) über eine Codeunit eine (richtige) Tabelle anzulegen, dies aber erzeugte immer ein Fehler und ich hab es damit begründet dass beim Object.Insert keine TableData vorhande ist/erzeugt wird und auch kein Tabellenschlüssel definiert ist. Das muss ja quasi zur gleichen Zeit passieren.

Re: Kill Objekt NAV2013

3. Juli 2013 15:15

JanGD hat geschrieben:Ömm, was heißt früher? Ich habe mal versucht in NAV 2009 (oder evtl auch NAV5) über eine Codeunit eine (richtige) Tabelle anzulegen, dies aber erzeugte immer ein Fehler und ich hab es damit begründet dass beim Object.Insert keine TableData vorhande ist/erzeugt wird und auch kein Tabellenschlüssel definiert ist. Das muss ja quasi zur gleichen Zeit passieren.

Der Weg war schon richtig, jedoch kannst du das erzeugte Objekt logischerweise nicht benutzen, sondern nur als FOB exportieren.
"Früher" = als die Objekt-Tabelle noch nicht Read-Only war, als bis einschl. 2009 R2.

Re: Kill Objekt NAV2013

8. Januar 2014 13:23

In NAV2013 R2 kann man keine Null-Byte Objekte (Kill-Objekte) aus niedrigen Versionen mehr importieren. Bis NAV2013 konnte man die Null-Byte Objekte in einem Classic-Client z.B. NAV4.03 erstellen und das Importworksheet hat bis NAV2013 daraus interpretiert, dass das Objekt zu löschen ist.

In NAV2013 R2 muss man jetzt in einer Dummy-DB das Objekt erstellen und dann im SQL-Manager das Objekt verändern.
Und zwar für eine Page 70884 so:
Code:
USE [Deine Datenbank]

UPDATE [Object]
   SET [BLOB Reference] = NULL,
       [BLOB Size] = 0
   WHERE     (Type = 8) AND (ID = 70884)
   
GO


Im Anschluss kann man das Objekt als FOB-Datei auslesen und für seine Kunden bereitstellen.
Damit wird beim Import des Objektes die Page 70884 gelöscht.