[Gelöst] Powershell zum Einfügen von Copyright-Vermerk?

Bild Microsoft Dynamics NAV 2018

[Gelöst] Powershell zum Einfügen von Copyright-Vermerk?

Beitragvon Natalie » 17. Januar 2018 14:46

Ich muss in eine ganze Reihe von NAV-Objekten ganz oben in den Doku-Trigger eine Copyright-Zeile + Leerzeile hinzufĂĽgen.
Idealerweise soll auch die VersionList fĂĽr ein Add-On aktualisiert werden oder wenigstens Datum und/oder Modified gesetzt werden, aber das ist kein Muss, das geht schlieĂźlich auch mit NAV-Boardmitteln.
Hat jemand zufällig ein fertiges cmdlet dafür?

(Warum PowerShell: Die Herausforderung ist, dass ein Objekt ohne gefĂĽllten Dokutrigger in der Textdatei keinen Dokutrigger besitzt. Suchen und Ersetzen geht auĂźerdem nicht, weil das zeilenĂĽbergreifend funktionieren muss.)
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Powershell zum EinfĂĽgen von Copyright-Vermerk?

Beitragvon Timo Lässer » 17. Januar 2018 16:40

Mit einem Powershell cmdlet kann ich dir nicht dienen, aber ich kann dir verraten, dass die nächste Version des Object Manager Advanced (OMA12) in der Lage sein wird, einen Eintrag im Doku-Trigger am Anfang (statt wie bisher am Ende) zu setzen.
UrsprĂĽnglich sollte OMA12 zu den NAV TechDays 2017 released werden. Da OMA12 aber zu NAV2018 kompatibel sein soll, lautete die letzte News "will be released later this year".
Ich habe gerade nochmal nachgesehen: Leider ist OMA12 immer noch nicht released und auch keine weitere AnkĂĽndigung.
Ich bin aber fest davon ĂĽberzeugt, dass es "in KĂĽrze" verfĂĽgbar sein wird.

Reijer hat dem Release den inoffiziellen Codenamen "The Timo Laesser release" verpasst, weil die meisten neuen Features und Verbesserungen von meinen Wunschlisten stammen.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: Powershell zum EinfĂĽgen von Copyright-Vermerk?

Beitragvon Natalie » 17. Januar 2018 16:53

Timo Lässer hat geschrieben:dass OMA12 in der Lage sein wird, einen Eintrag im Doku-Trigger am Anfang (statt wie bisher am Ende) zu setzen.

Das ist ja ganz schön, wenn OMA das bei Objektänderung automatisch tut - bei mir soll aber NUR der Eintrag im Dokutrigger ergänzt werden, nachträglich, als einzige Änderung sozusagen.
Ich warte schon sehnsüchtig auf die neue Version, aber die Aufgabe muss ich sehr bald bewältigen - zur Not manuell :roll:
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Powershell zum EinfĂĽgen von Copyright-Vermerk?

Beitragvon Kowa » 18. Januar 2018 01:37

Da trifft es sich ja gut, dass ich just einen Objektsplitter kreiert habe :wink: .
FĂĽr die Objekte ohne Documentation-Trigger solltest du hiermit schon mal weiterkommen, da reicht eine kleine Erweiterung um den zu erzeugen, die ich da mal dazugebaut habe.

Der Export der Objekte ist hierbei in den Unterordner SPLITNAVOBJCPYRT, ansonsten alles wie hier.

Der erzeugte Beispieltrigger sieht dann jeweils so aus:
Code: Alles auswählen
    BEGIN
    {
     (c) Natalie's Software Enterprises

    }
    END.



