Skocz do zawartości

[Sfera] Problem z generowanie wydruku wniosku urlopowego, od wersji 26.2.0

Polecane posty

Od wersji 26.2.0 mamy problem z generowaniem wydruku wniosku urlopowego, za pomocą Sfery.

Błąd:

Cytat

Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "InsERT.Moria.Wydruki.RTF.IFabrykaRTFPrintInfo", name = "(none)".

Exception occurred while: while resolving.

Exception is: InvalidOperationException - The current type, InsERT.Mox.UIFramework.IProductAffinityManager, is an interface and cannot be constructed. Are you missing a type mapping?

-----------------------------------------------

At the time of the exception, the container was:

 

  Resolving InsERT.Moria.Wydruki.RTF.FabrykaRTFPrintInfo,(none) (mapped from InsERT.Moria.Wydruki.RTF.IFabrykaRTFPrintInfo, (none))

  Resolving parameter "productAffinityManager" of constructor InsERT.Moria.Wydruki.RTF.FabrykaRTFPrintInfo(System.Func`1[[InsERT.Moria.Wydruki.RTF.IEwaluatorWydrukuRTF, InsERT.Moria.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f3ef93a6b458098]] ewaluatorPodstawowyGr, System.Func`1[[InsERT.Moria.Wydruki.RTF.IEwaluatorWydrukuRTF, InsERT.Moria.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f3ef93a6b458098]] ewaluatorPracownikGr, System.Func`1[[InsERT.Moria.Wydruki.RTF.IEwaluatorWydrukuRTF, InsERT.Moria.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f3ef93a6b458098]] ewaluatorUmowaPracowniczaGr, System.Func`1[[InsERT.Moria.Wydruki.RTF.IEwaluatorWydrukuRTF, InsERT.Moria.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f3ef93a6b458098]] ewaluatorRachunekGr, System.Func`1[[InsERT.Moria.Wydruki.RTF.IEwaluatorWydrukuRTF, InsERT.Moria.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f3ef93a6b458098]] ewaluatorAbsencja, System.Func`1[[InsERT.Moria.Wydruki.RTF.IEwaluatorWydrukuRTF, InsERT.Moria.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f3ef93a6b458098]] ewaluatorZgodaNaPrzetwarzanieDanych, System.Func`1[[InsERT.Moria.Wydruki.RTF.IEwaluatorWydrukuRTF, InsERT.Moria.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f3ef93a6b458098]] ewaluatorWyliczoneSprawozdanieFinansowe, System.Func`1[[InsERT.Moria.Wydruki.RTF.IEwaluatorWydrukuRTF, InsERT.Moria.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f3ef93a6b458098]] ewaluatorPracownikMGr, System.Func`1[[InsERT.Moria.ModelDanych.IPracownikGrRepository, InsERT.Moria.ModelDanych, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e1aa7558fba1cf1]] pracownikGrRepository, System.Func`1[[InsERT.Moria.ModelDanych.IUmowaPracowniczaGrRepository, InsERT.Moria.ModelDanych, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e1aa7558fba1cf1]] umowaPracowniczaGrRepository, System.Func`1[[InsERT.Moria.ModelDanych.IRachunekDoUmowyPracowniczejGrRepository, InsERT.Moria.ModelDanych, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e1aa7558fba1cf1]] rachunekGrRepository, System.Func`1[[InsERT.Moria.ModelDanych.IZapisWECPRepository, InsERT.Moria.ModelDanych, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e1aa7558fba1cf1]] zapisWECPRepository, System.Func`1[[InsERT.Moria.ModelDanych.IWyliczoneSprawozdanieFinansowe2Repository, InsERT.Moria.ModelDanych, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e1aa7558fba1cf1]] wyliczoneSprawozdanieFinansoweRepository, System.Func`1[[InsERT.Moria.ModelDanych.IPodmiotRepository, InsERT.Moria.ModelDanych, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e1aa7558fba1cf1]] podmiotRepository, System.Func`1[[InsERT.Moria.ModelDanych.ICelPrzetwarzaniaRepository, InsERT.Moria.ModelDanych, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e1aa7558fba1cf1]] celPrzetwarzaniaRepository, System.Func`1[[InsERT.Moria.ModelDanych.IPracownikRepository, InsERT.Moria.ModelDanych, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e1aa7558fba1cf1]] pracownikRepository, InsERT.Mox.UIFramework.IProductAffinityManager productAffinityManager, InsERT.Mox.Product.IProductContext productContext)

    Resolving InsERT.Mox.UIFramework.IProductAffinityManager,(none)

 ---> System.InvalidOperationException: The current type, InsERT.Mox.UIFramework.IProductAffinityManager, is an interface and cannot be constructed. Are you missing a type mapping?

   w Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.ThrowForAttemptingToConstructInterface(IBuilderContext context)

   w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.BuildUp(IBuilderContext context)

   w Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)

   w Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)

   w Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp(NamedTypeBuildKey newBuildKey)

   w Microsoft.Practices.Unity.ObjectBuilder.NamedTypeDependencyResolverPolicy.Resolve(IBuilderContext context)

   w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.DoConstructorInjection(IBuilderContext context)

   w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.BuildUp(IBuilderContext context)

   w Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)

   w Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)

   w Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides)

   --- Koniec śladu stosu wyjątków wewnętrznych ---

   w Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides)

   w Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides)

   w Microsoft.Practices.Unity.UnityContainerExtensions.Resolve[T](IUnityContainer container, ResolverOverride[] overrides)

   w InsERT.Mox.Runtime.Unity.UnityAdapter.GetObject[T]()

   w InsERT.Moria.Sfera.Uchwyt.PodajObiektTypu[Typ]()

   w SynchronousSocketListener.StartListening()

Kod wykonujący wydruk:

int id; id = results.id;  
IZapisyWECP zapisyWECP = sfera.PodajObiektTypu<IZapisyWECP>();
var zapisWECP = zapisyWECP.Dane.Wszystkie().Where(a => a.Id == id).FirstOrDefault(); // wybranie absencji
                  
if(zapisWECP == null) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Wskazany do wydruku urlop nie istnieje!"); response = "{ \"error\":\"Dokument nie istnieje!\" }"; }
else {
  Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Eksportowanie wniosku urlopowego: "+zapisWECP.Pracownik.Osoba.Imie+" "+zapisWECP.Pracownik.Osoba.Nazwisko);
  var tresciDokumentow = sfera.PodajObiektTypu<ITresciWydrukuRTF>(); // Pobranie managera treści dokumentów RTF
  var trescRTF = tresciDokumentow.Dane.Wszystkie().Where(t => t.Id == 100010).Single(); 
  // Stworzenie obiektu do wydruku
  var fabrykaRTF = sfera.PodajObiektTypu<IFabrykaRTFPrintInfo>();
  var rtfPrintInfo = fabrykaRTF.Stworz(typTresciWydrukuRTF: TypTresciWydrukuRTF.DokumentyUrlopowe,zrodloWiedzy: zapisWECP);
  IWydruki manager = sfera.PodajObiektTypu<IWydruki>(); //pobranie managera drukowania
  using (IWydruk wydruk = manager.Utworz(TypWzorcaWydruku.WydrukRTF)) {
    wydruk.ObiektDoWydruku = rtfPrintInfo; // wskazanie obiektu do wydruku
    var tresc = trescRTF.Zawartosc;
    if(results.date!=null) {
      string dateString = results.date;
      tresc = trescRTF.Zawartosc.Replace("<<parametr datowy(Data wydruku)>>",dateString); }                       
    // wskazanie ścieżki eksportu
    string filename; filename = "urlop" +results.id;
    wydruk.ParametryDrukowania.NazwaDokumentuUzytkownika = filename;
    wydruk.ParametryDrukowania.SciezkaEksportu = @"N:\";                     
    wydruk.ParametryDrukowania.ZastapPliki = true;
    // ewaluacja autotekstów
    var parametryRTF = wydruk.ParametryDrukowania as IWydrukParametryRTF;
    if(parametryRTF != null && rtfPrintInfo.EwalutorAutotekstow != null) parametryRTF.TrescWydruku = rtfPrintInfo.EwalutorAutotekstow.WypelnijAutoteksty(tresc, rtfPrintInfo.ZrodloWiedzy);
    wydruk.Eksport(); // eksport 
    Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Wydrukowano wniosek: " +wydruk.ParametryDrukowania.NazwaDokumentuUzytkownika+".pdf");                      
    response = "{ \"filename\":\""+filename+"\", \"id\":\""+zapisWECP.Id+"\" }";
    }
  }

 

Link to postu
  • 2 lata później...

Wrzucam dla potomnych zaktualizowaną wersję kodu - ta z tego wątku, opiera się o API.Private, a od jej powstania w 2017 roku, wiele się zmieniło.

int id; id = results.id;
IZapisyWECP zapisyWECP = sfera.PodajObiektTypu<IZapisyWECP>();
var zapisWECP = zapisyWECP.Dane.Wszystkie().Where(a => a.Id == id).FirstOrDefault(); // wybranie absencji
if (zapisWECP == null) {} // brak zapisu
else
  {
  var tresciDokumentow = sfera.PodajObiektTypu<ITresciWydrukuRTF>(); // Pobranie managera treści dokumentów RTF
  var trescRTF = tresciDokumentow.Dane.Wszystkie().Where(t => t.Id == 100010).Single(); // wskazanie konkretnego wzorca wydruku
  IWydrukiRTF wydrukiRTF = sfera.PodajObiektTypu<IWydrukiRTF>();
  IRTFPrintInfo wydrukRTF = wydrukiRTF.StworzObiektDoWydruku(InsERT.Moria.Wydruki.Enums.TypTresciWydrukuRTF.DokumentyUrlopowe, zapisWECP);
  IWydruki manager = sfera.PodajObiektTypu<IWydruki>(); //pobranie managera drukowania
  using (IWydruk wydruk = manager.Utworz(TypWzorcaWydruku.WydrukRTF))
    {
    wydruk.ObiektDoWydruku = wydrukRTF; // wskazanie obiektu do wydruku
    var tresc = trescRTF.Zawartosc;
    if (results.date != null)
      {
      string dateString = results.date;
      tresc = trescRTF.Zawartosc.Replace("<<parametr datowy(Data wydruku)>>", dateString);
      }
    // wskazanie ścieżki eksportu
    string filename; filename = "urlop" + results.id;
    wydruk.ParametryDrukowania.NazwaDokumentuUzytkownika = filename;
    wydruk.ParametryDrukowania.SciezkaEksportu = @"N:\";
    wydruk.ParametryDrukowania.ZastapPliki = true;
    // ewaluacja autotekstów
    var parametryRTF = wydruk.ParametryDrukowania as IWydrukParametryRTF;
    if (parametryRTF != null && wydrukRTF.EwalutorAutotekstow != null) parametryRTF.TrescWydruku = wydrukRTF.EwalutorAutotekstow.WypelnijAutoteksty(tresc, wydrukRTF.ZrodloWiedzy);
    wydruk.Eksport(); // eksport 
    }
  }

 

Link to postu
×
×
  • Dodaj nową pozycję...