internet pencereler Android
Genişletmek

Normal uygulama için 1C ActiveX. Harici bir basılı form oluşturma "Antlaşma"

İyi günler!

Çoğu organizasyon için, 1C programlarındaki herhangi bir anlaşmanın standart baskı formu uygun değildir. Bu nedenle, Şirket 1C, belgeler ve diğer nesneler için ek basılı formlar ekleme yeteneği sağladı. Bu yazıda, açılacak sözleşmenin harici baskı formunu nasıl oluşturacağınızı ve bağlayacağınızı söylemek istiyorum. Microsoft Word..

Ek harici basılı formların bağlanması

1C Başlat: Kurumsal. "Ek Harici Baskı Formları" dizini "Servis" menüsü - "aracılığıyla açın Ek raporlar ve işleme. "

"Ekle" düğmesine tıklayın, ardından "Harici İşleme Dosyasını Değiştirme" seçeneğine tıklayarak yeni bir yazdırılan form kaydınız. Tesisleri otomatik olarak doldurun basılı form "Mal ve hizmetlerin uygulanması" belgesi. Standart yazdırılan formun artık kullanılmaması için "Basılı Yazdırma" sütununda "Antlaşma" seçeneğini seçin.

Biz 1C işletiyoruz: Kurumsal, "karşı taraflar" el kitabını açarak, sözleşmemizin yazdırılacağı ve "Dosyalar" düğmesine "Depolama" nın "Depolama" na gideceğini seçin. daha fazla bilgi için", Biz bir sözleşme için bir şablon yükleriz ve mutlaka, aşağıdaki şekilde gösterildiği gibi bir" sözleşme "çağırıyoruz, aksi takdirde program yazdırılan form için bir düzen bulamayacaktır.

Şimdi "Mal ve Hizmetlerin Uygulanması" herhangi bir belgeyi açın ve "Yazdır" düğmesini tıklayın - "Antlaşma". Microsoft Word belgesi açılır.

Harici basılı form "Antlaşma" ve yerleşimini aşağıdaki bağlantılara indirilebilir.

İstihdam Sözleşmesinin Microsoft Word Formatında Düzeni

Bir şablon oluşturmanın en az üç yolu vardır:

1. Kelime belgesi, örneğin "[Farklı Nokta]", ardından işleme modülünde, arama ve değiştirme değerleri için destek cümleleri oluşturur.

2. Kelime Belgesi, daha sonra ada göre başvurabileceğiniz yer imleri oluşturur. Bu yöntemin eksi, etiketin benzersiz olması gerektiği, yani çalışanın soyadı her metin paragrafında takmanız gerekirse, farklı isimlerle birkaç yer imini yapmanız gerekir.

3. Kelime belgesi "Docvareable" veya "Yazar" gibi servis alanları ekler. Docvariable kullanarak, örneğin, "Dochemstrüksiyonlar .Variables.add (izin veren, ortalama yansıyan);", ancak şablonda görünmüyorsa, örneğin bir değişkene yönlendirilebilir. "Yazar" alanı şablonda görüntülenir, ancak dizin döngüsünde erişmek gerekli olacaktır: "Documers.fields.item (index) .Result.Text \u003d Değer;".

Benim görüşüme göre, ilk yöntem en optimumdur. Belge şablonu kolayca düzenlenir, destek ifadeleri metinde görülebilir. Bu nedenle, şablon bu şekilde yaratıyor.

Açık microsoft programı Ofis. Örneğin, aşağıdaki şekilde gösterildiği gibi birkaç satır ekleyin ve şablonu kaydedin.

Harici bir basılı form oluşturma "Antlaşma"

Biz 1c çalıştırıyoruz: "Configurator" modunda ve "Dosya" menüsü aracılığıyla - "Yeni" harici işleme oluşturun. "Nesneye" bağlantısını "bağlantısını ve" Otomatik Kayıt Ayarları "düzeni tablo belge türüne sahip ekleriz. İstenilen "Nesneye Bağlantı" tipi, yazdırılan formun hangi nesnelerin kullanılacağına bağlıdır, bizim durumumuzda, yazdırılan form "mal ve hizmetlerin uygulanması" belge için "mal ve hizmetlerin uygulanması" belgesi için kullanacak, bu yüzden türünü belirtiyoruz " Belge rulosu. Hizmetin devrelendirilmesi ".

Yazdırma Prosedürü Geliştirme

Şu anda, bir ilginç proje üzerinde Korku Efendisi ile çalışıyoruz - 1C platformuna dayanan bir çözüm geliştiriyoruz: bir büyük şirket için Kurumsal 8.2. Görevler için, 1C fırsatları kötüye kullanımdan daha fazlasıdır ve bizim seçimimize pişmanlık duymazız. Aslında, 1C'nin büyük ve güçlü platformu hakkında olmayacak: Kurumsal.

Biri temel fonksiyonlar Programımız, çeşitli yasal belgelerin (protokoller, bildirimler vb.) Basılı formları oluşturmaktadır. Dan teknik taraf Her şeyin basit olduğu anlaşılıyor - tablo belgesinin türünün standart bir düzenini oluşturun ve düzenine begg. Zaman geçirdik ve hızlı bir şekilde tüm basılı formları attık. İyi çıktı, ama sonra müşteri tasarımı tekrarlamak istedi ve bir su birikintisine oturduk. Sorun, bir hücrenin içindeki belirli kelimelere formatlama stillerini uygulamak imkansızdı. Evet, stili bütün bir hücreye uygulayabilirsiniz, ancak bu yöntem gelmedi, çünkü Bir hücrede birkaç kelime olabilir ve bir şekilde onlardan sadece bir tanesi özellikle tahsis edildi.

Prensip olarak, bu sorun, hücresel belge hücrelerinin boyutunu azaltarak çözülebilir. Bazı durumlarda, böyle (küçük) hücrelerle çalışmak daha kolaydır, ancak sıklıkla Buzz'ın böyle bir işaretlemesini de değiştirir. Neyse benim için.

"Tablo Belgesi" tipinin tipik düzenlerini ve MS Word'ün kötüye kullanıldığını düşündük ve karar verdik. Fikir bununla ilgilidi:

1. Gerekli belgelerin şablonlarını oluşturun. Tüm şablon dosyaları, MS Word için tam olarak şablonlar olarak oluşturulmuştur. Kim farkında değil, şablonlar nokta uzantılı dosyalardır. Temellerinde, yeni belgeler oluşturabilirsiniz.

2. OLE teknolojisini kullanarak, belgeleri oluşturun ve sözde değişkenleri istediğiniz metne değiştirin. Pseudo-değişkenler formda hazırlandı: [İsim İzni].

3. Duruma bağlı olarak, oluşturulan belgeyi yazdırın veya kaydedin.

Prensipte hiçbir zorluk yoktur, ancak o gün önce MS Word'üyle "1C: Kurumsal" dan daha önce çalışmamamız gerekmedi. Temel olarak, benim tarafımdan yaratılan tüm düzenler dayanıyor tablo belgeleriBu nedenle, platformdan veri aktarımındaki deneyim, MS Word / Excel'de bulunmadım. Excel'den veri okunması sık sık yapmak zorunda kaldı, ancak iletmek - asla.

Gitarın altında birkaç parça gerçekleştirdikten sonra, uzun acı çeken aracı ertelemeye ve işe devam etmeye karar verdik. Küçük bir kanepe ve yardımı okumak, burada böyle bir sadık kaldı:

// Yeni bir nesne türü oluşturun Kelime. // Değişken yolundaki şablon // tabanlı yeni bir belge oluşturun, 2NDocument \u003d WordApplication .Documents.add (pathchaslum); // RepubediContament için arama için hazırlık \u003d yeni belgeler.conent.find; // Metin değiştirme // Yürüt yönteminin ilk parametresinde, // değiştirileceği dokuzuncu hatta değiştirmek istediğiniz bir dize iletiyoruz // //. Aslında, değişkenin adını (örneğin, [Kullanıcı Adı]) // ve ikincisinde - ofisin değiştirilmesinin değeri .Execute (bu, yalan, yalan, gerçek, yalanlar, gerçek, yalan, hat) (tek)); // Daha Fazlası Hepsinde WishLifts'e bağlı // bir belge tasarrufu yeni bir belge .Aveas (tutku); // bir belge yazdırma Yeni belgeler.PrintOut (); // Tamamlandığında, belgeyi ve Winword'ün kendisini kapatmanız gerekir. Bu, quit yöntemi için yapılır // Yalanın değerini iletirim. Bu, tamamlanan belgeyi kaydetmeniz gerekmediğini göstermektedir. Wordapplication.Application.quit (yalan); Wordapplication \u003d 0;