Code: Alles auswählen
function Split-NAVObjectFileDocuTrigger
{
    $ErrorActionPreference = "Stop"
    $PSDefaultParameterValues['*:ErrorAction']='Stop'
    Function Get-FileName($initialDirectory)
    {
        [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
   
        $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
        $OpenFileDialog.initialDirectory = $initialDirectory
        $OpenFileDialog.filter = "NAV Object Files (*.txt)|*.txt"
        $OpenFileDialog.ShowDialog() | Out-Null
        $OpenFileDialog.filename
    }
       
    $inputfile = Get-FileName "C:\temp" # This is the default path in OpenFile window.
    if ($inputfile -eq "") {throw 'Please select a file'}
     
    [decimal]$filesize = ((Get-Item $inputfile).length/1MB)
    $filesize =[math]::round($filesize,2)
    $LineCnt = $inputfile.count
    $inputfile = resolve-path $inputfile
    $WorkingFolder = Split-Path -Parent $inputfile
   

   
    if (Test-path "$WorkingFolder\SPLITNAVOBJCPYRT\")
    {Remove-Item -path "$WorkingFolder\SPLITNAVOBJCPYRT\" -Recurse -Force}

    Write-Host "Splitting NAV objects from $inputfile (Size: $filesize MB) to $WorkingFolder\SPLITNAVOBJCPYRT\, this may take a while..." -ForegroundColor Yellow
    $startime = date
   
    $Sr = new-object System.IO.StreamReader($inputfile,[system.text.encoding]::GetEncoding(850))
    [int]$ObjCnt = 0
    [int]$TabCnt = 0
    [int]$PagCnt = 0
    [int]$RepCnt = 0
    [int]$CodCnt = 0
    [int]$XmlCnt = 0
    [int]$ForCnt = 0
    [int]$DatCnt = 0
    [int]$QueCnt = 0
    [int]$MenCnt = 0
   

    $LastLine = ''
    while (-not $Sr.EndOfStream)
    {
        $Currline = $sr.ReadLine()
        if ($Currline.StartsWith('OBJECT'))
        {
            [String]$ObjectChar = $Currline.Substring(7,1)
            $ObjectLine = $currline.Split(' ')
            $ObjCnt++
            Switch ($ObjectChar)
            {
                'T' {$TabCnt++}
                'P' {$PagCnt++}
                'R' {$RepCnt++}
                'C' {$CodCnt++}
                'X' {$XmlCnt++}
                'F' {$ForCnt++}
                'D' {$DatCnt++}
                'Q' {$QueCnt++}
                'M' {$MenCnt++}
       
            }
            $ObjectFileName = $ObjectLine[1].Substring(0,3).ToUpper() + $ObjectLine[2] + ".TXT"
            $Objectfile = New-Item -path "$WorkingFolder\SPLITNAVOBJCPYRT\$ObjectFileName" -type file -force
            IF (Test-Path $ObjectFile) {Remove-Item $ObjectFile}
           
            $sw = new-object System.IO.Streamwriter($Objectfile,$false,[system.text.encoding]::GetEncoding(850))
        }
       
        if (($Currline -eq '    END.') -and ($LastLine -eq '    BEGIN'))
        {   
            $sw.writeline('    {')
         
            $sw.writeline("     (c) Natalie's Software Enterprises" )
            $sw.writeline()
            $sw.writeline('    }')
            $sw.writeline('    END.')
            $LastLine = $CurrLine
        }
         
        elseif (-not $Currline.StartsWith('}'))
        {
            $sw.writeline($Currline)
            $Lastline = $CurrLine
        }
        else
        {
            $sw.writeline($Currline)
            $Lastline = $CurrLine
            $sw.writeline()
            $sw.Flush()

        }
           
       
    }

   
   
$endtime = date
$time = $endtime - $startime
Write-Host "$ObjCnt NAV objects splitted to $WorkingFolder\SPLITNAVOBJCPYRT\ in $($time.Minutes)m:$($time.Seconds)s:$($time.Milliseconds)ms" -ForegroundColor Yellow
Write-Host "Tables: $TabCnt" -ForegroundColor Yellow
Write-Host "Pages: $PagCnt" -ForegroundColor Yellow
Write-Host "Reports: $RepCnt" -ForegroundColor Yellow
Write-Host "Codeunits: $CodCnt" -ForegroundColor Yellow
Write-Host "XMLPorts: $XMLCnt" -ForegroundColor Yellow
Write-Host "MenuSuites: $MenCnt" -ForegroundColor Yellow
if ($ForCnt -gt 0)
{Write-Host "Forms: $ForCnt" -ForegroundColor Yellow}
if ($DatCnt -gt 0)
{Write-Host "Dataports: $DatCnt" -ForegroundColor Yellow}   
$sr.Close()
$sr.Dispose()
$sw.close()
$sw.Dispose()
Invoke-item "$WorkingFolder\SPLITNAVOBJCPYRT\"
}


Für die Objekte mit vorhandenem Documentation-Trigger wird es natürlich komplizierter, da muss ja der ganze Trigger durchgekämmt werden, wenn die Zeilen oben eingeschoben werden müssen. [Edit]: Das fertige Skript gibt es jetzt auch :greenarrow: Dokumentations-Trigger pflegen
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: Powershell zum EinfĂĽgen von Copyright-Vermerk?

Beitragvon Timo Lässer » 18. Januar 2018 11:23

Natalie hat geschrieben:Das ist ja ganz schön, wenn OMA das bei Objektänderung automatisch tut - bei mir soll aber NUR der Eintrag im Dokutrigger ergänzt werden, nachträglich, als einzige Änderung sozusagen.
Ich warte schon sehnsüchtig auf die neue Version, aber die Aufgabe muss ich sehr bald bewältigen - zur Not manuell :roll:

Vorgesehen ist die Objekt-Dokumentation natĂĽrlich bei "Assign Modifications", man kann aber auch Objekte manuell (ohne Modifications) einem Projekt zuordnen und dann ĂĽber die Zeilenfunktion "Add Documentation Tag" die Dokumentation in den zugeordneten Objekten hinzufĂĽgen.

Was das Release-Datum angeht, habe ich gerade nochmal bei Reijer nachgefragt.
Entweder es verzögert sich (aus welchen Gründen auch immer), oder sie haben es nur noch nicht auf MyIDYN hochgeladen.
Ich hoffe ja auf letzteres.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: [Gelöst] Powershell zum Einfügen von Copyright-Vermerk?

Beitragvon Kowa » 18. Januar 2018 18:18

Eine harte Nuss :-) , aber mein Skript dazu ist nun hier verfĂĽgbar.
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: Powershell zum EinfĂĽgen von Copyright-Vermerk?

Beitragvon Natalie » 29. Januar 2018 09:24

Timo Lässer hat geschrieben:Ich habe gerade nochmal nachgesehen: Leider ist OMA12 immer noch nicht released und auch keine weitere Ankündigung.
Ich bin aber fest davon ĂĽberzeugt, dass es "in KĂĽrze" verfĂĽgbar sein wird.

Es ist so weit, OMA 12.0 fĂĽr NAV 2013 - 2018 ist drauĂźen :-)
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Powershell zum EinfĂĽgen von Copyright-Vermerk?

Beitragvon Timo Lässer » 29. Januar 2018 12:03

Natalie hat geschrieben:Es ist so weit, OMA 12.0 fĂĽr NAV 2013 - 2018 ist drauĂźen :-)

Ich weiĂź, trotzdem danke ich dir fĂĽr den Hinweis, denn somit wissen es jetzt die anderen auch. 8-)
Ich bin gerade schon dabei unsere Datenbanken zu aktualisieren. (Sind ja zur Zeit noch "nur" 3x5)
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21


ZurĂĽck zu NAV 2018

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast