Szanowny Panie,
"u mnie działa" (nexo 32.1.0, baza demo), ale mam podobny efekt jak Pan jeśli skasuję plik Wydruki.zip. Stąd wnioskuję, że prawdopodobnie mam Pan go w złej lokalizacji. Wydruki.zip powinien znajdować się w podkatalogu Deklaracje względem katalogu w którym jest *.exe:
Do obsługi zaawansowanych scenariuszy importu należy zerknąć tutaj:
var operacjeImportu = Sfera.PodajObiektTypu<InsERT.Moria.ImportKsiegowy.IOperacjeImportuKsiegowego>();
var operacja = operacjeImportu.UtworzOperacjeImportuDokumentow(...); // uwaga 1
var wynik = operacja.WykonajOperacje(...); // uwaga 2
Ad uwaga 1: przekazujemy tej metodzie implementację interfejsu IObslugaZdarzenSeryjnegoImportu, którą należy zrobić samodzielnie (może być na początek "pusta"). Służy do reagowania na zdarzenia występujące podczas importu. Jedną z właściwości tego interfejsu jest pole InteraktywnyTryb typu InterakcjaWOperacjiImportuKsiegowego (obiekty tej klasy można stworzyć operatorem new). Klasa InterakcjaWOperacjiImportuKsiegowego ma właściwości SprobujNaprawicNiepoprawneDokumentyWynikowe i PotwierdzDokumentyWynikowe które pozwala na przekazanie delegatów, które będą wywołane w przypadku niepoprawnego/poprawnego stworzenia dokumentu wynikowego
Ad uwaga 2: przekazujemy listę par schemat-dokument (można przekazać 1) i parametry procesu importu (aby proces był "z potwierdzeniem" należy również tego zażądać w parametrach przekazywanych tutaj).
Przykładowa implementacja interfejsu IObslugaZdarzenSeryjnegoImportu i jego wykorzystanie:
public class ObslugaImportu : IObslugaZdarzenSeryjnegoImportu
{
InterakcjaWOperacjiImportuKsiegowego _interaktywny;
public ObslugaImportu(InterakcjaWOperacjiImportuKsiegowego tryb)
{
_interaktywny = tryb;
}
public InterakcjaWOperacjiImportuKsiegowego InteraktywnyTryb
{
get { return _interaktywny; }
}
public void RozpoczeciePojedynczego(ImportSeryjnyEventArgs args)
{
}
public void RozpoczecieFragmentuWImporciePojedynczego(ImportSeryjnyEventArgs args)
{
}
public void ZakonczeniePojedynczego(ImportSeryjnyEventArgs args)
{
}
public void RozpoczecieCalosci(int iloscDokumentow)
{
}
public void ZakonczenieWszystkich()
{
}
}
// ...
public IObslugaZdarzenSeryjnegoImportu TrybInteraktywny(
bool kontynuowacImportPoBledzie,
WynikFragmentuOperacjiImportu reakcjaNaUsuwanie,
Action<DokumentKsiegowy> actionNaprawianieDokumentow = null)
{
WynikFragmentuOperacjiImportu wynikWskazania;
wynikWskazania = WynikFragmentuOperacjiImportu.KontynuujImportAktualnegoDokumentu;
if (kontynuowacImportPoBledzie)
{
wynikWskazania = WynikFragmentuOperacjiImportu.KontynuujZNastepnymDokumentem;
}
else
{
wynikWskazania = WynikFragmentuOperacjiImportu.PrzerwijOperacjeSeryjnegoImportu;
}
InterakcjaWOperacjiImportuKsiegowego interaktywny = new InterakcjaWOperacjiImportuKsiegowego();
interaktywny.KontynuowacImportKolejnegoDokumentuPoBledzie = (ddk, x) => kontynuowacImportPoBledzie;
interaktywny.SprobujNaprawicNiepoprawneDokumentyWynikowe = (ddk, x, x0, y, z, vat, vatOSS) =>
{
foreach (var dokument in x)
{
Console.WriteLine("Błędy na dekrecie:" + dokument.Dane.NumerWlasny);
Console.WriteLine(TestUtils.ErrorsDescription(TestUtils.GetErrors(dokument)));
if (actionNaprawianieDokumentow != null)
{
actionNaprawianieDokumentow(dokument.Dane);
}
}
foreach (var dokument in vat)
{
Console.WriteLine("Błędy na vacie: " + dokument.DaneBazowe.NumerDokumentu);
Console.WriteLine(TestUtils.ErrorsDescription(TestUtils.GetErrors(dokument)));
}
if (actionNaprawianieDokumentow != null)
{
return WynikFragmentuOperacjiImportu.KontynuujImportAktualnegoDokumentu;
}
else
{
return wynikWskazania;
}
};
interaktywny.ZapytajOUsuwanieIstniejacych = (ddk) => reakcjaNaUsuwanie;
return new ObslugaImportu(interaktywny);
}
// ...
protected IEnumerable<IWynikOperacjiImportuKsiegowegoDokumentu> ImportujDDK(
IEnumerable<SchematImportu> schematyImportu,
IEnumerable<DokumentDoKsiegowania> ddks,
ObslugaBleduIstnieniaUsuwalnychDokumentow obslugaUsuwalnych = ObslugaBleduIstnieniaUsuwalnychDokumentow.ObsluzZgodnieZTrybemSeryjnegoImportu)
{
var tryb = TrybInteraktywny(false, WynikFragmentuOperacjiImportu.PrzerwijOperacjeSeryjnegoImportu);
var operacja = OperacjeImportuKsiegowego.UtworzOperacjeImportuDokumentow(tryb);
var wynik = operacja.WykonajOperacje(
schematyImportu.Zip(ddks, (s, ddk) => new Tuple<DokumentDoKsiegowania, SchematImportu>(ddk, s)),
new ParametryOperacjiImportuKsiegowegoDokumentow()
{
TrybSeryjnegoImportu = TrybSeryjnegoImportu.PrzerwijGdyBlad,
ObslugaUsuwalnychDokumentow = obslugaUsuwalnych,
ObslugaNieusuwalnychDokumentow = ObslugaBleduIstnieniaNieusuwalnychDokumentow.ObsluzZgodnieZTrybemSeryjnegoImportu
}
);
return wynik;
}