İş sonuçları

MS Word'ün zarif basılı formları oluşturmak için kullanımı tamamen düzenlenmiştir. Yazma prosedürleri için birkaç saat geçirdik ve daha önce oluşturulan formları MS Word şablonları altında dönüştürdük. Sonuçtan memnun kaldık. Her şey akıllıca çalışıyor ve müşterilerimiz sorunsuz, çıktı belgelerinin şablonlarını bağımsız olarak değiştirebilir. Kepçe durumunda (müşteri rastgele mevcut şablonları düşürürse), orijinal şablon dosyalarını geri yükleme yeteneğini sağladık.

Bu yaklaşımı projelerinizde uygulamaya karar verirseniz, dikkatli olun. Tüm bu Nisaların kullanımı, bilgisayarda MS Word'u gerektirir. Bugün birçok şirketin korkunç (IMHO) OpenOffice'e gitmesi göz önüne alındığında - Uygulama bu method Zorluklara neden olabilir. Neyse ki, bu konuda şanslıydık.

DİKKAT! Aşağıda açıklanan kodları kullanırken, karakteri kaldırın. _
Örneklere yaptığı gibi bakalım! \u003d) 2 yol biliyorum:
1. Şablon metnini sözcük düzeninde değiştirerek.
2. Word'deki yer imlerini kullanarak metin ekleyerek,

İlk durumda, derhal dizenin uzunluğunun, oldukça küçük 255 karakter, sadece küçük 255 karaktere iletildiğini ve sözcük düzenindeki şablon ifadelerinin düzenlenmesi oldukça uzun süreceğini söyleyeceğim. Content.find.execute prosedürü aracılığıyla.

İkinci durumda, sınırsız bildiğim kadar uzunluk, ayrıca yer imleri ile yemek yemek, şablon metnini ortaya çıkarmaktan çok daha hızlı ve daha uygundur. Yer imlerini () kullanarak. S_ELECT (). Bu nedenle, koddaki ikinci örneğe bakalım.

Ve öyleyse, önce belgeye kelime düzeni eklemeniz gerekir. Düzen yapıcısını kullanarak bir düzen ekleyin, aktif belgeyi belirten ve uygun düzeni seçme.

Onun eylemini ara. 1 listeyi açın 1 listesinde imleci doğru yere koyarız, Ekle sekmesine gidin. Örneğin ekle ekle'yi tıklatın, Bahsediyorum

Şimdi düğmeyi belge biçiminde atıyoruz ve sözcüğümüzü açan bir kod yazıyoruz.
Kod 1c v 8.x // Başlatma Bölümü 1
Link Macket \u003d Al (ACT);
Msword \u003d komut dosyası paketi. Dökün ();
Girişim
Link-skala \u003d msword.Application.Documents (1);
Script Pack.ActiveVate ();
// boşaltma tablo parçası Bir dize Bölüm 2'deki ihlallerle
Str \u003d yeni komisyon (adodb.stream);
str.open ();
Stritch \u003d Elementforms. Bağımsızlar. İşaretlenmiş;
Her döngü satırı için
str.writetext (+ StrachTakes. Açıklama + ihlal edilen gereksinimler SnowdropsGost: + StrachTakes. Snipflage + Makale: + StrachTakes. Pasaty + sembol (13), 0);
Endcycle;
str.position \u003d 0;
Bozulma \u003d str.readtext ();

// Metni bozukluklar bölüm 3 ile sekmeye yerleştirin.
Msword.bookmark (yıkıcı) .S_elect ();
Msword.Application.S_election.TypeteText (DisquateVete);

Script Pack.ActiveVate ();
Bir istisna
// Hata ise
Rapor açıklaması ());
Msword.Application.quit ();
Kutlamalar;
Bu, bir tablo bölümünden bir satırdan bir çizgiyi bir satırdan çekmenin bir örneğidir, sadece bir tür sahne boşaltmanız gerekirse, bölüm 2'yi atlayabilir ve 3. bölüm 3'e gidersiniz.

