Külső nyomtatható formanyomtatvány a mikroszónak a kezelt alkalmazások megnyitásához

Értékelés: 5/5

Az előző cikkben egy nyomtatott űrlap sablont hoztunk létre egy kezelt alkalmazás számára. Egy táblázatos dokumentumban egy egyszerű mondatot adott nekünk: "Hello world". A minta alapján táblázatos dokumentumokat tartalmazó nyomtatott formanyomtatványokat hozhat létre. Azonban, ahogyan tudják, számos korlátozással és kellemetlenséggel rendelkeznek. Felsorolom azokat, amelyek ismertek:

1. Nem adhat meg másik betűtípust egyetlen cellában. Ie annak érdekében, hogy a szöveg egy bekezdésben egyetlen szót lehessen kiemelni, az egyiket meg kell kínzni a bekezdés megosztásával és beállításával a táblázat különálló celláihoz.

2. Rosszul szállították a nagysejteket. Ha a sejt

nem illik teljesen az aktuális oldalra, akkor a következő oldalon kezdődik, és félig nem lesz vágva.

3. Nem mindig (különösen a 8.3 platformban ellenőrzött formában) a True Type betűtípus működik. Az 1C-ben az "amit látok, amit írok": nagyon jól működik, nagyon gyakran a képernyőn minden cellába kerül, papíron levágva, éppen ellenkezőleg, kialszik a képernyőn, papíron minden rendben van.

4. Szerkesztheti az eredményül kapott táblázatot 1C-vel egy kényelmetlen feladat. Más formátumra kell menteni.

5. A "4" bekezdés következménye - az Excel mentése nem minden esetben történik meg. A mxl és az xls azonban különböző formátumok.

És akkor eszembe jut az ötlet, és mi van, ha nem jelenít meg asztal elrendezést a képernyőn, hanem egy Microsof Word dokumentumot már kitöltött a szükséges adatokkal?

Ez a rendszer tökéletesen illeszkedik, amikor mindenféle szerződési szöveget alkotunk (munka, vásárlás).

Nos, kezdjük?

Első lépés - nézze meg az előző cikket, és vegyen innen egy mintát.

Második lépés - készítsd el a sablondokumentumot.

Itt tudok Önnek olyan technológiát alkalmazni, amely a DocVariable dokumentum változóin keresztül működik. Kezdetként megnyitjuk az MS Word-t, írjuk bele szerződésünk szövegét. Példámban ez lesz egy munkaszerződés, amely egy bekezdésből áll.

Külső nyomtatható formanyomtatvány a mikroszónak a kezelt alkalmazások megnyitásához

Maga a megállapodás megfogalmazása után meghatározzuk azt a tényt, hogy magunk töltjük be. Ie Határozza meg a dokumentum változó részét. Javaslom, hogy nyomtassa ki a szerződést az alkalmazottak könyvtárából. A szerződés számával nyomtatjuk ki az ütemtervet, a dátumot - az átvétel dátumát. Az elfogadott alkalmazott teljes nevét, a szervezet rövid nevét és a teljes nevet is levonjuk. A képen a pirosat választom, hogy változókká válunk.

Külső nyomtatható formanyomtatvány a mikroszónak a kezelt alkalmazások megnyitásához

Elkezdjük elhelyezni a változókat. Töröljük a szerződés számát, és hozzáadunk egy változót a helyére. Ehhez a menühöz írja be a / express block / field parancsot

Külső nyomtatható formanyomtatvány a mikroszónak a kezelt alkalmazások megnyitásához

A megnyíló ablakban válassza ki a DocVariavle mező típusát, és hozzárendelje a tabelNum számára egy értelmes latin nevet. Kattintson az OK gombra.

Külső nyomtatható formanyomtatvány a mikroszónak a kezelt alkalmazások megnyitásához

A képernyőn valószínű, hogy nem fog látni semmit, de nem siet, hogy ismételje meg a műveletet. Csak olyan mód van, amely nem jeleníti meg a mezőkódokat. A mezőkód megtekintéséhez nyomja meg az Alt + F9 billentyűt.

Külső nyomtatható formanyomtatvány a mikroszónak a kezelt alkalmazások megnyitásához

