Skocz do zawartości

Pole własne typu słownik własny dokumentu realizowanego na wydruku PZ

Polecane posty

Witam,

potrzebuję mieć dostęp do pól własnych typu słownik własny dokumentu realizowanego ZD na wydruku dokumentu PZ.

Dokumenty Realizowane otrzymuję tak:

        private void WczytajListeDokumentowRealizowanych()
        {
            Dokument.encjaDokumentu.DokumentyRealizowane.Connect();
            Dokument.encjaDokumentu.DokumentyRealizowane.First();

            while (!Dokument.encjaDokumentu.DokumentyRealizowane.IsEof)
            {

                MyDokumentZDList.Add(new MyDokumentZD(Dokument.encjaDokumentu.DokumentyRealizowane));

                Dokument.encjaDokumentu.DokumentyRealizowane.Next();
            }

        }

W innym przypadku gdy mam pole własne np. dla dostawcy wartość jego pola własnego otrzymuję tak:

  public string PobierzWartoscSlownikaWlasnego(string nazwaSlownika, int? klucz)
        {
            if (klucz == null)
                return null;
            var pw2Helper = PolaWlasne2Helper.BusinessObjectValue as IPolaWlasne2HelperWydruku;
            var slownik = pw2Helper.SlownikiWlasne.PobierzDefinicjeSlownikaWlasnego(nazwaSlownika);
            if (slownik == null)
                throw new InvalidOperationException("Nie znaleziono słownika własnego: " + nazwaSlownika);
            var pozycja = slownik.UtworzZapytanieLinq().FirstOrDefault(p => p.Klucz == klucz);
            return pozycja != null ? pozycja.Wartosc : null;
        }
PobierzWartoscSlownikaWlasnego("Flaga Dostawcy/Dostawy",Dostawca.Podmiot.PodmiotDlaKtoregoHistoria.PolaWlasneAdv2.I0)

 

I mam problem jak wyciągnąć z dokumentu realizowanego

Dokument.encjaDokumentu.DokumentyRealizowane

"PoleWlasneAdv2" podobnie jak jest tu: 

Dostawca.Podmiot.PodmiotDlaKtoregoHistoria.PolaWlasneAdv2.I0

W "Dictionary" nie da się dodać takich pól.

 

Czy mógłby mi ktoś podpowiedzieć jak to ugryźć? Jeśli nie rozwiązaniem to chociaż "marchewką" bo nie wiem gdzie szukać...

Z góry dziękuję za podpowiedź.

Edytowane przez Mikołaj Nachtygal
Link to postu

Tak i też je zastosowałem. Problem polega na kroku: "pola własne dla dokumentu realizowanego"

image.png.3dae4d362be166927a2967cae401bc9a.png

 

nie istnieje child "PolaWłasne" dla dokumentu realizowanego w tej liście. Czy istnieje jakiś sposób, żeby to otrzymać tak jak tu: 

image.png.3280b1cbf42d87de5301bd96805cdede.png

?

 

jak wyciągnąć klucz pola własnego dla dokumentu realizowanego?

 

Link to postu

Żeby nie było, że tylko biorę a nic nie daję.

 

Mój "workaround" poniżej:

 

using System.Data.SqlClient;

{...}

public string GetValueOfPoleWlasneZD(int varZDId){
  
	string returner="b/d";
	using (SqlConnection con = new SqlConnection(@"Server=000.000.000.000\***;Database=Nexo_***;User Id=***;Password=***;"))
        {
            con.Open();
            using (SqlCommand command = new SqlCommand(
			@"SELECT WartoscPola.Wartosc
              FROM [Nexo_***].[ModelDanychContainer].[Dokumenty] 
              left join [Nexo_***].[ModelDanychContainer].[Dokumenty_PolaWlasneDokumentZD_Adv2] As PolaWlasne
              ON (PolaWlasne.Id = [Nexo_***].[ModelDanychContainer].[Dokumenty].Id)
              left join [Nexo_***].[ModelDanychContainer].[PozycjeSlownikowWlasnych] as WartoscPola
              ON (wartoscpola.Id=PolaWlasne.I1)
              where [Nexo_***].[ModelDanychContainer].[Dokumenty].Id="+varZDId.ToString(),
              con))

			returner = (string) command.ExecuteScalar();
        }
		return returner;
}

Gdzie argument varZDId to Id dokumentu ZD z bazy a funkcja zwraca wartość pola własnego bazując na słowniku.

 

Minus tego rozwiązania jest taki, że ta funkcja trwa względnie długo i jeśli ktoś ją wywoła wielokrotnie to czas generowania raportu może wydłużyć się znacząco.

 

 

Edytowane przez Mikołaj Nachtygal
  • Lubię to 1
Link to postu
×
×
  • Dodaj nową pozycję...