Tablo bölümünü bir tablo formunda boşaltmak için, otomatik format işlevini, belge reçetesinin tablo bölümünün boşaltma kodunun örneğini, örneğini kullanabilirsiniz:
Kod 1c v 8.x kelimesi \u003d msword.Application;
Belge \u003d word.activedocument ();
// 22 satırdan aşağı doğru ilerleyin
Word.s_election.movedown (, 22);
Belge.paragraphs.add ();
// tablo hazırlığı:
Rng \u003d word.s_election.range;
// Bir başlık oluşturuyoruz:
Rng.i_nsertafter (Hayır. P / P * Takılı bozukluklar ve * tabanını ortadan kaldırmak için önlemler);
Rng.i_nsertabagraphafter ();
// masanın kendisi
Stritch \u003d Elementforms. Bireysellik. Türü. Tüyle;
Döngünün her ihlali hattı için
Rng.i_nsertafter (string (line) + * + * + satır.
Rng.i_nsertabagraphafter ();
Endcycle;
Rng.converttotable (*);
Belge.tables (1) .autoformat (17); // şablondaki tablo numarası
Word.Visible \u003d gerçek;
Hepsi bu kadar \u003d)

Etkin belgeye daha fazla yol
Konfigüratör düzenlerinde - sağ tıklayın - Ekle
Düzen türü: Aktif belge
Yeni bir tane oluşturun - Microsoft Word Belgesi

Ekle Menü - Alan - Otomasyon - Docvariable
Alanın adını "Yeni Adı:" Data Raz'unda yazın

Form modülünde bir düğme oluştururuz ve işleyicisine yazıyoruz:



Komobject.variables.item ("DataPrice"). Değer \u003d "01/24/2007";
Komobject.fields.update ();

Komobekt.printout (); // belge yazdır

// yazdırmaya gönderilmenin sonunu bekliyorum ...
Objword.Application.backgroundprintingstatus iken.<>0 döngü
Uyarı ("beklemek", 1);
Endcycle;

Komobject.Application.quit (); // kelimeyi kapat.
Kombine \u003d 0;
Ekstrüdreler

2) Alanı değil, bir yer imi ekleyin
Menü ekle - Bookmark ve sonra adını belirtin ("Sayı")
Kod 1c v 8.S Prosedür Temel Formsford (Düğme)
Gerçek belge \u003d alma ("düzen");
KOMOBJECT \u003d gerçek belge. Dökün ();
Komobject.Application.Visible \u003d 1;
KOMOBOCT.Bookmarks (Sokrlp ("Sayı")). S_ELECT ();
Komobject.Application.s_election.typeteText (SOKRLP ("Test Kontrolü"));
Ekstrüdreler

Kod 1c v 8.2 Yukarı // Sözleşmenin parametreleri "[% operatörün%] 'nın [%] formunun değişkenlerinin metninde belirtilmiştir.
Baskı Odak () İhracat Fonksiyonu

Antlaşım \u003d alma ("ActiveDocument_Dog Publishing"); // Düzen-Activedocument olsun
Msword \u003d sözleşme. Dökün ();
Girişim
Doc \u003d msword.Application.Documents (1);
Doc.activate ();
Değiştir \u003d DOC.CONTENT.FIND;

FindText \u003d "(Doktor)"; // Ne Arama - Listenin adı
Matchcase \u003d false; // kullanım düzenli ifadeler
Matchwholeword \u003d gerçek; // kelimeyi tamamen ara
Macnwildcards \u003d false; // Düzenli ifadeleri yerleştir
Macnsoundslike \u003d undefined; // ünsüz aramak
Macnallwordforms \u003d undefined; // kelimenin tüm biçimlerini arayın
İleri \u003d gerçek; // ileride ara
Wrap \u003d undefined; // Nesneyi Bul Noktası Nedir?
Format_ \u003d false; // biçimlendirme kullan
Değiştirilmiş \u003d "n777"; // Adınızın Değiştirilmesi İstediğiniz Metin

// kısaca:
//Replace.execute (FindText, kaydın tipik olduğu kayıttır);

Repax.execute (
Metin bul,
Kibrit,
Tüm kelimeyi eşleştir,
Matchwildcards,
Kibritler gibi,
Matchallwordforms,
İleri,
Paketlemek,
Biçim_,
Sözleşme numarası);

Msword.Application.Visible \u003d gerçek;
Msword.activate ();
Bir istisna
Rapor açıklaması ());
Msword.Application.quit ();
Kutlamalar;

Geri dönüş 0;

Yayın - Sizinkiniz Rkod örneği içeren bir notu yemek:

1. Şablonu doldurma Word Danis 1C'den;
2. doldurma altbilgiler kelime. 1C'den veri;
3. Kelime verilerinde bir tabloyu 1C'den doldurma;

İşin başlangıcı

Çoğu durumda, aşağıdaki görevle karşı karşıyayız:
Açmanız gerekiyor belge sözcüğü.1C verilerle dolu.

Bunu yapmak için, Word belge şablonu hazırlamamız gerekiyor. Sözlük şablonuyla karıştırmayın, Özel dosyalar Tekrarlanan kullanım için belge ayarlarını içeren kelime. Uzantısı * .docx veya * .doc ile sıradan bir Vordvian belgesine ihtiyacımız var. Ve sonra bu belgeyi ikili verilerle düzene yerleştirin.

Girişimi // İkili veri deseninin bir düzenini edinin \u003d alım (isteğe bağlı parametreler. Viddoğan); Namefile \u003d isteğe bağlı Equareno dosyası ("docx"); Şablon. Kayıt (isim); // Word nesnesiyle çalışmak için bir COM nesnesi oluştur \u003d Yeni COM nesnesi ("Word.Application"); Nesneler.documents.add (ad dosyası); // Word'de, birkaç belgeyi bir uygulamada açabilirsiniz, bu yüzden nesneler.Application.Documents açık belgelerin bir koleksiyonudur. // Bizim olgumuzda, belge her zaman bir belgeyi açar \u003d nesneler.Application.Documents (1); Docterns.ActiveVate (); Raporlama istisnası ("Bir uygulamayı başlatma hatası" + açıklama ()); Kutlamalar; // Elbette, bir COM nesnesi almak bir girişimde bulunmalıdır. Küçük, bir şey yanlış gidecek.

Okuyucu, modal bir çağrının kullanıldığını ve yazarı bir parmağınızla sürdürdüğünü unutabilir. Ve doğru olacak.

// Belge akışının parametrelerinin parametrelerinin yapısını oluşturun \u003d CutterParameter'ları () hazırlayın; // Doldurma strizleri belgesinin parametrelerinin yapısını doldurun (parametreler);

Kelime ilkelerinde biraz bölün ...

Her Word belgesi sayfalardan oluşan bölümlere ayrılmıştır.

Her bölüm için, elemanların, benzersiz altbilgileri ve sayfa parametresi ayarlarınızı oluşturmak mümkündür. Bu nedenle, örneğin, sayfalardan birini döndürmek için (manzara olarak yazdırmak için), altında ayrı bir bölüm oluşturmanız gerekir.

Her biri kelime sayfası çeşitli alanlara ayrılmıştır:

  • Sayfa başlığı
  • Ana yazı
  • altbilgi

Her bölümde ilk sayfa için benzersiz bir altbilgi olabileceği belirtilmelidir.

// nesne, tüm bölümlerden tüm ana metni içerir. Belgeler // Nesne, belge doküman gruplarının bir koleksiyonunu içermektedir .Section // Her bölümde, Dounteners.Sections.Sections (1). // Documemaker.Sections (1) .Footers // tarafından kendi koleksiyonu // Aynı zamanda, eğer bir kene "İlk sayfaya benzersiz bir altbilgi" ise, daha sonra başlıkların ve altbilgilerin koleksiyonları iki tane içerecektir. elementler

Kullanıcı parametrelerini doldurma

Bu koleksiyonlarla iletişim kurarken, bunları arayabilir ve tablolar gibi yerleşik nesneler alabiliriz.

Şimdi, Word bölgelerine nasıl erişileceğini az ya da çok anlaşıldık, içlerinde şaka yapabiliriz ve parametrelerimizi değiştirebiliriz:

// TÜM parametreleri hareket ettirerek ve her parametre için belgede onları değiştirdikten sonra (DoChemtent.Content, Parametre. Butt, Parametre). // uygulamadan sonra üst altbilgi parametresinin oluşumunu arıyor (Documemakers.Sections (1) .Headers.item (1) .range (), parametre. Hoşgeldiniz, parametre. // Execute (Dochemstructions.Sections (1) .footers.item (1) .range (), parametre. Hoşgeldiniz, parametre. İlişkiler. Yürütme (Dochemers.Sections (1) .footers.item (2) aralığı (), parametre. Dönüş, parametre. Endcycle; // Yürütme işlevini gerçekleştirin ve değiştirin (nesne nesnesi, parametre, değer) nesnesi.find.execute (parametre, değer, 2) sonlandırma işlevi