Tehát a piros szövegeket a dokumentumváltozókkal helyettesítjük.

Külső nyomtatható formanyomtatvány a mikroszónak a kezelt alkalmazások megnyitásához

Harmadik lépés - hozzon létre egy elrendezést.

Most mentse a fájlt a lemezre, és térjen vissza 1C-re. A feldolgozás folyamán a "Hello world" szóval készített "breadboard" modellünk. Adjon hozzá egy új elrendezést a "bináris adatok" típusával és töltse be a mi MS Word dokumentumunkat. Ne felejtsd el lezárni a dokumentumot az Wordben, majd 1C és Word esküszöm megosztani a fájlt.

Külső nyomtatható formanyomtatvány a mikroszónak a kezelt alkalmazások megnyitásához

A negyedik lépés programozható.

Felmászunk a feldolgozó modulba. Van egy árnyalat, hogy tisztában legyen vele. A nyomtatási parancs végrehajtásra kerül az ügyfélen, és az adatokat a szerveren tároljuk. A kiszolgálón nincs MS Word alkalmazásunk, amellyel létrehozzuk a dokumentumot, ennek megfelelően a dokumentumot az ügyféllel formázzuk. Nem jelenítünk meg táblázatos dokumentumot sem. Gondolkodva ezekről az árnyalatokról dobjuk magunkat a csatába.

Először töröljük a nyomtatási eljárást a feldolgozómodulról és az elrendezés kialakításáról. Ezután nyissa meg a Külső feldolgozás információkkal kapcsolatos eljárást (), majd a sor hozzáadásával szerkesztse a sorokat az alábbiak szerint:

Add hozzá a Parancsot (asztali csapat, "Hello World", "Elrendezés", "Az ügyfél módjának felhívása", Igazság, "");

A külső nyomtatási formát is szabályozzuk:

És tiltsa le a biztonságos módot, mert külső eszközök biztonságos módban nem állnak rendelkezésre:

Most zárja be a feldolgozó modult, és adja hozzá a fő formát a feldolgozáshoz. Menjünk az űrlapmodulba.

Először hozzon létre egy olyan függvényt, amely visszaadja nekünk a szükséges paraméterek struktúráját. Mindez attól függ, hogy mennyire bonyolult az elrendezés, amelyet tervez, és ahol kitölti a paramétereket. Valószínűleg ez lesz a kérés szövege és az eredmények visszaadása. Itt van a kód, amit kaptam:

Szükségünk van egy OLE MS Word objektumra is. Tedd a sablonunkba, és töltsd be a változókat. A sablon csak a szerver kontextusában érhető el, így rövid szerverfunkciót írunk:

A kiszolgálón
Funkció GetMacquerServer ()
Adja meg a szükséges űrlapokat ("Objektum").
Vége funkció

Nos, most írunk egy nyomtatási eljárást.

Eljárás nyomtatása (parancsnoki azonosító, objektumok tömbje) Exportálás
Minden dolgozó számára az objektumok hurokról
Adat = Adatszerzés (alkalmazott);
Ha az adatok <> Majd meg nem határozott
Word = Új COM objektum ("Word.Application");
Layout = GetMacquerServer ();
Ideiglenes Path = CatalogTime Files ();
nameTimeFile = temporaryBody + "gph.doc";
Layout.Write (a TimeFile neve);
TekDok = Word.Documents.ADD (a TimedFile neve);


TechDoc.Variables ("tabelNum") Érték = Data.Table;
TechDoc.Variables ("orgNameS") Érték = Data.OrgKrtako;
TechDoc.Variables ("DocDate") Érték = Data.Date;
TechDoc.Variables ("fio") Érték = Adat.
TechDoc.Variables ("orgNameLong") Value = Data.Org Long;


TekDok.Fields.Update ();
Word.ActiveWindow.View.ShowFieldCodes = Hamis;
Word.Visible = Igazság;
End If;
A ciklus vége;
Az eljárás vége

1. Az adatokat kapjuk

2. Ha az adatokat megkapjuk, elvégezzük az alakzási algoritmust

3. Hozzon létre egy COM objektumot MS Word

4. Szerezd meg az elrendezést

