NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Michal Pflegshörl:6.9.2017 9:31

Ahoj,
potřeboval bych poradit.
Chci využít webovou službu generování PDF formuláře.
Ve Visual Studiu jsem přidal službu http://epodatelna.justice.cz/…ratorService?wsdl

Nastavil jsem potřebné parametry

Byte[] bytes = File.ReadAllBytes("myXmlDoc.xml");
generujFormular Generuj = new generujFormular();
Generuj.typ = "A";
Generuj.subtyp = "4";
Generuj.xmlData = bytes;

Nyní bych měl podle dokumentace zavolat službu generujFormular, která mi vrátí idPozadavku, jenže nevím jak :-(

Editováno 6.9.2017 9:32
 
Odpovědět
6.9.2017 9:31
Avatar
STP
Člen
Avatar
STP:6.9.2017 9:51
using (FormGeneratorService.FormGeneratorServicePortTypeClient cl = new FormGeneratorService.FormGeneratorServicePortTypeClient())
           {
               var ret = cl.generujFormular(new FormGeneratorService.generujFormular());

           }
Nahoru Odpovědět
6.9.2017 9:51
Když umřít, tak online!!!
Avatar
Michal Pflegshörl:6.9.2017 10:27
FormGeneratorService.FormGeneratorServicePortTypeClient cl = new FormGeneratorService.FormGeneratorServicePortTypeClient()

Skončí na chybě:
Additional information: Oddíl konfigurace koncového bodu pro kontrakt ePodatelna_Gen­ratorFormulare­.FormGenerator­ServicePortTy­pe nebylo možné načíst, protože pro tuto kontrakt bylo nalezeno více konfigurací koncového bodu. Určete preferovaný oddíl konfigurace koncového bodu podle názvu.

 
Nahoru Odpovědět
6.9.2017 10:27
Avatar
STP
Člen
Avatar
Odpovídá na Michal Pflegshörl
STP:6.9.2017 10:37

Rozšiř vytvoření klienta o název endpointu z configfilu.

using (FormGeneratorService.FormGeneratorServicePortTypeClient cl = new FormGeneratorService.FormGeneratorServicePortTypeClient("FormGeneratorServiceSOAP11port_http"))
Nahoru Odpovědět
6.9.2017 10:37
Když umřít, tak online!!!
Avatar
Odpovídá na STP
Michal Pflegshörl:6.9.2017 11:02

Máš více zkušeností s podáváním žádosti o PDF formulář na ePodatelnu Justice.cz?
Asi by mi dost pomohlo vidět nějaký příklad celého kódu získání vyplněného PDF formuláře.

Můj kód mi vrací chybu WS-01 XML data musi byt vyplnena.

DataSet Formular = new DataSet();
FileStream myFileStream = new FileStream("notar_1.xsd", System.IO.FileMode.Open);
System.Xml.XmlTextReader myXmlTextReader = new System.Xml.XmlTextReader(myFileStream);
 Formular.ReadXmlSchema(myXmlTextReader);
myXmlTextReader.Close();

DataRow VkladanyRadek = Formular.Tables["osoba"].NewRow();
VkladanyRadek["titul_pred"] = "titul před";
VkladanyRadek["jmeno"] = "jméno";
VkladanyRadek["prijmeni"] = "příjmení";
VkladanyRadek["titul_za"] = "titul za";
Formular.Tables["osoba"].Rows.Add(VkladanyRadek);

VkladanyRadek = Formular.Tables["adresa"].NewRow();
VkladanyRadek["ulice"] = "ulice";
VkladanyRadek["psc"] = "PSČ";
VkladanyRadek["mesto"] = "město";
Formular.Tables["adresa"].Rows.Add(VkladanyRadek);

VkladanyRadek = Formular.Tables["spisova_znacka"].NewRow();
VkladanyRadek["cislo_senatu"] = "1";
VkladanyRadek["bc_vec"] = "2";
VkladanyRadek["druh_vec"] = "D";
VkladanyRadek["rocnik"] = "2017";
Formular.Tables["spisova_znacka"].Rows.Add(VkladanyRadek);

VkladanyRadek = Formular.Tables["rozhodnuti"].NewRow();
VkladanyRadek["zpusob_vyrizeni"] = "N";
VkladanyRadek["poznamka_vyrizeni"] = "poznámka";
VkladanyRadek["datum_vydano"] = "1.1.2017";
VkladanyRadek["datum_pravni_moc"] = "2.1.2017";
VkladanyRadek["datum_vykonatelnost"] = "3.1.2017";
VkladanyRadek["cislo_listu_rozhodnuti"] = "číslo listu";
Formular.Tables["rozhodnuti"].Rows.Add(VkladanyRadek);

VkladanyRadek = Formular.Tables["priloha"].NewRow();
VkladanyRadek["nazev"] = @"C:\Users\Michal\Desktop\Rejstrik.doc";
VkladanyRadek["fileid"] = @"C:\Users\Michal\Desktop\Rejstrik.doc";
Formular.Tables["priloha"].Rows.Add(VkladanyRadek);

VkladanyRadek = Formular.Tables["podpis"].NewRow();
VkladanyRadek["zpusob_odeslani"] = 2;
Formular.Tables["podpis"].Rows.Add(VkladanyRadek);

VkladanyRadek = Formular.Tables["odeslani_sf"].NewRow();
VkladanyRadek["datum_podani_zadosti"] = "4.1.2017";
VkladanyRadek["verze_formulare"] = "verze";
Formular.Tables["odeslani_sf"].Rows.Add(VkladanyRadek);

VkladanyRadek = Formular.Tables["epo_odeslani_sf"].NewRow();
VkladanyRadek["email"] = "[email protected]";
VkladanyRadek["guid"] = "guid";
Formular.Tables["epo_odeslani_sf"].Rows.Add(VkladanyRadek);

string filename = "Zadost.xml";
System.IO.FileStream myFileStream2 = new System.IO.FileStream(filename,System.IO.FileMode.Create);
System.Xml.XmlTextWriter myXmlWriter = new System.Xml.XmlTextWriter(myFileStream2, System.Text.Encoding.Unicode);
Formular.WriteXml(myXmlWriter);
myXmlWriter.Close();

Byte[] bytes = File.ReadAllBytes("Zadost.xml");
generujFormular Generuj = new generujFormular();
Generuj.typ = "A";
Generuj.subtyp = "4";
Generuj.xmlData = bytes;
generujFormularRequest req = new generujFormularRequest(Generuj);

generujFormularResponse Odpoved = new generujFormularResponse();
using (ePodatelna_GenratorFormulare.FormGeneratorServicePortTypeClient cl = new Podatelna_GenratorFormulare.FormGeneratorServicePortTypeClient("FormGeneratorServiceSOAP11port_http"))
{
        var ret = cl.generujFormular(new ePodatelna_GenratorFormulare.generujFormular());
        Odpoved = (generujFormularResponse)ret;
}

if (Odpoved.@return.stav != "OK")
{
        MessageBox.Show(Odpoved.@return.kodChyby + "\n" + Odpoved.@return.detailChyby, "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
}
 
Nahoru Odpovědět
6.9.2017 11:02
Avatar
STP
Člen
Avatar
Odpovídá na Michal Pflegshörl
STP:6.9.2017 12:10

Zkušenosti s podáváním žádosti o PDF formulář na ePodatelnu Justice.cz bohužel nemám.
Aby si zavolal tu danou službu potřebujes jí předat parametr.
Místo

var ret = cl.generujFormular(new ePodatelna_GenratorFormulare.generujFormular());

předáš ten svůj. :)

var ret = cl.generujFormular(Generuj);
Nahoru Odpovědět
6.9.2017 12:10
Když umřít, tak online!!!
Avatar
Neaktivní uživatel:6.9.2017 12:13

Over, zda je hodnota 'bytes' vobec vyplnena, resp. ci ma vysledne XML uvedenu deklaraciu: <?xml version="1.0" encoding="utf-8">?
Mne to s fake XML preslo a vratila sa mi uz validacna chyba vstupne XML.

M.

Nahoru Odpovědět
6.9.2017 12:13
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:6.9.2017 12:18

Priklad najjednoduchsieho volania:
XDocument sourceDataInXml = new XDocument(
new XElement("Test",
new XElement("Tes­tElement", "ws test")
));
sourceDataInXml­.Declaration = new XDeclaration("1.0", "utf-8", "yes");

// vstupny parameter pre webovu sluzbu
generujFormular Generuj = new generujFormular();
Generuj.typ = "A";
Generuj.subtyp = "4";
Generuj.xmlData = Encoding.UTF8­.GetBytes(sou­rceDataInXml.ToS­tring());

FormGenerator­ServicePortTy­peClient client = new FormGenerator­ServicePortTy­peClient("NAZOV ENDPOINTU!!!");
generujFormular­Response response = client.generuj­Formular(Gene­ruj);

Nahoru Odpovědět
6.9.2017 12:18
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Pflegshörl:6.9.2017 12:39

To vypadá opravdu dost jednoduše.
Bohužel

XDocument sourceDataInXml = new XDocument(
new XElement("Test",
new XElement("TestElement", "ws test")
));

Vyhazuje chybu:
Znak - (šestnáctková hodnota 0xAD) nelze použít v názvu.

 
Nahoru Odpovědět
6.9.2017 12:39
Avatar
Neaktivní uživatel:6.9.2017 12:44

Popisal som jednoduche volanie. Netusim, co mas v XML subore 'Zadost.xml'. Ked som to volal s xml bez deklaracie, vracalo mi to chybu, aku popisujes.
Ja aktualne dostavam chybu:
Type=Error;Pu­blicID=null;Sys­temID=null;Li­neNumber=-1;ColumnNumber=-1;Message=cvc-elt.1: Cannot find the declaration of element 'Test'.

Neopieraj sa o moje vstupne xml, je to fake, len na overenie volania. Volanie je ok, bytes[] si nahrad svojimi datmi.

M.

Nahoru Odpovědět
6.9.2017 12:44
Neaktivní uživatelský účet
Avatar
Michal Pflegshörl:8.1.2018 11:45

Tak nakonec jsem dal dohromady následující kód.

Požadavek na vygenerování formuláře

Priloha[] Prilohy = new Priloha[dataGridView_VyrizeniPrilohy.Rows.Count + dataGridView_PatickaPrilohy.Rows.Count];
int IdPrilohy = 0;

List<object> Root = new List<object>();
//Soud
Root.Add(new XElement("soud", ((ComboboxItem)comboBox_Soud.SelectedItem).Hodnota));

//Komisař
List<object> Komisar = new List<object>();
List<object> KomisarOsoba = new List<object>();
KomisarOsoba.Add(new XElement("titul_pred", textBox_KomisarTitulPred.Text));
KomisarOsoba.Add(new XElement("jmeno", textBox_KomisarJmeno.Text));
KomisarOsoba.Add(new XElement("prijmeni", textBox_KomisarPrijmeni.Text));
KomisarOsoba.Add(new XElement("titul_za", textBox_KomisarTitulZa.Text));
Komisar.Add(new XElement("osoba", KomisarOsoba));

List<object> KomisarAdresa = new List<object>();
KomisarAdresa.Add(new XElement("ulice", textBox_KomisarUlice.Text));
KomisarAdresa.Add(new XElement("psc", textBox_KomisarPSC.Text));
KomisarAdresa.Add(new XElement("mesto", textBox_KomisarMesto.Text));
Komisar.Add(new XElement("adresa", KomisarAdresa));
Root.Add(new XElement("komisar", Komisar));

//Spisová značka
List<object> SpisovaZnacka = new List<object>();
SpisovaZnacka.Add(new XElement("cislo_senatu", textBox_CisloSenatu.Text));
SpisovaZnacka.Add(new XElement("druh_vec", "D"));
SpisovaZnacka.Add(new XElement("bc_vec", textBox_BcVec.Text));
SpisovaZnacka.Add(new XElement("rocnik", textBox_Rocnik.Text));
Root.Add(new XElement("spisova_znacka", SpisovaZnacka));

//Zůstavitel
List<object> Zustavitel = new List<object>();
List<object> ZustavitelOsoba = new List<object>();
ZustavitelOsoba.Add(new XElement("jmeno", textBox_ZustavitelJmeno.Text));
ZustavitelOsoba.Add(new XElement("prijmeni", textBox_ZustavitelPrijmeni.Text));
ZustavitelOsoba.Add(new XElement("datum_narozeni",      maskedTextBox_ZustavitelDatumNarozeni.Text.Replace("  .  .", "")));
Zustavitel.Add(new XElement("osoba", ZustavitelOsoba));

List<object> ZustavitelAdresa = new List<object>();
ZustavitelAdresa.Add(new XElement("ulice", textBox_ZustavitelUlice.Text));
ZustavitelAdresa.Add(new XElement("psc", textBox_ZustavitelPSC.Text));
ZustavitelAdresa.Add(new XElement("mesto", textBox_ZustavitelMesto.Text));
ZustavitelAdresa.Add(new XElement("stat", comboBox_Stat.Text));
Zustavitel.Add(new XElement("adresa", ZustavitelAdresa));
Root.Add(new XElement("zustavitel", Zustavitel));

//Rozhodnutí
List<object> Rozhodnuti = new List<object>();
Rozhodnuti.Add(new XElement("zpusob_vyrizeni", ((ComboboxItem)comboBox_ZpusobVyrizeni.SelectedItem).Hodnota));
Rozhodnuti.Add(new XElement("poznamka_vyrizeni", textBox_VyrizeniPoznamka.Text));
Rozhodnuti.Add(new XElement("cislo_listu_rozhodnuti", textBox_RozhodnutiCisloListu.Text));
Rozhodnuti.Add(new XElement("datum_vydano", maskedTextBox_Vydano.Text));
Rozhodnuti.Add(new XElement("datum_pravni_moc", maskedTextBox_PravniMoc.Text));
Rozhodnuti.Add(new XElement("datum_vykonatelnost", maskedTextBox_Vykonatelnost.Text.Replace("  .  .", "")));

List<object> VyrokyOpak = new List<object>();
int CisloVyroku = 0;
foreach (DataGridViewRow Radek in dataGridView_Vyroky.Rows)
{
        if (Radek.IsNewRow)
                continue;

        CisloVyroku++;
        List<object> Vyroky = new List<object>();
        Vyroky.Add(new XElement("cislo_vyroku", CisloVyroku.ToString()));
        Vyroky.Add(new XElement("text_vyroku", (Radek.Cells["Vyrok"].Value != null ? Radek.Cells["Vyrok"].Value.ToString() : "")));
        Vyroky.Add(new XElement("datum_PM_vyroku", (Radek.Cells["PravniMoc"].Value != null ? Radek.Cells["PravniMoc"].Value.ToString() : "")));
        Vyroky.Add(new XElement("datum_vykonatelnost_vyroku", (Radek.Cells["Vykonatelnost"].Value != null ? Radek.Cells["Vykonatelnost"].Value.ToString() : "")));
        VyrokyOpak.Add(new XElement("vyroky", Vyroky));
}
Rozhodnuti.Add(new XElement("vyroky_opak", VyrokyOpak));

List<object> RozhodnutiPrilohaSf = new List<object>();
List<object> RozhodnutiPrilohaOpak = new List<object>();
foreach (DataGridViewRow Radek in dataGridView_VyrizeniPrilohy.Rows)
{
        if (Radek.IsNewRow)
                continue;

        IdPrilohy++;
        List<object> RozhodnutiPriloha = new List<object>();
        RozhodnutiPriloha.Add(new XElement("nazev", new FileInfo(Radek.Cells["Priloha"].Value.ToString()).Name));
        RozhodnutiPriloha.Add(new XElement("fileId", IdPrilohy.ToString()));
        RozhodnutiPrilohaOpak.Add(new XElement("priloha", RozhodnutiPriloha));

        Prilohy[IdPrilohy - 1] = new Priloha();
        Prilohy[IdPrilohy - 1].idVeFormulari = IdPrilohy.ToString();
        Prilohy[IdPrilohy - 1].jmenoSouboru = new FileInfo(Radek.Cells["Priloha"].Value.ToString()).Name;
        Prilohy[IdPrilohy - 1].data = Encoding.UTF8.GetBytes(File.ReadAllText(Radek.Cells["Priloha"].Value.ToString()));
}
RozhodnutiPrilohaSf.Add(new XElement("priloha_opak", RozhodnutiPrilohaOpak));
Rozhodnuti.Add(new XElement("priloha_sf", RozhodnutiPrilohaSf));
Root.Add(new XElement("rozhodnuti", Rozhodnuti));

//Zápatí
List<object> Zapati = new List<object>();
Zapati.Add(new XElement("poznamka_komisare", textBox_PatickaPoznamka.Text));

List<object> ZapatiPrilohaSf = new List<object>();
List<object> ZapatiPrilohaOpak = new List<object>();
foreach (DataGridViewRow Radek in dataGridView_PatickaPrilohy.Rows)
{
        if (Radek.IsNewRow)
                continue;

        IdPrilohy++;
        List<object> ZapatiPriloha = new List<object>();
        ZapatiPriloha.Add(new XElement("nazev", new FileInfo(Radek.Cells["PatickaPriloha"].Value.ToString()).Name));
        ZapatiPriloha.Add(new XElement("fileId", IdPrilohy.ToString()));
        ZapatiPrilohaOpak.Add(new XElement("priloha", ZapatiPriloha));

        Prilohy[IdPrilohy - 1] = new Priloha();
        Prilohy[IdPrilohy - 1].idVeFormulari = IdPrilohy.ToString();
        Prilohy[IdPrilohy - 1].jmenoSouboru = new FileInfo(Radek.Cells["PatickaPriloha"].Value.ToString()).Name;
        Prilohy[IdPrilohy - 1].data = Encoding.UTF8.GetBytes(File.ReadAllText(Radek.Cells["PatickaPriloha"].Value.ToString()));
}
ZapatiPrilohaSf.Add(new XElement("priloha_opak", ZapatiPrilohaOpak));
Zapati.Add(new XElement("priloha_sf", ZapatiPrilohaSf));
List<object> Podpis = new List<object>();
Podpis.Add(new XElement("zpusob_odeslani", "2"));//ePodatelna MSp

List<object> OdeslaniSf = new List<object>();
OdeslaniSf.Add(new XElement("datum_podani_zadosti", maskedTextBox_DatumPredlozeni.Text));
OdeslaniSf.Add(new XElement("verze_formulare", "0"));
Podpis.Add(new XElement("odeslani_sf", OdeslaniSf));

List<object> EpoOdeslaniSf = new List<object>();
EpoOdeslaniSf.Add(new XElement("guid", "guid"));
EpoOdeslaniSf.Add(new XElement("email", textBox_Email.Text));
Podpis.Add(new XElement("epo_odeslani_sf", EpoOdeslaniSf));
Zapati.Add(new XElement("podpis", Podpis));
Root.Add(new XElement("zapati", Zapati));

XNamespace ns = "http://epodatelna.justice.cz/notar";
XDocument sourceDataInXml = new XDocument(new XElement(ns + "root", Root));
sourceDataInXml.Declaration = new XDeclaration("1.0", "utf-8", "yes");

generujFormular Generuj = new generujFormular();
Generuj.typ = "A";
Generuj.subtyp = "4";
Generuj.xmlData = Encoding.UTF8.GetBytes(sourceDataInXml.ToString());
Generuj.seznamPriloh = Prilohy;

generujFormularResponse Odpoved = new generujFormularResponse();
using (FormGeneratorServicePortTypeClient cl = new FormGeneratorServicePortTypeClient("FormGeneratorServiceSOAP11port_http"))
{
        var ret = cl.generujFormular(Generuj);
        Odpoved = (generujFormularResponse)ret;
}

if (Odpoved.@return.stav != "OK")
{
        MessageBox.Show(Odpoved.@return.kodChyby + "\n" + Odpoved.@return.detailChyby, "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
}

vratFormular Vraceny = new vratFormular();
Vraceny.IdPozadavku = Odpoved.@return.idPozadavku;
vratFormularResponse Formular = new vratFormularResponse();
DateTime Start = DateTime.Now;

while (Formular.@return == null || (Formular.@return.stav != "ZPRACOVAN" && Formular.@return.stav != "CHYBNY"))
{
        if ((DateTime.Now - Start).Seconds > 30)
        {
                if (MessageBox.Show("Požadavek na generování formuláře je stále ve stavu " + Formular.@return.stav + "\nChcete pokračovat v čekání?", "Dotaz", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
                {
                        MessageBox.Show("Požadavek byl zrušen!", "Informace", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                }
                Start = DateTime.Now;
        }
        using (FormGeneratorServicePortTypeClient cl = new FormGeneratorServicePortTypeClient("FormGeneratorServiceSOAP11port_http"))
        {
                var ret = cl.vratFormular(Vraceny);
                Formular = (vratFormularResponse)ret;
        }
}

if (Formular.@return.stav != "ZPRACOVAN")
{
        MessageBox.Show(Formular.@return.kodChyby + "\n" + Formular.@return.detailChyby, "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
}

while (String.IsNullOrEmpty(CestaFormulare) || File.Exists(CestaFormulare))
        CestaFormulare = CestaTempu + "\\" + DateTime.Now.ToString("yyMMddHHmmss") + ".pdf";

File.WriteAllBytes(CestaFormulare, Formular.@return.pdfFormular);

IdPozadavku = Vraceny.IdPozadavku;

A podání podepsaného formuláře (nejsem si 100% jistý zda funguje)

odesliPodani Odesli = new odesliPodani();
                Odesli.typ = "A";
                Odesli.subtyp = "4";
                Odesli.formular = Encoding.UTF8.GetBytes(File.ReadAllText(CestaFormulare));
                odesliPodaniResponse Odpoved = new odesliPodaniResponse();
                using (FormProcessorServicePortTypeClient cl = new FormProcessorServicePortTypeClient("FormProcessorServiceSOAP11port_http"))
                {
                    var ret = cl.odesliPodani(Odesli);
                    Odpoved = (odesliPodaniResponse)ret;
                }

                if (Odpoved.@return.stav != "OK")
                {
                    MessageBox.Show("Chyba služby B1 (odeslání podání)!\nId požadavku: " + IdPozadavku + "\nDočasné GUID: " + Odpoved.@return.docasneGuid + "\n\n" + Odpoved.@return.kodChyby + "\n" + Odpoved.@return.detailChyby, "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                vratStavPodani StavPodani = new vratStavPodani();
                StavPodani.guid = IdPozadavku;
                StavPodani.docasneGuid = Odpoved.@return.docasneGuid;
                vratStavPodaniResponse Formular = new vratStavPodaniResponse();
                DateTime Start = DateTime.Now;

                while (Formular.@return == null || (Formular.@return.stav != "ZPRACOVAN" && Formular.@return.stav != "CHYBA"))
                {
                    if ((DateTime.Now - Start).Seconds > 30)
                    {
                        if (MessageBox.Show("Požadavek na odeslání formuláře je stále ve stavu " + Formular.@return.stav + "\nChcete pokračovat v čekání?", "Dotaz", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
                        {
                            MessageBox.Show("Požadavek byl zrušen!", "Informace", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            this.Close();
                            return;
                        }
                        Start = DateTime.Now;
                    }
                    using (FormProcessorServicePortTypeClient cl = new FormProcessorServicePortTypeClient("FormProcessorServiceSOAP11port_http"))
                    {
                        var ret = cl.vratStavPodani(StavPodani);
                        Formular = (vratStavPodaniResponse)ret;
                    }
                }

                if (Formular.@return.stav != "ZPRACOVAN")
                {
                    MessageBox.Show("Chyba služby B2 (ověření stavu podání)!\nGUID: " + StavPodani.guid + "\nDOčasné GUID: " + StavPodani.docasneGuid + "\n\n" + Formular.@return.kodChyby + "\n" + Formular.@return.detailChyby, "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
8.1.2018 11:45
Avatar
Neaktivní uživatel:8.1.2018 21:32

A?

Nahoru Odpovědět
8.1.2018 21:32
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Pflegshörl:9.1.2018 14:21

Chtěl jsem se podělit o funkční řešení problému ;-)

 
Nahoru Odpovědět
9.1.2018 14:21
Avatar
Ladislav Gubala:11.1.2018 10:04

Ja som ho o to poziadal.. a dakujem mu za to :)

 
Nahoru Odpovědět
11.1.2018 10:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.