W celu odczytania nazw tabel, w których przechowywane są wartości pól zaawansowanych, należy wykonać poniższe zapytanie:
select
konf.NazwaWyswietlanaDluga as [Nazwa w module konfiguracji pol wlasnych],
extensionEntities.TableName as [Tabela z wartosciami pol zaawansowanych]
from ModelDanychContainer.KonfiguracjePolWlasnych2 konf inner join DataExtensions.CurrentExtensionEntities extensionEntities on konf.MetadaneZaawansonychPolWlasnych_Id = extensionEntities.Id
order by konf.NazwaWyswietlanaDluga
Z powyższego zapytania dowiadujemy się, że np. tabela przechowująca wartości zaawansowanych pól własnych asortymentu to: ModelDanychContainer.Asortymenty_PolaWlasneAsortyment_Adv2
A więc aby wyświetlić wartości wszystkich pól zaawansowanych dla asortymentu trzeba wykonać zapytanie:
select * from ModelDanychContainer.Asortymenty_PolaWlasneAsortyment_Adv2
gdzie
[Id] [int] NOT NULL - klucz główny będący jednocześnie kluczem obcym do kolumny [Id] z tabeli ModelDanychContainer.Asortymenty
[S0..99] [nvarchar](256) NULL - kolumny przechowujące wartości pól typu "Tekst"
[I0..99] [int] NULL - kolumny przechowujące wartości pól typu "Liczba całkowita"
[D0..99] [decimal](18, 6) NULL - kolumny przechowujące wartości pól typu "Liczba rzeczywista"
[B0..99] [bit] NULL - kolumny przechowujące wartości pól typu "Wartość logiczna"
[T0..99] [datetime2](7) NULL - kolumny przechowujące wartości pól typu "Data"
[G0..99] [uniqueidentifier] NULL - kolumny przechowujące wartości typu GUID
Widać, że nazwy kolumn przechowujące wartości pól zaawansowanych tworzone są według schematu {S|I|D|B|T|G}0..99 gdzie 0..99 jest unikatowym (w ramach typu pola) numerem. Po utworzeniu danego pola nazwa jego kolumny pozostaje już niezmienna.
Poniższe zapytanie wypisze wszystkie pola zaawansowane, odpowiadające im nazwy kolumn oraz informacje o powiązanych słownikach:
select
extensionEntities.TableName as [Tabela z wartosciami pol zaawansowanych],
extensionProperties.[Name] as [Nazwa pola],
(case extensionProperties.TypeId
when 1 then 'I'
when 2 then 'G'
when 3 then 'S'
when 4 then 'D'
when 5 then 'T'
when 6 then 'B'
end) + cast(extensionProperties.PlaceholderIndex as nvarchar(2)) as [Nazwa kolumny pola],
case extensionProperties.DataSourceKind
when 0 then null
when 1 then N'Slownik wlasny'
when 2 then N'Slownik systemowy'
when 3 then N'Slownik wlasny SQL'
end as [Rodzaj slownika],
case extensionProperties.DataSourceKind
when 0 then null
when 1 then (select sw.Nazwa from ModelDanychContainer.SlownikiWlasne sw where sw.Id = extensionProperties.DataSourceId)
when 2 then case extensionProperties.DataSourceId when 1 then N'ModelDanychContainer.Waluty' when 2 then N'ModelDanychContainer.Magazyny' when 3 then N'ModelDanychContainer.CentraGromadzeniaFinansow_RachunekBankowy' end
when 3 then (select sd.[Name] from ModelDanychContainer.SqlDictionaries sd where sd.Id = extensionProperties.DataSourceId)
end as [Nazwa slownika],
case extensionProperties.DataSourceKind
when 0 then null
when 1 then (select sw.Id from ModelDanychContainer.SlownikiWlasne sw where sw.Id = extensionProperties.DataSourceId)
when 2 then null
when 3 then (select sd.Id from ModelDanychContainer.SqlDictionaries sd where sd.Id = extensionProperties.DataSourceId)
end as [Id slownika]
from DataExtensions.CurrentExtensionEntities extensionEntities inner join
DataExtensions.CurrentExtensionProperties extensionProperties on extensionEntities.Id = extensionProperties.EntityId
order by extensionEntities.TableName, extensionProperties.[Name]
W przypadku, gdy pole jest typu "Słownik własny", wtedy takie pole przechowywane jest w kolumnie z prefiksem I, która to kolumna zawiera klucz obcy do pozycji słownika własnego.
W przypadku, gdy pole jest typu "Słownik własny SQL", wtedy takie pole przechowywane jest w kolumnie z prefiksem I lub G w zależności od typu klucza obcego.
W przypadku, gdy pole jest typu "Słownik systemowy", wtedy takie pole przechowywane jest w kolumnie I lub G w zależności od typu klucza obcego.
Słowniki własne przechowywane są w tabeli ModelDanychContainer.SlownikiWlasne, a ich wartości w tabeli ModelDanychContainer.PozycjeSlownikowWlasnych
Słowniki własne SQL przechowywane są w tabeli ModelDanychContainer.SqlDictionaries a wartośći oczywiście pochodzą ze zdefiniowanego zapytania SQL