Daha fazla yürütme yöntemini düşünün. Parametreleri, yeniden başlatılan MS Word'ü değiştirirken / ararken diyalog penceresi ile aynıdır:

Ve işte ana parametreler (MSDN referansının ücretsiz transferi):

  1. İstediğiniz metin bir dizedir - değiştirme için metin. Metin özel parametreler içerebilir. Örneğin, ^ p - paragraf, ^ t - Tabulasyon
  2. Kayıt olmak için duyarlılık - Booleo - Gerçek ise, o zaman arama kaydı ile ilgili olarak gerçekleştirilecektir.
  3. Tamamen kelimeler - Boolean - Gerçek ise, o zaman tamamen kelimeleri arıyoruz. Kelimelerin girişi dikkate alınmaz. Örneğin, kelimeyi ararken, ev kelime kaçırılacak
  4. Joker işaretlerini kullanın - Booleo - Gerçek ise, o zaman yerleşik düzenli ifadeler kullanılır.
  5. Benzer - Buleovo - eğer gerçekse, arama sonucu benzer kelimeler içerecektir
  6. Tüm Formları Ara - Boolean - Gerçek ise, arama sonucu çeşitli kelimelerin biçimlerini içerecektir.
  7. İlk başta arama - boolevo - gerçekse, daha sonra belgenin sonuna kadar gerçekleştirilecektir.
  8. Kapsama - wdfindwrap - Arama yönünü tanımlar
  9. Biçimlendirme - Biçimlendirme - İstediğiniz metnin formatı
  10. Değiştirme satırı - String - Kaynak metnin değiştirileceği bir dize
  11. Değiştirme sayısı - WDReplace - Nasıl Değiştirileceğini belirler
  12. vb.

WDReplace - Sabit Değer:
wdreplaceall 2.
Wdreplacienone 0.
Wdreplaceone 1.

Bu yöntem, özel bir alan olarak "değiştirme dizgisi" almanıza izin vermez, ancak 10 kat daha yavaş bir yerde çalışır. Seçilen bir alanı elde etmek için, hafifçe ayarlanmış bir tipik işlevi kullanabilirsiniz:

// Control Unpp 1.3 fonksiyon yürütme (nesne değeri, parametre, değer) strfice \u003d "[" + parametre + "]"; Stringasames \u003d string (değer); // Nesneyi değiştirdiğimiz alanları vurgulamak için gereklidir. Seçim (); // Seçili seçimi al \u003d Object.Application.Selection Alanı; // parametrenin tüm girişi bul ve değerinin değeri ile değiştir \u003d seçim.find; Findobect.clearformatting (); FindObject.Execute (Procrifament) döngüsü, eğer Satın Alındasınız (dize geçişi), ardından seçim.delete (); Aksi takdirde seçim.typetext (str salakları); Bitti; Endcycle; // Seçimi iptal et.Collapse (); Sonlandırma

Seçili bir alan zaten elde etti, metin, yazı tipi, vb tarzını düzenleyebilirsiniz.

// seçimi düzenleme.font font // düzenleme rengi seçim.highlightcolorindex

Ayrıca böyle bir ikinci yaklaşım da var kelime nesnesialanlar gibi. Gerçekten beğenmiyorum çünkü Büyük belgelerde, yaklaşık 100 sayfa, bu alanlar ısırmaya başlar (Gerekli değerlerin yerini almamak için kaybolur) ve diğer saçmalıklar. En azından Word 2007'de. Ama yine de vereceğim:

Bir şablonu bir belge gövdesine hazırlarken, Docvarible Type ile alanları sipariş etmeniz gerekir (sıcak tuşlara Ctrl + F9 ile ekleyebilirsiniz).

Bu tür alanlara erişim bir sonraki açılışta elde edilebilir:

Docterns.variables.item (oyun parametrat) .Values

Şablondaki tablolar doldurma

Böylece, belgenin ana metniğindeki parametreleri doldurduk, altbilgilerdeki parametreleri değiştirdik, ancak hala bir sorunumuz var - tabloyu doldurmanız gerekir.

