Tworzenie formularza do wydrukowania w 1C 8. Dodanie zewnętrznego formularza do wydruku do bazy danych. Podłączenie zewnętrznej formy drukującej do podstawy

Wykonane według standardowego układu drukowany formularz, wbudowany w aplikację przez programistów (nazywa się to układem „dostarczonym”).

W razie potrzeby możesz zmienić układ standardowy i w przyszłości wydrukować dokument w oparciu o swój osobisty („niestandardowy”) układ. Aby edytować układ drukowanego formularza, dostępny jest mechanizm przesyłania na komputer lokalny. Edycja układu odbywa się w lokalnej wersji aplikacji systemu 1C:Enterprise (w szczególności można skorzystać z bezpłatna aplikacja 1C:Enterprise - Praca z plikami).


Aby zmienić układ wydruku:




Edycja układu drukowanego formularza jest zakończona; podczas drukowania dokumentu zostanie zastosowany układ, w którym dokonano zmian.

Jeśli chcesz powrócić do poprzedniego układu wydruku, kliknij przycisk Użyj standardowego układu. W takim przypadku edytowany układ nadal będzie obecny na serwerze i można go ponownie włączyć naciskając przycisk Zmiana.

Życzymy miłej pracy!

Jak wstawić logo firmy do układu drukowanego formularza?

Podajmy konkretny przykład edycji układu drukowanego formularza Faktury do zapłaty czyli zastanowimy się jak wstawić do niego obrazek np. logo firmy (obrazek ten trzeba najpierw przygotować i zapisać w postaci pliku graficznego np. w formacie png lub jpg).


Dzięki temu teraz faktury, które przygotujesz do przekazania kontrahentom, będą zawierały logo Twojej firmy. Aby dodać logo do innych dokumentów, należy powtórzyć opisane kroki dla odpowiednich druków tych dokumentów.

Życzymy miłej pracy!

Zewnętrzne drukowane formularze dla zwykłej aplikacji (dla konfiguracji Enterprise Accounting 2.0, Salary and Human Resources Management 2.5, Trade Management 10.3 itp.) są tworzone w znacznie prostszy sposób w porównaniu z zewnętrznymi drukowanymi formularzami dla zarządzanej aplikacji.

Po co tworzyć zewnętrzne formy drukowe?

Zaletą zewnętrznej płyty drukarskiej w porównaniu do konwencjonalnej jest to, że pozwala ona uniknąć zmian konfiguracyjnych baza informacyjna. Oznacza to, że proces kolejnych aktualizacji konfiguracji nie będzie skomplikowany. Dodatkowo zewnętrzne formy drukowe wraz z zewnętrzną obróbką są jedyną możliwością rozszerzenia funkcjonalności wersje podstawowe Konfiguracje 1C, których w ogóle nie można zmienić.

I ostatnia rzecz: zewnętrzne formularze drukowane są łatwiejsze do replikowania, ponieważ stanowią one osobny plik, który można szybko podłączyć do bazy danych.

Jak utworzyć zewnętrzny formularz drukowy

Rozważmy krok po kroku proces tworzenia zewnętrznego drukowanego formularza 1C:

  1. Tworzymy przetwarzanie zewnętrzne. W tym celu należy wybrać pozycję menu w konfiguratorze Plik - Nowy... A w oknie dialogowym, które zostanie otwarte - Przetwarzanie zewnętrzne.
  2. Utwórz atrybut przetwarzania zewnętrznego o nazwie Odniesienie do obiektu. Typ atrybutu to odnośnik do katalogu lub dokumentu, dla którego tworzony jest zewnętrzny formularz drukowany. Tę samą formę można zastosować dla kilku typów obiektów, w tym przypadku typu danych atrybutu Odniesienie do obiektu musi być złożony.
  3. W module obiektowym tworzymy funkcję eksportu o nazwie Foka, co powinno zwrócić gotowy wydrukowany dokument arkusza kalkulacyjnego.

Często zdarza się, że trzeba nieco dostosować układ istniejącego drukowanego formularza i uczynić go zewnętrznym. Na przykład dodaj do układu pieczęć organizacji i podpis menedżera.

Stworzenie zewnętrznej formy drukarskiej na podstawie standardowej z niewielkimi zmianami

Rozważmy tę procedurę na przykładzie tworzenia zewnętrznego drukowanego formularza uniwersalnego dokumentu przelewu dla dokumentu Sprzedaż towarów i usług 1C: Rachunkowość. Będzie się różnić od standardowego drukowanego formularza obecnością pieczęci organizacji.

  1. Tworzenie przetwarzania zewnętrznego za pomocą rekwizytów Odniesienie do obiektu, typ danych - DocumentLink. Sprzedaż towarów i usług.
  2. Znajdujemy układ standardowego drukowanego formularza UPD (znajduje się on w układach ogólnych) i kopiujemy (przeciągamy) go do zewnętrznego okna przetwarzania. Układy innych druków mogą znajdować się w samych dokumentach lub księgach informacyjnych.
  3. Wprowadzamy niezbędne zmiany w skopiowanym układzie drukowanego formularza.
  4. Znajdujemy funkcję odpowiedzialną za generowanie drukowanego formularza. Funkcja ta powinna zwrócić wygenerowany dokument arkusza kalkulacyjnego. Skopiuj jego zawartość do funkcji eksportu Foka() w module obiektu przetwarzania zewnętrznego.
    W naszym przypadku jest to funkcja Eksport PrintUniversalTransferDocument(). z modułu obiektu dokumentu Sprzedaż towarów i usług.
    Jeżeli zmiany układu były znaczne (zmieniły się obszary i/lub parametry), należy dokonać odpowiednich korekt funkcji drukowania.
  5. Próbujemy zaoszczędzić przetwarzanie zewnętrzne. Jednak prawdopodobnie zostaną wyświetlone komunikaty o błędach wskazujące, że brakuje niektórych procedur i funkcji wywoływanych przez funkcję drukowania. Te funkcje i procedury należy znaleźć w dokumencie źródłowym, a także skopiować do modułu obiektu zewnętrznego przetwarzania. Lub dostosuj łącze, jeśli eksportowana jest oryginalna funkcja lub procedura.
  6. (niekoniecznie). Aby przetestować zewnętrzną formę drukową, wygodnie jest przygotować formę, na której można umieścić rekwizyty Odniesienie do obiektu. Przycisk Wykonać musi wywołać procedurę Foka() z modułu obiektowego. Aby to zrobić, zdarzeniu kliknięcia przycisku przypisana jest procedura:

Więc! Istnieje konfiguracja (na przykład „Zarządzanie handlem”, wydanie 10.3) i dla niej konieczne jest opracowanie zewnętrznego formularza drukowanego. Weźmy na przykład standardowy dokument „Faktura do zapłaty na rzecz kupującego” (chociaż zewnętrzne formularze drukowane można tworzyć nie tylko dla dokumentów, ale także dla katalogów).

Przykład dla 1C 8.3 (formularze zarządzane)

Można zobaczyć przykład opracowania zewnętrznego drukowanego formularza dla zarządzanej aplikacji.

Zadanie

Opracuj zewnętrzny drukowany formularz, który będzie dostępny z dokumentu „Faktura do zapłaty na rzecz kupującego”, który będzie zawierał nazwę organizacji, kontrahenta oraz listę towarów z ceną, ilością i ilością.

Iść!

Pierwszą rzeczą, którą musisz zrobić, to utworzyć zewnętrzny plik przetwarzania. Przetwarzanie powinno obejmować trzy główne punkty:
  1. Atrybut „Object Link” o typie „DocumentLink.Invoice for Payment to Kupujący”
  2. Układ, który zostanie wydrukowany
  3. Funkcja eksportu „Print()”, która zwraca dokument arkusza kalkulacyjnego
Działania te widoczne są na rysunku 1

„Rysowanie układu”

Nasz układ będzie zawierał dwa obszary:
  1. Tytuł (nagłówek) dokumentu (w tym obszarze zostaną umieszczone nazwy organizacji i kontrahenta) oraz nagłówek tabeli (z nazwami kolumn)
  2. Tabela z towarami (kolumny z nazwą, ilością i kwotą)
Rysunek nr 2 przedstawia układ zewnętrznej formy drukarskiej. Należy pamiętać, że komórki tabeli i nagłówka zawierają parametry, a nie tylko tekst.

Funkcja „Drukuj()”

Formularz jest już prawie gotowy. Pozostaje tylko napisać programowe wypełnienie pól dokumentu arkusza kalkulacyjnego. Akcje te wykonywane są w module obiektu przetwarzania, w funkcji o nazwie „Drukuj”, która MUSI być eksportowalna.
Etap nr 1. Odbieranie danych do nagłówka, wypełnianie parametrów nagłówka i wysyłanie ich do dokumentu arkusza kalkulacyjnego TabularDocument = Nowy dokument tabelaryczny; Układ = GetLayout("Nasz układ"); Żądanie danych = Nowe żądanie("WYBIERZ | REPREZENTACJA(Faktura do zapłaty na rzecz kupującego. Kontrahent) JAKO Kontrahent, | REPREZENTACJA(Faktura do zapłaty na rzecz kupującego. Organizacja) JAKO Organizacja | OD | Dokument. Faktura do zapłaty na rzecz kupującego JAKO Faktura do zapłaty na rzecz kupującego |. GDZIE |. Faktura do zapłaty na rzecz kupującego Link = &Link"); Żądanie danych.SetParameter("Link", ObjectLink); Nagłówek = DataRequest.Execute().Wybierz(); Cap.Next(); Obszar = Układ.GetArea("Nagłówek"); Area.Options.Fill(Nagłówek); TabularDocument.Output(Obszar); Etap nr 2. Odbieranie danych tabelarycznych i wyświetlanie produktów linia po linii
Data Request.Text = "SELECT | _Products.Numer linii, | REPRESENTATION(_Products.Nomenclature) AS Nomenklatura, | _Products.Quantity, | _Products.Price, | _Products.Amount |FROM | Dokument.Faktura do zapłaty na rzecz kupującego.Produkty AS _Produkty |GDZIE |. _Produkty Link = &Link"; Pobierz = DataRequest.Execute().Wybierz(); Obszar = Układ.GetArea("Dane"); Podczas gdy Selection.Next() Loop Area.Parameters.Fill(Selection); TabularDocument.Output(Obszar); Koniec cyklu; Etap nr 3. Zwróć dokument arkusza kalkulacyjnego i funkcję drukowania zwróć dokument tabelaryczny;

Dodanie naszego zewnętrznego formularza drukującego do 1C

Przejdź do menu "Serwis - Zewnętrzne formy drukowe i obróbka - Zewnętrzne formy drukowe"

W otwartym oknie tworzenia elementu wykonaj następujące czynności:

  1. Ładowanie zewnętrznego pliku przetwarzania
  2. Wskazujemy, dla jakiego dokumentu konfiguracyjnego (lub katalogu) przeznaczony jest drukowany formularz
  3. Nagrywanie zmian

