NAV 2013 ile gelen yeni bir özellik olan Dimension Set Entries üzerinde biraz inceleme yaptım. Öncelikle söylemek gerekirse büyük bir performans artışı sağlayacağını düşünüyorum. Önceden farketmediğimiz hantal bir yaklaşıma değişik bir yaklaşım getirmişler. Çok yaratıcı ve etkili bir çözüm olduuğunu söyleyebilirim. Sözü fazla uzatmadan,

Dimension set kısaca belge bazında giriş yaptığımız boyut değerlerinin benzersiz örneklerini belirlemek, kaydetmek ve belgedeki dimension set id alanına bu değeri saklamak üzerine kurulmuş. Böylece her belge bazında tuttuğumuz document dimension giti bir yapı direk belgedeki dimension set id alanına iniyor. Böylelikle süreç içersinde milyarlara ulaşan kayıt sayılarından kurtuluyoruz. Açıkçası sadece bu özellik bile gerçekten çok etkileyici bir özellik.

Dimension Set ID Dimension Code Dimension Value Code Dimension Value Name
108 AREA 70 America North
108 BUSINESSGROUP HOME Home
108 DEPARTMENT SALES Sales

 

 

Boyut setleri (Dimension Sets) Dimension Set Entry tablosunda aynı Dimension set ID ile kaydedilir.

IC612730

 

 

 

 

 

 

 

Bir Günlük Satırı (Journal Line), Belge Başlığı (document header) yada belge satırı (document line) oluşturduğunuz zaman boyut değerlerinden karışık kombinasyonlar oluşturup bunu yukardaki kayıtlardan birine atayabilirsiniz. eğer kombinasyonu sağlayan bir setid yok ise bu oluşturulacaktır.

 

Boyut kombinasyonlarının dimension set tablosunda öncelikle kaydedilmesi ile büyük resimde database boyutunu önemli ölçüde düşürecek ve toplam genel performansı yükseltecektir.

Aşağıdaki tablolar 480 numaralı Dimension Set ID yeni bir alana sahipler

480 numaralı alan aşağıdaki tablolarda değiştirilemez (noneditable) olarak eklenmiştir..

Table No. Table Name
17 G/L Entry
21 Cust. Ledger Entry
25 Vendor Ledger Entry
32 Item Ledger Entry
110 Sales Shipment Header
111 Sales Shipment Line
112 Sales Invoice Header
113 Sales Invoice Line
114 Sales Cr.Memo Header
115 Sales Cr.Memo Line
120 Purch. Rcpt. Header
121 Purch. Rcpt. Line
122 Purch. Inv. Header
123 Purch. Inv. Line
124 Purch. Cr. Memo Hdr.
125 Purch. Cr. Memo Line
169 Job Ledger Entry
203 Res. Ledger Entry
271 Bank Account Ledger Entry
281 Phys. Inventory Ledger Entry
297 Issued Reminder Header
304 Issued Fin. Charge Memo Header
5107 Sales Header Archive
5108 Sales Line Archive
5109 Purchase Header Archive
5110 Purchase Line Archive
5601 FA Ledger Entry
5625 Maintenance Ledger Entry
5629 Ins. Coverage Ledger Entry
5744 Transfer Shipment Header
5745 Transfer Shipment Line
5746 Transfer Receipt Header
5747 Transfer Receipt Line
5802 Value Entry
5832 Capacity Ledger Entry
5907 Service Ledger Entry
5908 Service Header
5933 Service Order Posting Buffer
5970 Filed Service Contract Header
5990 Service Shipment Header
5991 Service Shipment Line
5992 Service Invoice Header
5993 Service Invoice Line
5994 Service Cr. Memo Header
5995 Service Cr. Memo Line
6650 Return Shipment Header
6651 Return Shipment Line
6660 Return Receipt Header
6661 Return Receipt Line

480 numaralı alan aşağıdaki tablolarda değiştirilebilir olarak eklenmiştir.

Table No. Table Name
36 Sales Header
37 Sales Line
38 Purchase Header
39 Purchase Line
81 Gen. Journal Line
83 Item Journal Line
89 BOM Journal Line
96 G/L Budget Entry
207 Res. Journal Line
210 Job Journal Line
221 Gen. Jnl. Allocation
246 Requisition Line
295 Reminder Header
302 Finance Charge Memo Header
5405 Production Order
5406 Prod. Order Line
5407 Prod. Order Component
5615 FA Allocation
5621 FA Journal Line
5635 Insurance Journal Line
5740 Transfer Header
5741 Transfer Line
5900 Service Header
5901 Service Item Line
5902 Service Line
5965 Service Contract Header
5997 Standard Service Line
7134 Item Budget Entry
99000829 Planning Component

Bu alan aşağıdaki buffer tablolarına da eklenmiştir..

Table No. Table Name
49 Invoice Post. Buffer
212 Job Posting Buffer
372 Payment Buffer
382 CV Ledger Entry Buffer
461 Prepayment Inv. Line Buffer
5637 FA G/L Posting Buffer
7136 Item Budget Buffer

 

 

Günlük satırlarının deftere nakledilmesi