Aşağıda açıklanan yaklaşım, yalnızca önceden bilinen bir formata sahip tablolar için uygundur. Şunlar. Bir şekilde masayı ve çizgilerini başlangıçta biçimlendirebiliriz. Ama sonra oldukça sorunlu değiştir.

Tabloya belge alanı üzerinden erişebilirsiniz.

// Ana metin tablosundaki ilk tabloya eriştik \u003d belgeler.Content.Tables (1)

Biçimlendirmeyi şablonda daha kolay ayarlamak için, daha sonra silindiğimiz boş bir ilk satıra sahip bir tablo oluşturun.

// parametrelerin doldurulması için veri \u003d parametre dokümantasyonu. Yazdırma; // başlığından ve ilk satırın el değmemiş iterator \u003d 2'den ayrılması gerekir; Tablo \u003d doccuser.Conent.Tables (3); Parametrelerden her satır için, döngü // varsayılan olarak, birinci tablo üzerinde bir dize ekler.Rews.add (); Doldurma vuruşları (tablo, yineleyici, dize, "PP, isimlendirme, düzenleme, fiyat", parametreler); İterator \u003d iterator + 1; Endcycle; // şablon yapısı, sütunların adını ve sipariş prosedürlerini içerir. Akış şekilleri (Tablo, Anayasa, Yemekleme, Atama, Yapılar, Yemekleme) Masifler \u003d Çıktı. Geliştirme. İterator \u003d 1; Maskalar karşılanırsa, maskalar karşılanırsa her dize için. Skumps. Init (string) \u003d undefined ve string<> "PP", ardından iterator \u003d iterator + 1; İlerlemek; // şapkanın aynı zamanda bir dize olduğunu ve numaralandırmadığımızı unutmayın, hariç tutmamız gereken, satır \u003d "PP", ardından table.cell (ayarlar, iterator) .range (). Text \u003d string (numaralandırma 1 ); İterator \u003d iterator + 1; İlerlemek; Bitti; Table.cell (ayarlar, yineleyici) .range (). Metin \u003d satır (kalite seçeneği [satır]); İterator \u003d iterator + 1; Endcycle; Ekstrüdreler

Bu temelde bu. Sözcükten kaynaklanan ana sorular, vurgulamaya çalıştım. Umarım bu inceleme işte size yardımcı olacaktır \u003d)

Tavsiye ve yorumlar için teşekkürler:
,

Eleştiri sadece hoş geldiniz. Daha fazla yorum, rehber daha iyi \u003d)

Çok yararlı dış tedavi Tüm örnek konfigürasyonlar için 1C: Kurumsal 8.3, oluşturmanıza olanak sağlar kelime dosyası Seçilen şablon tarafından referans kitaplarından ve belge belgelerinden. Bununla birlikte, 1C çeşitli özellikler, istihdam sözleşmeleri ve karşı taraflar, garanti kuponları ve diğer şeylerle yapılan sözleşmelerden çıkabilirsiniz. İstenilen yapının elinde bir kelimeye sahip olmak ve biraz geliştirmek için, gerekli tüm parametreleri doldurarak doğrudan 1C'den oluşan fırsat elde edersiniz.

İşleme prensibi Sonraki:

  • İstediğiniz yapı kelimesini seçin,
  • dosyanın bu yerlerinde 1C'den bilgi eklemeniz gereken yerlerde, yer imleri yapın,
  • Şablonu hazırladıktan sonra, 1C'ye (dosya dizini) ekleyin,
  • baskı şablonunun doldurulmasını 1C'de özelleştirin,
  • oluşturulan şablonu seçerek gerekli belgeleri / dizinleri yazdırıyoruz.

Sözlük şablonunun hazırlanması

İşleme işlemini göstermek için, şartnamelerinin mal ve hizmetlerin uygulanmasını belgeden sözleşmeye yazdırılmasını yapılandıracağız. Diyelim ki böyle bir kelime var:

Ondan tam teşekküllü bir özellik oluşturacağız. Bilginin ikame edilmesi gereken yerlere yer imlerini ekledikten sonra başlıyoruz:



Yer imleri adına boşluk kullanamazsınız.

Yazdırırken, ürün tablosunu da doldururuz. Böylece güzelce oluşan, kapağı ve bir boş dize bırakın:


Word'ü kurtarıyoruz, kapat.

Şablon doldurma ayarlama

Şimdi programda, bir satış belgesini açın, Yazdır menüsüne gidin ve yazdırmayı Word şablonuna göre yapılandırmak için düğmeye tıklayın:


