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:
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 Connectionstring för sql-info.
- Kör scriptet genom att högerklicka och "Run with PowerShell"
$DocsPath="D:\data\_Lime\Docs\"
$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=sql\sql2008r2;Initial Catalog=softonecrm;uid=sa;pwd=SoftOneR2"
$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