Drukujmy!

Otwórz dowolny dokument „Faktura do zapłaty na kupującego” (z wypełnioną częścią tabelaryczną „Towary”, bo tam dostajemy dane do wypełnienia), kliknij przycisk „Drukuj”, w oknie, które się otworzy, wybierz NASZE wydrukowane formularz i kliknij „Drukuj”


UWAGA! Ten algorytm programowania nadaje się TYLKO do „zwykłej aplikacji”. Formularze do druku dla konfiguracji w „trybie” Aplikacja zarządzana"różny!

Plik formularza drukowanego pokazany w przykładzie może być

Życie toczy się dalej, zmieniają się przepisy, deweloper wypuszcza aktualizacje konfiguracyjne i znowu mamy wybór: sami zainstalujmy aktualizację lub ponownie wezwijmy programistę, żeby „zainstalował nową wersję”…

Zapoznajmy się z mechanizmem zmiany form drukowych bez zmiany konfiguracji.


W praktyce każdego księgowego korzystającego z 1C zawsze istniała potrzeba modyfikacji konfiguracji dla siebie: ktoś dostosował dokładność ceny lub kwoty na fakturze, ktoś wstawił logo i dostosował wygląd Faktura. Wszystko byłoby dobrze, jednak z czasem takich zmian kumuluje się bardzo dużo i kiedy przychodzi czas na aktualizację wydania, pojawia się dylemat: albo stracić wszystkie wprowadzone zmiany, albo wezwać programistę, aby przeniósł wszystkie zmiany do nowej wersji (np. kurs za dodatkową opłatą). Jak być? Aby w jakiś sposób uprościć aktualizację konfiguracji, programiści stworzyli nowy mechanizm: „Przetwarzanie zewnętrzne, formularze drukowane, przetwarzanie w celu wypełnienia części tabelarycznych”. Dziś przyjrzymy się tylko części tego mechanizmu – drukowaniu formularzy.


Każdego przedmiotu najlepiej uczyć się na przykładzie. Postawmy sobie następujące zadanie: dodaj do konfiguracji możliwość wydruku faktury (document „Sprzedaż towarów i usług”) z logo naszej firmy. Ponadto konieczne jest, aby w nagłówku dokumentu znajdowały się napisy "dostawca" I "kupujący" zostały wyróżnione pogrubioną czcionką i wreszcie konieczne jest, aby na dole dokumentu znajdowało się miejsce na podpis służby bezpieczeństwa, która autoryzowała przesyłkę.


Wprowadźmy dwa dodatkowe warunki:

  • Nowy drukowany formularz powinien zastąpić stary formularz "Faktura"
  • Konfiguracji nie można zmienić, ponieważ chcemy w przyszłości skorzystać z automatycznej aktualizacji konfiguracji

Cóż, jakie jest zadanie? Wydaje się zbyt skomplikowane? Cóż, im bardziej jest to skomplikowane, tym ciekawsze i tym bardziej chcesz je rozwiązać. Potem zabierz się do pracy.


Uruchamiamy naszą bazę danych w trybie Konfiguratora. Otwórz konfigurację wybierając polecenie w menu głównym „Konfiguracja > Otwórz konfigurację”. W żadnym wypadku nie będziemy zmieniać samej konfiguracji. Wykorzystamy go jako prototyp. Tutaj wykonamy główną pracę, ale będziemy edytować przetwarzanie zewnętrzne. Przetwarzanie zewnętrzne tworzymy za pomocą polecenia w menu głównym „Plik > Nowy”. Wybór typu dokumentu „Przetwarzanie zewnętrzne”. Dla pierwszego przetwarzania ustawmy nazwę „Markowa faktura”


Ważny! Nazwa przetwarzania nie może zawierać spacji, podobnie jak nazwy zmiennych.


Teraz zróbmy trochę "plagiat". Skopiujmy układ "Faktura" z dokumentu „Sprzedaż towarów i usług”. Aby to zrobić, znajdziemy go w oddziale "Dokumentacja" drzewo konfiguracyjne. Rozwiń ten wątek klikając na ikonę «+» i znajdź układ, którego potrzebujemy "Faktura"(jest w wątku „Układy”). Aby skopiować ten obiekt należy zaznaczyć ten układ w drzewie i uruchomić polecenie „Edytuj > Kopiuj”(to samo działanie ma miejsce w przypadku kombinacji CTRL+C). Przejdźmy teraz do stworzonego przez nas przetwarzania, wybierz etykietę w drzewie „Układy” i w menu głównym wybierz pozycję - „Edycja > Wklej” (CTRL+V). Wynik powinien wyglądać jak na rysunku 1.


Teraz kliknij dwukrotnie, aby otworzyć układ.

Co to jest „układ”

Powiedzmy kilka słów o celu układu.

Układ- składowanie "cegiełki", obszary, z których niczym cegły buduje się dokument tabelaryczny, który zwykliśmy nazywać formą drukowaną. Obszary definiowane są za pomocą przekrojów poziomych i pionowych lub ich przecięć. Nasz układ ma tylko sekcje poziome: „Nagłówek”, „Dostawca”, „Kupujący”, „Nagłówek tabeli”, „Wiersz” (patrz rys. 2). Obszar to zbiór komórek. Podobnie jak w MS Excel, komórki można łączyć, zmieniać kolory tekstu i tła, czcionki itd. Wszystkie ustawienia komórki można przeglądać i zmieniać w oknie właściwości komórki. Możesz wywołać okno ustawień, klikając komórkę prawym przyciskiem myszy i wybierając pozycję menu kontekstowego "Nieruchomości"(ten sam efekt osiąga się za pomocą skrótu klawiaturowego Alt+Enter).