Değişiklik listesi:

  • Journal line dimension tablosu silindi.
  • Dimension Set ID alanı oluşturuldu.

eski versiyonlar Microsoft Dynamics NAV 2013
ResJnlLine."Qty. per Unit of Measure" := 
  SalesLine."Qty. per Unit of Measure";
TempJnlLineDim.DELETEALL;
TempDocDim.RESET;
TempDocDim.SETRANGE(
  "Table ID",DATABASE::"Sales Line");
TempDocDim.SETRANGE(
  "Line No.",SalesLine."Line No.");
DimMgt.CopyDocDimToJnlLineDim(
  TempDocDim,TempJnlLineDim);
ResJnlPostLine.RunWithCheck(
  ResJnlLine,TempJnlLineDim);

ResJnlLine."Qty. per Unit of Measure" := 
  SalesLine."Qty. per Unit of Measure";
ResJnlLine."Dimension Set ID" := 
  SalesLine." Dimension Set ID ";
ResJnlPostLine.Run(ResJnlLine);

Belgenin Deftere nakledilmesi

Belgenin post edilmesi ile belgeler arası boyut kopyalama gibi hammal işlerden kurtulduk.

eski versiyonlarda Microsoft Dynamics NAV 2013
DimMgt.MoveOneDocDimToPostedDocDim(
  TempDocDim,DATABASE::"Sales Line",
  "Document Type",
  "No.",
  SalesShptLine."Line No.",
  DATABASE::"Sales Shipment Line",
  SalesShptHeader."No.");
SalesShptLine."Dimension Set ID”
  := SalesLine."Dimension Set ID”

Belge boyutlarının güncellenmesi

Sales order line tablosunda örnek olarak aşağıdaki şekilde bir kod çalışıyor olacak.

eski versiyonlarda Microsoft Dynamics NAV 2013
Table 37, function ShowDimensions:
TESTFIELD("Document No.");
TESTFIELD("Line No.");
DocDim.SETRANGE("Table ID",DATABASE::"Sales Line");
DocDim.SETRANGE("Document Type","Document Type");
DocDim.SETRANGE("Document No.","Document No.");
DocDim.SETRANGE("Line No.","Line No.");
DocDimensions.SETTABLEVIEW(DocDim);
DocDimensions.RUNMODAL;
Table 37, function ShowDimensions:
"Dimension ID" := 
  DimSetEntry.EditDimensionSet(
    "Dimension ID");

Deftere nakledilmiş belgelerde mevcut boyutların görüntülenmesi

Sales Shipment line tablosundaki boyutlar örnek olarak aşağıdaki şekilde görüntüleniyor.

ESKİ versionlarda Microsoft Dynamics NAV 2013
Table 111, function ShowDimensions:
TESTFIELD("No.");
TESTFIELD("Line No.");
PostedDocDim.SETRANGE(
  "Table ID",DATABASE::"Sales Shipment Line");
PostedDocDim.SETRANGE(
  "Document No.","Document No.");
PostedDocDim.SETRANGE("Line No.","Line No.");
PostedDocDimensions.SETTABLEVIEW(PostedDocDim);
PostedDocDimensions.RUNMODAL;
Table 111, function ShowDimensions:
DimSetEntry.ShowDimensionSet(
  "Dimension ID");

Bir Belge için Default Boyutlar aşağıdaki şekilde görüntülenir.

Sales Order Line tablosu için örnek aşağıdaki şekilde.

ESKİ versiyonlarda Microsoft Dynamics NAV 2013
Table 37, function CreateDim()
SourceCodeSetup.GET;
TableID[1] := Type1;
No[1] := No1;
TableID[2] := Type2;
No[2] := No2;
TableID[3] := Type3;
No[3] := No3;
"Shortcut Dimension 1 Code" := '';
"Shortcut Dimension 2 Code" := '';
DimMgt.GetPreviousDocDefaultDim(
  DATABASE::"Sales Header","Document Type",
  "Document No.",0,
  DATABASE::Customer,
  "Shortcut Dimension 1 Code",
  "Shortcut Dimension 2 Code");
DimMgt.GetDefaultDim(
  TableID,No,SourceCodeSetup.Sales,
  "Shortcut Dimension 1 Code",
  "Shortcut Dimension 2 Code");
IF "Line No." <> 0 THEN
  DimMgt.UpdateDocDefaultDim(
    DATABASE::"Sales Line","Document Type",
    "Document No.","Line No.",
    "Shortcut Dimension 1 Code",
    "Shortcut Dimension 2 Code");
Table 37, function CreateDim()
SourceCodeSetup.GET;
TableID[1] := Type1;
No[1] := No1;
TableID[2] := Type2;
No[2] := No2;
TableID[3] := Type3;
No[3] := No3;
"Shortcut Dimension 1 Code" := '';
"Shortcut Dimension 2 Code" := '';
GetSalesHeader;
"Dimension ID" :=
  DimMgt.GetDefaultDimID(
    TableID,No,SourceCodeSetup.Sales,
    "Shortcut Dimension 1 Code",
    "Shortcut Dimension 2 Code",
    SalesHeader."Dimension ID",
    DATABASE::"Sales Header");