5. szerezzen be ideiglenes fájlok könyvtárát

6. Mentse el az elrendezésünket tetszőleges név alatt

7. Hozzon létre egy MS Word dokumentumot úgy, hogy az elrendezést sablon paraméterként adja meg.

8-12. A dokumentumváltozókat adatokkal töltjük ki

13. A dokumentummezők frissítése

14. A mezők kódjának elrejtése (analóg Alt + F9)

15. Megmutatjuk (valószínűleg felesleges, mivel az add parancs már alapértelmezés szerint láthatóvá tette)

Kifoglalja a kezelést, és megpróbáltam jól megtenni az ellátási szerződést, ez nem működik. Elindítom a feldolgozást, és ő még egy kódon sem halad át a hibakeresésben!

Helló Ebben a módszerben a "betétek" nem használatosak, van egy másik módszer is, ahol a vágólapot párokban használják az események keresésével és kicserélésével. Ezt egy másik cikk írja le. Ott gondolhatsz valamit a betűtípus megváltoztatásával, például válasszuk a karaktereket N-től M-ig és formázzuk őket.
Itt adjuk meg a dokumentumváltozók szöveges értékét formátum nélkül, és a formátumot a változó betűtípusának formátuma határozza meg.

Ha egy objektummodellel dolgozik, létrehoz egy struktúrát:
data = Új struktúra ("Ru1, Ky2, Ru3)
Mindegyik oldal esetén a folytatás ciklusból
Ha pKi.Type = type1 ÉS pKK.Vid = type1 Akkor
adatok KK1 = oldal.
Ellenkező esetben Ha.
A ciklus vége;

Idézem Anton Filonenko:


Ha egy objektummodellel dolgozik, létrehoz egy struktúrát:
data = Új struktúra ("Ru1, Ky2, Ru3)
Az egyes oldalak esetében a Cont. Cycle-ból
Ha pKi.Type = type1 ÉS pKK.Vid = type1 Akkor
data.KI1 = oldalKi.Finanszírozás;
Ellenkező esetben Ha.
A ciklus vége;


Köszönöm, Anton.
Általában én megtettem, de mivel nem írtam "adatokat" KK1 = ", hanem egyszerűen" KI1 = ", hibát kaptam.
Most minden jól működik!
Nagyon köszönöm!

Anton, hello.
Egy másik probléma merült fel:
Minden adat helyes, de amikor a feldolgozás elindul az ügyfél-kiszolgáló módban, egy hiba jelenik meg:
": Hiba a kontextus módszerének (Add)
TekDok = Word.Documents.ADD (a TimedFile neve);
mert:
Volt egy kivétel (Microsoft Word): Hiba a Wordben. "
Mire lehet kapcsolódni és hogyan kell kezelni?
Az újraindítás nem segített, a Word megnyitja és normálisan működik.
Az alapfájl verziójában működik.
Köszönöm

Ha csak a kiszolgálói adatbázis felizgatja, akkor el kell gondolkodnia, hogy a szerverkörnyezet eltér az ügyféltől.

Az első dolog, amit figyelmet kell fordítanod arra, hol található ez a kódsor? A cikkben azt írtam, hogy ez egy kliens eljárás (NaCliente), így nem lehet fájl vagy fájl alapú különbség.

Másodszor, megértem, hogy mi a "TemporaryFile" változó elérési útja, függetlenül attól, hogy létezik-e benne, és hogy a felhasználónak joga van-e ehhez a könyvtárhoz. Adjon hozzá egy sort kódot a jelentéshez (a fájl neve) a sor előtt.

Harmadszor, győződnék meg róla, hogy az elrendezésben lévő fájl szó-dokumentum, és a formátum megfelel a kiterjesztésnek (a doc és a docx különböző formátumok)

Idézem Anton Filonenko:

Ha csak a kiszolgálói adatbázis felizgatja, akkor el kell gondolkodnia, hogy a szerverkörnyezet eltér az ügyféltől.

Az első dolog, amit figyelmet kell fordítanod arra, hol található ez a kódsor? A cikkben azt írtam, hogy ez egy kliens eljárás (NaCliente), így nem lehet fájl vagy fájl alapú különbség.