Komórka może zawierać jeden z trzech typów wartości:

  1. tekst– wartość tego typu zostanie wydrukowana w tej samej formie;
  2. parametr– komórka tego typu zawiera nazwę zmiennej, której wartość zostanie wydrukowana.
  3. próbka– komórki tego typu stanowią kombinację pierwszej i drugiej opcji. Komórka może zawierać tekst i zmienne. Aby program mógł odróżnić tekst od zmiennej, zmienne muszą być ujęte w nawiasy kwadratowe: „Dzisiaj jest [data]”.

Ważny! Edytor tabel wyświetla wartości komórek drugiego i trzeciego typu w nawiasach trójkątnych. Na rysunku 2 znajduje się komórka z tekstem "Kupujący"- wygląda jak tekst i znajduje się po prawej stronie komórki „Prezentacja kupującego”- parametr.

Dlaczego to wszystko mówię? Teraz wiesz, w których komórkach możesz łatwo zmienić zawartość, a w których zmiana czegokolwiek jest niepożądana, ponieważ będziesz musiał wprowadzić zmiany w algorytmie drukowania.

Wróćmy teraz do naszego zadania. Stworzyliśmy obróbkę, skopiowaliśmy układ i jesteśmy gotowi zmodyfikować go według własnych upodobań. Najpierw przyjrzyjmy się temu bliżej.

Co zawiera układ do druku

Struktura układu wszystkich dokumentów jest bardzo podobna. Po dokładnym zapoznaniu się z jednym dokumentem możemy zrozumieć inne. Pierwsza sekcja "Tytuł". Po wyświetleniu tej sekcji zostanie wygenerowany nagłówek dokumentu składający się z typu, daty i numeru dokumentu. Po nim następują sekcje „Dostawca” i „Kupujący”, w którym program wyświetli odpowiednio informację o dostawcy i odbiorcy. Następna część jest bardziej interesująca "Dodatkowe informacje", które programiści wykorzystują do wyświetlania innych informacji na dokumencie, na przykład informacji o umowie wraz z jej numerem i datą. Osobliwością tej sekcji jest to, że można ją wyświetlać wiele razy i za każdym razem może zawierać inne informacje. Co dokładnie wydrukować i kiedy jest opisane w algorytmie drukowania.

To kończy nagłówek dokumentu. Po nagłówku zwykle następuje sekcja tabelaryczna. Co ciekawe, układ opisuje dwie opcje wyświetlania części tabelarycznej: „Nagłówek tabeli”, „String” i „Miejsca tabeli nagłówka” I „Miejsce ciągu”. W zależności od tego, czy kolumna jest wypełniona, czy nie „Mest” w dokumencie zostanie zastosowana pierwsza lub druga opcja wyświetlania części tabelarycznej dokumentu. Dociekliwy czytelnik prawdopodobnie już się zastanawiał: dlaczego w sekcji wyjściowej nagłówka "Cena" I "Suma" są umieszczone w nawiasach trójkątnych, jak gdyby były zmiennymi? Zgadza się – są to zmienne, w których w zależności od ustawień dokumentu wyświetli się napis "Cena", „Cena z VAT” Lub „Cena bez VAT” i podobnie dla kwoty.

Cóż, poniżej układu znajdują się sekcje, za pomocą których wyświetlane są wyniki dokumentu i podpisu.

Edycja układu

Byłoby miło umieścić logo nad informacjami o dostawcy i nabywcy. Sugeruję edycję obszaru układu "Tytuł". Konieczne jest zmniejszenie rozmiaru komórki zawierającej zawartość „Tekst tytułu”. Komórka ta składa się z kilku połączonych komórek. Możliwość zmiany rozmiaru w następujący sposób:

  1. Skopiujmy ostrożnie zawartość scalonej komórki „Tekst tytułu”(w tym celu należy zaznaczyć komórkę i użyć polecenia „Edycja > Kopiuj” lub skrót klawiaturowy CTRL+C)
  2. Po wybraniu tej komórki należy wybrać pozycję w menu głównym „Tabela – Scal”, co doprowadzi do odwrotnego efektu - scalona komórka zostanie podzielona na wiele oryginalnych komórek
  3. Teraz zaznaczmy mniejszą liczbę komórek - zamiast komórki 2 w kolumnie zaczniemy scalanie od kolumny 6, kończąc na kolumnie 32 - i ponownie kliknij przycisk "Łączyć"
  4. Zespół „Edycja > Wklej” (CTRL+V) wstaw zawartość poprzedniej scalonej komórki do nowej scalonej komórki
  5. Po prostu usuwamy uwolnione komórki w kolumnach 2 – 5 (zaznacz je i naciśnij klawisz Delete)

Teraz możesz wstawić zdjęcie z logo w wolne miejsce. W tym celu należy wybrać pozycję w menu „Stół > Obrazy > Obraz...”. Znajdź na dysku plik z naszym logo i kliknij „ OK" Teraz przenieśmy obraz na wolne miejsce. Wynik powinien wyglądać jak na rysunku 3.


Teraz wyróżnijmy wartości w komórkach pogrubioną czcionką "Dostawca" I "Kupujący"(ryc. 4). Aby to zrobić, znajdź parametr we właściwościach komórki "Czcionka" i ustaw styl na pogrubiony.