Şablonları ayarlamak, yalnızca tam hakları olan kullanıcılar için kullanılabilir.

Açılan Ayarlar penceresinde, ilk şey oluşturulacak yeni dosya. Programda (referans kitabının bir unsuru anlamına gelir) Dosyalar) Ve bizim sözümüzü öğreneceğiz:


Açılan pencerede, Dosya eklemek için:


Ardından şablon ayarlarında seçin. Bundan sonra, yer imi tablosu doldurulur, bu yer imlerine ilişkin veri doldurma kaynaklarını seçmemiz gerekir:


Kaynak, satış belgesinin kendisinin yanı sıra bu detaylardan türevlerinin ayrıntılarını kullanır:

Yazdırırken, referans kitap ve belgelerin ek ayrıntılarını da kullanabilirsiniz.

Mevcut ayrıntıların listesi çok büyük, hızlı girişi kullanmak uygundur:


Kaynak seçiminin bir sonucu olarak, tablo aşağıdaki formu alacaktır:


Tablo satırlarına değer için, durumun yanı sıra ismin azaltılmasının yanı sıra depozito:


Kelimeye bir masa yazdırmak için, belgenin kaynak tablosunu seçin:


Tabloyu seçtikten sonra, tabloyu kelimedeki tabloyu görüntülemek için kullanılabilecek bu ayrıntıların adlarıyla ilgili bir sertifika belirir. Gerekli sahneleri virgül aracılığıyla (dosya sütunları sırasına göre) listelememiz için kalır. Sütunda boş bir değer bırakmasına veya rastgele metin yazmasına izin verilir:


Her şey yolunda, şimdi istediğiniz kelimeyi yazdırabiliriz.

Yapılandırılmış bir şablona yazdırma şimdi herkes için mevcuttur, yani. Kullanıcıların yazdırmayı bağımsız olarak yapılandırması gerekmez.



Hem bir belgeyi hem de listeyi yazdırabiliriz:


Yazdırma ayarları formunda, yeni şablonlar oluşturmanın yanı sıra, kullanılabilir düzenleyebilirsiniz:


Birkaç kelime şablonunun nesne için yapılandırılması durumunda, ardından yazdırma komutunu seçtiğinizde, bir pencere istediğiniz seçenek ile açılır:


Dizin için kullanıcı erişim haklarıyla çatışmaları önlemek için Dosyalar Yazdırmanın işlenmesine ek olarak, 1C'nin uzantısı (bir işlem arşivindedir), kullanıcılara bir referans kitabı okumaya erişim sağlayacaktır.

Bu işleme için sorularınız / yorumlarınız / önerileriniz varsa, cevaplamaktan memnuniyet duyarım.

Sürüm 1.1.2.2 tarihli 12/15/2018

Şablon seçildiğinde tarihi görüntülemek için, bir format seçme yeteneği eklenmiştir, tablo bölümünde, isimlendirmenin yanı sıra, makaleyi ve bir ölçüm birimini belirlemek artık mümkündür:


Şimdi gereksiz kalıpları silebilirsiniz:


Sürüm 1.1.2.3 29 Ocak 2019 tarihli

Tarihin bir bölümünü ayrı ayrı görüntülemek için bir fırsat vardı - gün, ay (sayı veya isim) ve yıl:


Bireyler için (ve fiziksel tipte karşı taraflar), şimdi pasaport ayrıntılarını gösterebilirsiniz:


Sürüm 1.1.2.4 tarihli 03/12/2019

Word'de yazdırırken, zamanlama belgelerinin tablo kısmı, yalnızca bu tablo kısmının ayrıntılarını değil, aynı zamanda adlandırmanın herhangi bir detayını kullanma fırsatı ortaya çıktı:


Sürüm 1.1.2.5 tarihli 07/12/2019

Sadece oluşturmakla kalmayacak gibi görünüyordu sözlük şablonları, ancak aynı zamanda otomatik olarak kaynak nesneye (ekli dosyalarda) ekleyin. Bunu yapmak için, Ayar seçeneğini seçin. Ekli dosyalara kaydet.


Baskı prosedürünün sonunda, ekli dosyanın formu açılır.


Bu formdan, doldurulmuş kelime şablonunu görüntülemek / düzenlemek gerekirken açabilirsiniz.