Export av DI Office CRM-data
Bakgrund: Här följer instruktion för hur data tas ut ur di-office i syfte att importeras till ett annat program. Det finns två stycken exporter att beakta, Excel och SQL-data via script.
Exceldata direkt ur programmet
Detta är en allmän instruktion och gäller för följande register:- Uppgifter
- Leverantörer
- Medarbetare
- Kontaktpersoner
- Produkter
- Orderunderlag
- Offert
- Order
- Kunder (special) Instruktion:
- Logga in i DI Office
- Välj register, om Kunder gå till special-instruktionen för KUNDER (nedan)
- I vyn för registret, högerklicka och välj ”Fältväljaren”
- Dra ut _ALLA_ fälten till rubrikerna så att tabellen innehåller all potentiell data
- Gå nu på hem och sedan excel och spara filen
- Gå till 2. och repetera för övriga register
Instruktion KUNDER:
- Logga in i DI Office
- Välj Kunder
- I vyn för registret, högerklicka och välj ”Fältväljaren”
- Dra ut _ALLA_ fälten till rubrikerna så att tabellen innehåller all potentiell data
- Gå nu på Kunder och sedan ”Expåort till excel” och välj en av valen för att spara:
- Repetera 5. för varje variant
- Alla filer som sparats kan med fördel lagras i en och samma mapp
- Filerna är semikolon-separerade (.csv).
- Man kan öppna filerna i excel och spara dom som tabb-separerade (.txt) om man så önskar.
- Sedan kan man enkelt zippa för att sändas till mottagare.
SQL-data via script
Ta ut övriga data via script ur sql-databasen- Kopiera nedanstående till en fil och namnge den crm_export.ps1
- Kör i kommandoprompt powershell och sedan "Set-ExecutionPolicy RemoteSigned" för tillåtelse att köra detta script.
- Korrigera $DocsPath
- Korrigera $SqlConnection.ConnectionString.
- Kör scriptet genom att högerklicka och "Run with PowerShell"
$DocsPath="C:\Data\Export\" $SqlQuery = "select AktorRolle.Alfasok as S1KundNr, Rotkatalog+URL as Path, emne as Rubrik, DokumentGruppe.Navn AS Dokumentgrupp, DF.Navn AS Författare, ISNULL(DM.Navn, '') AS Mottagare,* from Kunde inner join AktorRolle ON AktorRolle.OBJECTID = Kunde.OBJECTID inner join DokumentAktor ON DokumentAktor.OBJECTID = AktorRolle.DokumentAktorID inner join A_DokumentAktor_Dokument ON A_DokumentAktor_Dokument.DokumentAktorID = DokumentAktor.OBJECTID inner join Dokument ON A_DokumentAktor_Dokument.DokumentID = Dokument.OBJECTID inner join DokumentMappe ON DokumentMappe.OBJECTID = DokumentAktor.DokumentMappeID inner join CustomDokument ON CustomDokument.OBJECTID = Dokument.OBJECTID inner join DokumentGruppe ON DokumentGruppe.OBJECTID = CustomDokument.FDokumentGruppeID left outer join DokumentAktor DF ON DF.OBJECTID = Dokument.FForfatterID left outer join DokumentAktor DM ON DM.OBJECTID = Dokument.FMottakerID " $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Data Source=sqlserver\sqlinstancename;Initial Catalog=dioffice;uid=sa;pwd=sapassword" $SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = $SqlQuery $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $nRecs = $SqlAdapter.Fill($DataSet) $nRecs | Out-Null #Populate Hash Table $objTable = $DataSet.Tables[0] #Export Hash Table to CSV File $DocPath=$DocsPath+"docs_per_customer.csv" $objTable | Export-CSV -path $DocPath -Delimiter "`t" -Encoding UTF8 -NoTypeInformation (Get-Content $DocPath) | % {$_ -replace '"', ""} | out-file -FilePath $DocPath -Force -Encoding UTF8 $SqlQuery = "select AR.Alfasok as S1KundNr, AktorRolle.Alfasok as Kontakt, Rotkatalog+URL as Path, emne as Rubrik, * from BusinessKontakt " + "inner join AktorRolle ON AktorRolle.OBJECTID = BusinessKontakt.OBJECTID " + "inner join kunde on kunde.OBJECTID = BusinessKontakt.FKundeID "+ "inner join AktorRolle AR ON Kunde.OBJECTID = AR.OBJECTID "+ "inner join DokumentAktor ON DokumentAktor.OBJECTID = AktorRolle.DokumentAktorID "+ "inner join A_DokumentAktor_Dokument ON A_DokumentAktor_Dokument.DokumentAktorID = DokumentAktor.OBJECTID "+ "inner join Dokument ON A_DokumentAktor_Dokument.DokumentID = Dokument.OBJECTID "+ "inner join DokumentMappe ON DokumentMappe.OBJECTID = DokumentAktor.DokumentMappeID "+ "inner join CustomDokument ON CustomDokument.OBJECTID = Dokument.OBJECTID" $SqlCmd.CommandText = $SqlQuery $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $nRecs = $SqlAdapter.Fill($DataSet) $nRecs | Out-Null $objTable = $DataSet.Tables[0] $DocPath=$DocsPath+"doc_per_contact.csv" $objTable | Export-CSV -path $DocPath -Delimiter "`t" -Encoding UTF8 -NoTypeInformation (Get-Content $DocPath) | % {$_ -replace '"', ""} | out-file -FilePath $DocPath -Force -Encoding UTF8 $SqlQuery = "select AR.Alfasok as S1KundNr, AktorRolle.Alfasok as Kontakt, Notat.Dato as Datum, REPLACE(notat.tekst,char(13)+char(10),' ') as Text from BusinessKontakt "+ "inner join AktorRolle ON AktorRolle.OBJECTID = BusinessKontakt.OBJECTID "+ "inner join kunde on kunde.OBJECTID = BusinessKontakt.FKundeID "+ "inner join AktorRolle AR ON Kunde.OBJECTID = AR.OBJECTID "+ "inner join A_Notat_AktorRolle ON A_Notat_AktorRolle.AktorRolleID = AktorRolle.OBJECTID "+ "inner join Notat ON Notat.OBJECTID = A_Notat_AktorRolle.NotatID" $SqlCmd.CommandText = $SqlQuery $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $nRecs = $SqlAdapter.Fill($DataSet) $nRecs | Out-Null $objTable = $DataSet.Tables[0] $DocPath=$DocsPath+"activity_per_contact.csv" $objTable | Export-CSV -path $DocPath -Delimiter "`t" -Encoding UTF8 -NoTypeInformation #(Get-Content $DocPath) | % {$_ -replace '"', ""} | out-file -FilePath $DocPath -Force -Encoding UTF8 $SqlQuery = "select AktorRolle.Alfasok as S1KundNr,Notat.Dato as Datum,REPLACE(notat.tekst,char(13)+char(10),' ') as Text from Kunde "+ "inner join AktorRolle ON AktorRolle.OBJECTID = Kunde.OBJECTID "+ "inner join A_Notat_AktorRolle ON A_Notat_AktorRolle.AktorRolleID = AktorRolle.OBJECTID "+ "inner join Notat ON Notat.OBJECTID = A_Notat_AktorRolle.NotatID" $SqlCmd.CommandText = $SqlQuery $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $nRecs = $SqlAdapter.Fill($DataSet) $nRecs | Out-Null $objTable = $DataSet.Tables[0] $DocPath=$DocsPath+"activity_per_customer.csv" $objTable | Export-CSV -path $DocPath -Delimiter "`t" -Encoding UTF8 -NoTypeInformation #(Get-Content $DocPath) | % {$_ -replace '"', ""} | out-file -FilePath $DocPath -Force -Encoding UTF8 $SqlQuery = "select AktorRolle.Alfasok as S1KundNr, Rotkatalog+URL as Path, emne as Rubrik, DokumentGruppe.Navn AS Dokumentgrupp, DF.Navn AS Författare, ISNULL(DM.Navn, '') AS Mottagare,* "+ "from Leverandor inner join AktorRolle ON AktorRolle.OBJECTID = Leverandor.OBJECTID "+ "inner join DokumentAktor ON DokumentAktor.OBJECTID = AktorRolle.DokumentAktorID "+ "inner join A_DokumentAktor_Dokument ON A_DokumentAktor_Dokument.DokumentAktorID = DokumentAktor.OBJECTID "+ "inner join Dokument ON A_DokumentAktor_Dokument.DokumentID = Dokument.OBJECTID "+ "inner join DokumentMappe ON DokumentMappe.OBJECTID = DokumentAktor.DokumentMappeID "+ "inner join CustomDokument ON CustomDokument.OBJECTID = Dokument.OBJECTID "+ "inner join DokumentGruppe ON DokumentGruppe.OBJECTID = CustomDokument.FDokumentGruppeID "+ "left outer join DokumentAktor DF ON DF.OBJECTID = Dokument.FForfatterID "+ "left outer join DokumentAktor DM ON DM.OBJECTID = Dokument.FMottakerID" $SqlCmd.CommandText = $SqlQuery $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $nRecs = $SqlAdapter.Fill($DataSet) $nRecs | Out-Null $objTable = $DataSet.Tables[0] $DocPath=$DocsPath+"doc_per_supplier.csv" $objTable | Export-CSV -path $DocPath -Delimiter "`t" -Encoding UTF8 -NoTypeInformation #(Get-Content $DocPath) | % {$_ -replace '"', ""} | out-file -FilePath $DocPath -Force -Encoding UTF8 $SqlQuery = "select AktorRolle.Alfasok as S1KundNr,Notat.Dato as Datum,REPLACE(notat.tekst,char(13)+char(10),' ') as Text from Leverandor "+ "inner join AktorRolle ON AktorRolle.OBJECTID = Leverandor.OBJECTID "+ "inner join A_Notat_AktorRolle ON A_Notat_AktorRolle.AktorRolleID = AktorRolle.OBJECTID "+ "inner join Notat ON Notat.OBJECTID = A_Notat_AktorRolle.NotatID" $SqlCmd.CommandText = $SqlQuery $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $nRecs = $SqlAdapter.Fill($DataSet) $nRecs | Out-Null $objTable = $DataSet.Tables[0] $DocPath=$DocsPath+"activity_per_supplier.csv" $objTable | Export-CSV -path $DocPath -Delimiter "`t" -Encoding UTF8 -NoTypeInformation #(Get-Content $DocPath) | % {$_ -replace '"', ""} | out-file -FilePath $DocPath -Force -Encoding UTF8 $SqlQuery = "select AktorRolle.Alfasok as LevId, LK.Fnavn as Namn, ISNULL(Stilling.fnavn,'') AS Befattning, LK.Telefon As Telefon2, "+ "LK.TelefonArbeid as Telefon, LK.TelefonMobil As Mobiltelefon, LK.Postadresse1 As Adress1, lk.PostAdresse2 as Adress2, "+ "LK.Epost1, lk.Epost2, AktorRolle.FNavn AS Företag from Leverandor "+ "inner join AktorRolle ON AktorRolle.OBJECTID = Leverandor.OBJECTID "+ "inner join BusinessKontakt ON FLeverandorID = AktorRolle.OBJECTID "+ "inner join AktorRolle LK ON BusinessKontakt.OBJECTID = LK.OBJECTID "+ "left outer join Stilling ON BusinessKontakt.StillingId = Stilling.Objectid order by lk.FNavn" $SqlCmd.CommandText = $SqlQuery $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $nRecs = $SqlAdapter.Fill($DataSet) $nRecs | Out-Null $objTable = $DataSet.Tables[0] $DocPath=$DocsPath+"contact_per_supplier.csv" $objTable | Export-CSV -path $DocPath -Delimiter "`t" -Encoding UTF8 -NoTypeInformation #(Get-Content $DocPath) | % {$_ -replace '"', ""} | out-file -FilePath $DocPath -Force -Encoding UTF8