I na koniec pozostaje dodać podpis służby bezpieczeństwa. Tę informację zamieścimy w dziale „Podpisy”. Aby uzyskać miejsce na podpisy należy rozwinąć sekcję. Wybierz linię 37, kliknij ją prawym przyciskiem myszy i wybierz "Zwiększać" i tak dalej dwa razy. W jednej z dodanych linijek umieścimy miejsce na podpis służby bezpieczeństwa. W rezultacie wszystko powinno wyglądać jak na rysunku 5.



Ważny! W typowa konfiguracja używane są dwa języki: rosyjski i ukraiński. Układ przechowuje reprezentację tekstu w obu językach (projekt komórki jest ogólny). Aby wejść do dodanej przez nas ukraińskiej wersji napisu należy przejść do właściwości komórki i do pola "Tekst" naciśnij przycisk "szukaj". Otworzy się okno do wprowadzania reprezentacji tekstowych w różnych językach (ryc. 6).

Jak zapewnić druk

Tak więc układ jest gotowy. Teraz czas na pracę nad algorytmem jego wydruku.

Abyśmy mogli bezboleśnie zintegrować ten układ z konfiguracją i z niego skorzystać, stworzone przez nas przetwarzanie musi spełniać następujące warunki:

  1. Musisz utworzyć rekwizyty w przetwarzaniu „Połączenie obiektu” z typem „Dowolne łącze”
  2. Musisz utworzyć procedurę w module przetwarzania „Drukuj() Eksport” nie ma parametrów i należy je określić słowo kluczowe "Eksport"

Punkt pierwszy jest potrzebny, aby algorytm drukujący wiedział, skąd wziąć dane do druku, a drugi to sam algorytm drukujący. Spełnijmy te warunki.

W panelu okna wybierz okno do edycji naszego przetwarzania (na rysunku 7). Otworzy się okno z drzewem obiektów do naszej obróbki. Wybór oddziału "Przybory" i naciśnij przycisk "Dodać",. Otworzy się okno właściwości atrybutu. Wprowadźmy nazwę - „Połączenie obiektu” i podaj typ „Dowolne łącze”. Teraz możemy przejść do tekstu modułu wydruku. Zamiast tego nie napiszemy go od zera; skopiujemy go z dokumentu „Sprzedaż towarów i usług”.



Aby to zrobić, znajdź w drzewie konfiguracyjnym wśród dokumentów „Sprzedaż towarów i usług”, kliknij go prawym przyciskiem myszy i wybierz „Moduł otwartego obiektu”(patrz rysunek 8).



Spowoduje to otwarcie modułu dokumentów. Potrzebujemy pierwszej funkcji "Wydrukuj dokument". Jego tekst należy zaznaczyć i skopiować. Bardzo wygodnie jest podświetlić tekst funkcji, gdy jest ona zwinięta, ale musisz także zaznaczyć linię pod nią, w przeciwnym razie ryzykujesz skopiowaniem samego tytułu.

Zobacz na rysunku 9, podświetliliśmy tytuł i linię pod nim. Następnie skopiuj go do schowka. Menu główne „Edytuj > Kopiuj” (lub CTRL+C).



Zapamiętaliśmy tekst w schowku, teraz przejdźmy ponownie do przetwarzania „Markowa faktura”. Kliknij przycisk „Akcje > Otwórz moduł obiektu”(ryc. 10).



Wklej skopiowany tekst: „Edycja > Wklej” (lub CTRL+V).

Teraz konieczna jest niewielka edycja skopiowanego tekstu, ponieważ został on napisany w celu wydrukowania dokumentu z samego dokumentu i zbieramy go z przetwarzania zewnętrznego. Aby to zrobić, potrzebujesz:

  1. Zmień nazwę funkcji na „Drukuj”
  2. Zastępować „Ten obiekt” NA „Połączenie obiektu”
  3. Zastępować „Ten obiekt” NA „Połączenie obiektu”
  4. Zastępować „Konto bankowe organizacji” NA „Link do konta bankowego obiektu.Organizacja”
  5. Zastępować „Produkty. Podsumowanie” NA „LinkDoObiektu.Produktów.Razem”

Do tych działań można wykorzystać pozycję menu głównego „Edytuj > Zamień”.

Następnie należy sprawdzić składnię. Jest na to magiczna kombinacja: CTRL+F7. W rezultacie powinien pojawić się następujący komunikat: „Nie znaleziono błędów składniowych!”

Cóż, w ten sposób zakończyliśmy całą brudną robotę. Teraz możemy zapisać wyniki naszej pracy np. w pliku „Faktura markowa.epf”. W tym celu należy uaktywnić okno tego przetwarzania i zapisać je za pomocą menu głównego programu „Plik > Zapisz jako…”. Nazwa pliku przetwarzania – „Faktura markowa.epf”(będzie oferowana domyślnie). Możesz zapisać go tymczasowo na pulpicie, aby później móc go szybciej znaleźć.

Ważny! Jak widzieliście, nie dokonaliśmy żadnych zmian w naszej konfiguracji. W przypadku wszystkich opisanych powyżej działań nie trzeba nawet usuwać go ze wsparcia (to znaczy włączać możliwość zmiany).

Podłączenie przetwarzania zewnętrznego do konfiguracji

Teraz możemy połączyć przetwarzanie z naszą fakturą. Aby to zrobić, uruchom w trybie. Przejdź do menu "Praca", gdzie znajdują się trzy punkty związane z mechanizmem „Obróbka zewnętrzna, druk formularzy, obróbka do wypełnienia części tabelarycznych”. W naszym przypadku potrzebujemy tylko przedmiotu „Formy drukowe zewnętrzne”(patrz rys. 11).



Spowoduje to otwarcie katalogu. „Przetwarzanie zewnętrzne”, z wyborem według rodzaju „formularze drukowane”. Będzie przechowywać listę wszystkich druków zewnętrznych, ze wskazaniem, do jakich dokumentów służą i w jakich przypadkach należy je okazać.



Ważny! Samo przetwarzanie będzie zapisane w bazie danych wraz z innymi danymi, czyli po zapisaniu przetwarzania w bazie nie będzie nam już potrzebny plik zewnętrzny.

Musimy utworzyć nowy element w katalogu. Kliknij Wstawić. Przyjrzyjmy się teraz zawartości elementu. Dodajemy znaczenie nazwie krótki opis istota tej formy, np. „Faktura firmowa”. Jak każdy inny katalog, również i ten zawiera kod. Zostawmy to jako domyślne. Atrybut type jest domyślnie wypełniony i nie można go edytować – „Wydrukuj formularz”. Ostatnim elementem nagłówka jest komentarz. Tutaj jak zwykle jest więcej szczegółów na temat przeznaczenia formularza drukarskiego. Oprócz nagłówka elementy tego katalogu mają dwie zakładki. Druga zawiera informację o ograniczeniu praw dostępu do tego przetwarzania. Ten temat wykracza poza zakres tego artykułu (o tym i innych ustawieniach praw dostępu porozmawiamy bez modyfikowania konfiguracji w jednym z nadchodzących numerów).

Przyjrzyjmy się bliżej pierwszej zakładce.

Zakładka zawiera cztery kolumny. Reprezentacja obiektu– rodzaj dokumentu, dla którego chcielibyśmy zastosować naszą formę drukową,

Wybór– warunek, pod jakim drukowany formularz powinien być dostępny. Przykładowo przeprojektowaliśmy drukowaną formę faktury i przetłumaczyliśmy ją na język angielski. I chcemy dla klientów z folderu "Europejski" zamiast standardowego drukowanego formularza "Faktura sprzedaży" był opublikowany Nowa forma, NA język angielski. Aby to zrobić, możesz użyć kolumny "Wybór". Przykład takiego doboru pokazano na rysunku 13.



Ale w naszym zadaniu nie są potrzebne żadne selekcje.

Plik formularza do druku– wskazuje plik, z którego należy pobrać układ i procedurę drukowania. W tej komórce musisz wybrać plik, który zapisaliśmy na pulpicie.

Wymienna płyta drukująca– jeśli chcemy, aby stworzony przez nas formularz drukowany zastępował jeden ze standardowych dla tego dokumentu, to musimy wskazać, który należy wymienić. Jeśli nie ma nic do wyboru, pojawi się dodatkowy drukowany formularz.

W naszym przypadku musimy „Markowa faktura” została wydrukowana zamiast zwykłej faktury. W tym celu wybierz w tym polu "Faktura sprzedaży".

Teraz zapiszmy ten element. I otwórz dowolną fakturę.

Powinno to wyglądać tak, jak pokazano na rysunku 14.



Cóż, na tym kończy się zadanie, które postawiliśmy sobie na początku artykułu. Wierzymy, że udało nam się zobrazować możliwości, jakie otwiera przed użytkownikiem zastosowanie mechanizmu przetwarzania zewnętrznego.

Aby utrwalić swoje umiejętności, możesz spróbować samodzielnie dodać do konfiguracji dodatkowy drukowany formularz „Do magazynu” dla dokumentu „Odbiór towarów i usług”, który powtarzałby zwykłą fakturę, ale bez cen i kwot, a także zawierają pola do wpisania przyjętej ilości.

Jak stworzyć zewnętrzną formę drukową na podstawie gotowej? 1C 8.0/8.1
_______________________________________________________

Zakłada się, że posiadasz już wiedzę zdobytą z lektury tematu, dlatego szczegółowo omawiane są tylko nowe pytania.

A więc: musieliśmy nieco zmienić układ faktury do zapłaty dla kupującego (będziemy pracować z konfiguracją Księgowość 1.6):
- usuń nagłówek w układzie faktury do zapłaty (tekst „Uwaga! Płatność tej faktury..., wymaga pełnomocnictwa i paszportu.”)
- zmienić prezentację dostawcy (czyli nas) na żądanie banku
(problem od prawdziwe życie przy czasie pracy 15-20 minut)

Tworzenie przetwarzania będzie składać się z dwóch etapów:
1 - stworzenie kompletnego odpowiednika oryginalnej formy drukarskiej
2 - modyfikacja pod własne potrzeby

Scena pierwsza

Najpierw utwórzmy puste przetwarzanie zewnętrzne, ale nie będziemy tworzyć układu -
skopiujemy go do późniejszej modyfikacji z głównej konfiguracji. Aby skopiować układ do przetwarzania z konfiguracji, wystarczy
zaznacz go w drzewie obiektów, a następnie przejdź do menu Edytować-Kopiuj, następnie w drzewie danych przetwarzania w gałęzi układów wybierz
w menu Edytować-Wstawić Więcej wygodnym sposobem- bezpośrednio przeciągnij myszką ten układ z głównej konfiguracji do drzewa danych
przetwarzanie.

I piszemy ten kod:

Funkcja Print() Eksport //... tutaj napiszemy coś później Koniec funkcji

Co zrobiliśmy: aby zewnętrzny formularz drukujący zadziałał wymagana jest funkcja eksportu (czyli widoczna dla innych obiektów konfiguracyjnych) Foka,
co powinno zwrócić wygenerowany dokument arkusza kalkulacyjnego do programu głównego w celu podglądu i późniejszego wydruku.

Aby nie wymyślać koła na nowo, zobaczmy, jak powstaje dokument arkusza kalkulacyjnego w głównej konfiguracji: w tym celu przejdziemy
do modułu dokumentów Faktura płatna Kupującemu Znajdźmy funkcję w module Foka, który wygląda mniej więcej tak:

// Procedura drukuje dokument. Możesz skierować drukowanie na // ekran lub drukarkę i wydrukować wymaganą liczbę kopii. // // Jako parametr przekazywana jest nazwa układu wydruku, // korzystając z przekazanej nazwy znajdujemy nazwę układu zgodnie z nią. // // Parametry: // LayoutName - ciąg znaków, nazwa układu. // Procedura Print(LayoutName, Number of Instances = 1, OnPrinter = False, DirectPrint = False) Export // Uzyskaj kopię dokumentu do wydrukowania If LayoutName = "Faktura" then TabDocument = PrintOrderInvoice(LayoutName); koniecJeśli; Universal Mechanisms.PrintDocument(TabDocument, liczba instancji, OnPrinter, WorkWithDialogs.GenerateDocumentTitle(ThisObject, ""), DirectPrint); Procedura końcowa // Drukuj

W naszym przypadku okazuje się, że aby wydrukować fakturę, do tej funkcji przekazywany jest parametr Nazwa układu równy zmiennej łańcuchowej "sprawdzać",
jeśli spojrzymy na kod, zobaczymy, że funkcja służy do generowania standardowej faktury DrukujZamówienieFaktura(...), czyli teraz
Musimy go znaleźć w kodzie modułu dokumentu. Zwykle znajduje się tuż nad funkcją foka(...)
Oto skrócony tekst tej funkcji:

// Funkcja generuje dokument tabelaryczny z wydrukowanym formularzem zamówienia lub faktury, // opracowany przez metodologów // // Wartość zwracana: // dokument arkusza kalkulacyjnego- wygenerowany drukowany formularz // Funkcja PrintOrderInvoice(Type) Request = New Request; Request.SetParameter("CurrentDocument", ThisObject.Link); // ...kod programu...Obszar układu.Parametry.Wypełnienie(Nagłówek); TabDocument.Output(Obszar układu); zwróć dokument Tab; EndFunction // PrintOrderInvoice()

Jak widzimy na końcu tej funkcji zwracany jest wygenerowany dokument arkusza kalkulacyjnego - wystarczy że skopiujemy cały tekst
tę funkcję (zaczynając od linii „Request = New Query;” i kończąc na linii „Return TabDocument;”) i wstaw ją do treści przygotowanej funkcji
Foka w naszym module przetwarzania.

Po wstawieniu tekstu funkcyjnego spróbujmy zapisać przetwarzanie. Konfigurator ostrzeże nas, że wykrył błędy w module i wyświetlaczu
je w oknie komunikatów serwisowych. Oto przykładowy test tych błędów:

(ExternalProcessing.ExternalProcessing1(102,7)): Zmienna nie jest zdefiniowana (Typ) Jeśli<>Typ = „Konto” Następnie (ExternalProcessing.ExternalProcessing1(224,7)): Zmienna nie jest zdefiniowana (Typ) Jeśli<>Typ = „Konto” Następnie (ExternalProcessing.ExternalProcessing1(107,15)): Zmienna nie jest zdefiniowana (StructuralUnit) IfValueType(<>StructuralUnit) = Type("DirectoryLink.BankAccounts") Następnie (ExternalProcessing.ExternalProcessing1(108,40)): Zmienna nie jest zdefiniowana (StructuralUnit) Bank = ?(NIE ValueFilled(<>StructuralUnit.BankForSettlements), StructuralUnit.Bank, StructuralUnit.BankForSettlements); (ExternalProcessing.ExternalProcessing1(108,77)): Zmienna niezdefiniowana (StructuralUnit) Bank = ?(NIE ValueFilled(StructuralUnit.BankForSettlements),<>StructuralUnit.Bank, StructuralUnit.BankForSettlements); (ExternalProcessing.ExternalProcessing1(108,102)): Zmienna niezdefiniowana (StructuralUnit) Bank = ?(NIE ValueFilled(StructuralUnit.BankForSettlements), StructuralUnit.Bank,<>StructuralUnit.BankForSettlements); (ExternalProcessing.ExternalProcessing1(112,38)): Zmienna niezdefiniowana (StructuralUnit)AccountNumber = ReturnAccount(<>Jednostka Strukturalna); (ExternalProcessing.ExternalProcessing1(123,21)): Zmienna nie jest zdefiniowana (StructuralUnit) Jeśli PustyString(<>StructuralUnit.CorrespondentText) Następnie (ExternalProcessing.ExternalProcessing1(125,27)): Zmienna nie jest zdefiniowana (StructuralUnit) Jeśli ValueFilled(<>StructuralUnit.BankForSettlements) Następnie (ExternalProcessing.ExternalProcessing1(126,59)): Zmienna nie jest zdefiniowana (StructuralUnit)CorrespondentText =CorrespondentText + "r/s" +<>StructuralUnit.AccountNumber (ExternalProcessing.ExternalProcessing1(127,15)): Zmienna niezdefiniowana (StructuralUnit) + " in " +<>StructuralUnit.Bank + " " + StructuralUnit.Bank.City; (ExternalProcessing.ExternalProcessing1(127,47)): Zmienna niezdefiniowana (StructuralUnit) + " w " + StructuralUnit.Bank + " " +<>Jednostka strukturalna.Bank.Miasto; (ExternalProcessing.ExternalProcessing1(130,26)): Zmienna niezdefiniowana (StructuralUnit) Tekst odpowiadający =<>StructuralUnit.TextKorespondent; (ExternalProcessing.ExternalProcessing1(112,17)): Procedura lub funkcja o podanej nazwie nie jest zdefiniowana (Zwrot konta) Numer konta =<>ReturnAccount(StructuralUnit);

Przyjrzyjmy się tym błędom:
*** 1. Zmienna nie jest zdefiniowana (Typ)- jeśli spojrzysz na kod źródłowy funkcji, staje się jasne, że zmienna typu była parametrem:
Funkcja PrintInvoiceOrder(Type), usunęliśmy ten parametr. W w tym przypadku- parametr ten zawierał linię z nazwą układu
do druku. Ponieważ wystarczy nam wydrukować tylko jeden układ - zdefiniujmy tę zmienną następująco: zmienimy tytuł
Funkcje Foka w module przetwarzającym:

Funkcja Drukuj(Typ = „Konto”)

Co oznacza ten zapis: oznacza to, że jeśli do funkcji nie został przekazany żaden parametr, to parametr Typ przyjmie wartość
domyślny "Sprawdzać", czyli to, czego potrzebujemy do pracy.

*** 2. Zmienna niezdefiniowana (StructuralUnit)- ta zmienna jest atrybutem dokumentu Faktura płatna Kupującemu, ponieważ
w module zewnętrznego formularza drukowanego nie widzimy tego atrybutu (nie jesteśmy w treści obiektu dokumentu), tę zmienną uzyskamy poprzez
link do dokumentu, tj. poprzez przetwarzanie szczegółów Odniesienie do obiektu, do którego program przekaże odnośnik do bieżącego dokumentu.
Dodaj następujący wiersz na początku funkcji:

*** 3. Procedura lub funkcja o podanej nazwie nie jest zdefiniowana (Zwrot konta)- funkcja ta jest zdefiniowana (tzn. opisana) w module
document, w związku z tym musimy po prostu całkowicie przenieść kod tej funkcji do naszego przetwarzania.

Zatem teraz moduł przetwarzający wygląda mniej więcej tak:

Funkcja ReturnCurrentAccount(CounterpartyAccount) BankForSettlements = CounterpartyAccount.BankForSettlements; Wynik = ?(BankForSettlements.Empty(), Konto Kontrahenta.Numer Konta, Konto Kontrahenta.Bank.Konto Korespondenta); Wynik zwrotu; Koniec funkcji // Zwrot rachunku bieżącego() // Funkcja generuje dokument tabelaryczny z wydrukowanym formularzem zamówienia lub faktury, // opracowany przez metodologów // // Wartość zwracana: // Dokument tabelaryczny - wygenerowany formularz drukowany // Funkcja Print(Type = „Faktura”) Eksportuj StructuralUnit = ObjectLink.StructuralUnit; Żądanie = Nowe żądanie; Request.SetParameter("CurrentDocument", ThisObject.Link); // ...tekst programu...Obszar układu.Parametry.Wypełnienie(Nagłówek); TabDocument.Output(Obszar układu); zwróć dokument Tab; EndFunction // PrintOrderInvoice()

Jeśli wszystko zostanie wykonane poprawnie, możemy teraz zapisać przetwarzanie i otrzymamy kompletny zewnętrzny analog wbudowanego formularza drukującego.

Etap drugi

Teraz dokonajmy niezbędnych zmian w układzie podczas drukowania (zakładając, że wiesz, jak pracować z układami), a także zmieńmy
tekst dostawcy w nagłówku faktury.

Jak widać z kodu programu, tekst odbiorcy jest wypełniany w tym miejscu:

Jeśli pusty ciąg(StructuralUnit.CorrespondentText) TheCorrespondentText = DostawcaInformacja.FullName; Jeśli wartość jest wypełniona (StructuralUnit.BankForSettlements), wówczas CorrespondentText = CorrespondentText + "account" + StructuralUnit.AccountNumber + " in " + StructuralUnit.Bank + " " + StructuralUnit.Bank.City; koniecJeśli; W przeciwnym razie Tekst korespondencyjny = StructuralUnit.Tekst korespondencyjny; koniecJeśli; LayoutArea.Parameters.ProviderView = CorrespondentText;

Klient postawił warunek, aby tekst w tym polu był pobierany z nazwy płatnika w zleceniach płatniczych dnia
transfer podatków. Tekst ten jest przechowywany w atrybucie elementu katalogu Organizacje- jedyne co nam pozostało to
Uzyskać dostęp do niego. Jeśli przyjrzymy się szczegółom dokumentu, zobaczymy, że zawierają one informacje o organizacji,
zgodnie z którą dokument został wystawiony, a potrzebny nam tekst zapisany jest w szczegółach organizacji – już wiemy jak uzyskać dostęp:

Area.Parameters.SupplierView = LinkToObject.Organization.Name of PayerWhen Transfering Taxs;

To wszystko – układ jest gotowy do użycia i można go podłączyć do konfiguracji!

W temacie można podjąć leczenie, które powinno skutkować w końcu.

PS. Dyskusje, pytania, sugestie - wszystko na temat.