Dom - Postavljanje interneta
Kako programski ispuniti i otvoriti obrazac novog dokumenta? Kako otvoriti formu postojećeg objekta? 1s 8.3 otvorite novi dokument.
Dobar dan svima!
Mislim da će informacije u ovoj temi biti vrlo korisne mnogim posjetiteljima ovog foruma.
Dugo nisam mogao riješiti problem - kako otvoriti obrazac novog dokumenta tako da se ne otvori prazan, već djelomično programski ispunjen, dok sam dokument još nije zabilježen u bazi podataka? Proveo sam dosta vremena tražeći rješenje za ovaj problem na internetu, posjetio sam mnoge forume na kojima se raspravljalo o ovom problemu, ali samo je nekoliko njih naišlo na rješenja. Najjednostavniji od njih je prvo programski kreirati novi dokument, programski popuniti potrebne detalje, upisati dokument u bazu podataka, a zatim ga otvoriti korisniku. Što ako ga korisnik ne želi spremiti? Što ako se predomisli i zatvori otvorenu formu? U tom slučaju će već snimljeni dokument ostati u bazi podataka. A kome trebaju dodatni dokumenti u bazi podataka?
A ako ne spremite dokument, najpopularnija opcija je korištenje metode GetForm ("Dokumenti. Potrebna vrsta dokumenta. Obrazac dokumenta"). Ali u ovom slučaju možete dobiti prazan obrazac dokumenta i jednostavno ga prikazati pomoću metode Open(). Ovo također nije opcija...
Nakon nekog vremena, problem je riješen pomoću funkcije globalnog konteksta "Ispunite vrijednosti svojstava."

Globalni kontekst
FillPropertyValues
Sintaksa:
Ispuni PropertyValues(<Приемник>, <Источник>, <Список свойств>, <Исключая свойства>)
Opis:
Kopira vrijednosti svojstava<Источника>na svojstva<Приемника>. Spajanje se vrši prema imenima svojstava.

Koristeći svoj zadatak kao primjer, želio bih objasniti kako možete koristiti ovu funkciju za ispunjavanje obrasca za novi dokument. Zadatak je bio sljedeći: Postoji jedan dokument (Radni nalog), čiji je rekvizit tabelarnog dijela drugi dokument (Pružanje usluga). Dakle, bilo je potrebno osigurati da se prilikom dodavanja novog dokumenta „Pružanje usluga“ u tabelarnom dijelu „Radnog naloga“ na ekranu prikaže obrazac novog dokumenta „Pružanje usluga“ s detaljima već popunjen, preuzet iz radnog naloga iz kojeg je izazvana izrada. Pritom, sam novi dokument, u trenutku kada se njegov obrazac pojavi na ekranu, još nije evidentiran u bazi. To je trebalo učiniti ako korisnik iznenada odluči ne ispuniti dokument i jednostavno zatvori obrazac.
Evo fragmenta koda s rješenjem problema:

&Na postupku klijenta EnterRecord()RecordForm = GetForm("Document.Provision of Medical Services.ObjectForm"); Fill inPropertyValues(RecordForm.Object,Object,"Date,Specialist,Specialization,Nurse,Execution Status",); // Ispunite vrijednosti detalja čija su imena ista u oba dokumenta TextStr = Elements.Reception.CurrentData; //Podaci trenutnog retka izvornog dokumentaProperty Structure = New Structure; // Struktura sadrži vrijednosti onih detalja koje je potrebno ispuniti na obrascu novog dokumenta, ali koji se ne nalaze u izvornom dokumentu StructureProperties.Insert("Radni nalog", Object.Link); PropertyStructure.Insert("ReceptionTime",TexStr.ReceptionTime); Ispunite PropertyValues(RecordForm.Object,PropertyStructure,"RecordOrder,AppointmentTime",); Obrazac za unos.Otvori(); Kraj postupka

Odnosno, sve operacije izvodimo izravno na klijentu, bez kontakta s poslužiteljem, unutar jedne neovisno kreirane procedure. Zapravo, na ovaj način možete ispuniti i otvoriti obrazac bilo kojeg dokumenta ili referentne knjige. Najprije sam objektima obrasca popunjavao detalje iz jednog obrasca u drugi, a zatim sam objektom “Struktura” u koji sam ubacio detalje koji nedostaju popunio još neke detalje obrasca koji se otvara, a zatim sam otvorio oblik.
Nadam se da će ova tema uštedjeti vrijeme mnogima koji se susreću sa sličnim zadatkom!

Programsko otvaranje obrazaca u upravljanoj 1C aplikaciji značajno se razlikuje od otvaranja u običnoj aplikaciji. Pogledajmo prvo staru metodu. Sastoji se od primanja obrasca i njegovog otvaranja u normalnom ili modalnom načinu (kada se otvori u modalnom načinu, obrazac blokira program).

GetForm() . Otvoren()

Ovo je najsporiji način otvaranja obrazaca. Međutim, omogućuje programsku obradu obrasca prije otvaranja. Za obradu koda morate malo promijeniti:

Obrazac = GetForm( "Dokument. Potvrda o primitku robe i usluga. Obrazac dokumenta") ;
//Ovdje izvodimo radnje s formom
Oblik. Otvoren();

Treba uzeti u obzir da će se po primitku obrasca izvršiti druga procedura događaja WhenCreatedOnServer.

Pogledajmo druge metode koje vam omogućuju brže i praktičnije otvaranje obrazaca u upravljanoj 1C aplikaciji. Ovisno o konkretnoj situaciji, mogu se koristiti različite metode.

1. Kako otvoriti obrazac objekta u upravljanoj aplikaciji ako postoji poveznica na njega.

U ovom slučaju, sve je krajnje jednostavno.

RefLink = Imenici. Nomenklatura. FindByCode("000000001" ) ;
OpenValue(RefLink) ;

2. Kako otvoriti obrazac za odabir i zatim dobiti odabranu vrijednost.

Za to postoji funkcija UnesiteVrijednost(). Funkcija ima 3 parametra:

  • Varijabla u koju će biti zapisana odabrana vrijednost;
  • Savjet koji će se prikazati u prozoru za odabir;
  • Opis tipova odabranih vrijednosti. Može postojati nekoliko vrsta, au tom slučaju od vas će se tražiti da odaberete vrstu prije odabira određene vrijednosti.

Kao rezultat izvršavanja funkcije otvorit će se zadani obrazac za odabir objekta navedene vrste.

Varijabilna vrijednost;
Niz= novi niz;
Niz. Dodaj(Upišite( "Veza imenika. Nomenklatura") ) ;
Niz. Dodaj(Upišite( "DirectoryLink. Protustrane strane") ) ;

Opis tipa= novi opis tipa(niz) ;

Res = EnterValue(Value, "Hint" , TypeDescription) ;

Prethodne metode dopuštale su samo otvaranje zadanih obrazaca za objekte (oblik objekta ili obrazac za odabir). Ako trebate otvoriti prilagođeni obrazac, možete koristiti ovu funkciju OpenForm().

Ova funkcija ima dosta parametara. Pogledajmo neke od njih:

  • Naziv obrasca— ovdje možete odabrati jedan od standardnih oblika objekta, na primjer, Obrazac za odabir ili Obrazac popisa. Ili određeni obrazac koji su izradili programeri.
  • Mogućnosti— omogućuje vam da ga prenesete u obrazac u obrascu strukture neke parametre prije otvaranja, čime se određuju izlazni podaci. Parametri mogu biti bilo koji podaci koji se mogu proslijediti od klijenta do poslužitelja. Parametri proslijeđeni prilikom otvaranja obrasca mogu se obraditi u proceduri WhenCreatingOnServer() na obrascu koji se otvara.
  • Način otvaranja obrazaca— ima 3 opcije: neovisno, blokiranje cijelog sučelja, blokiranje obrasca vlasnika.

Pogledajmo kako se funkcija koristi OpenForm() u raznim situacijama.

3. Kako otvoriti formu postojećeg objekta

Svaki obrazac ima jedan ključni atribut. Označeno je masnim slovima na popisu detalja obrasca i obično se poziva Objekt u obliku elemenata priručnika i dokumenata. Ostali objekti mogu imati drugačije ime. Da biste otvorili obrazac postojećeg objekta, morate proslijediti parametar obrascu koji se otvara Ključ s vrijednošću kao referencom na objekt.

&NaKlijentu
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Parametar. Insert("Ključ" , FindC() ) ;
OpenForm(, Parametar);
Kraj postupka

&Na poslužitelju
Funkcija FindC();
Vratite direktorije. Protustranke. FindByRequisites ("TIN", "745107734623")
EndFunction

4. Kako otvoriti formu novog objekta

Ovdje će poslužiti jednostavna funkcija OpenForm() bez ikakvih parametara.

&NaKlijentu
Procedura Naredba1 (Naredba)
OpenForm( "Imenik. Protustrane. Obrazac objekta") ;
Kraj postupka

5. Kako otvoriti obrazac novog objekta i ispuniti ga na temelju nečega

Morate proslijediti parametar Baza, čija će vrijednost biti referenca na osnovni objekt punjenja. Ovo će pokrenuti postupak ProcessFill().

&NaKlijentu
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Parametar. Insert("Baza", LinkToBuyerAccount) ;
OpenForm( "Dokument. Prodaja roba i usluga. Obrazac objekta", Parametar);
Kraj postupka

Ovaj primjer će stvoriti dokument Prodaja roba i usluga a popunjava se na temelju računa za plaćanje kupcu, čiji je link prenesen.

6. Kako otvoriti formu i na njoj postaviti odabir

Odabir na 1C obrascima može biti jednostavan ili složen. Jednostavan odabir uključuje izraze poput Organizacija = Horns and Hooves LLC. Složeni odabir uključuje druge vrste usporedbe, npr. Na listi. U ovom ćemo članku razmotriti organizaciju jednostavne selekcije, a poseban članak bit će posvećen složenoj selekciji.

Da biste organizirali jednostavan odabir, morate proslijediti parametar s ključem obrascu koji se otvara Izbor, vrijednost će biti struktura u kojoj je ključ naziv polja dinamičkog popisa, a vrijednost podaci koji se traže.

Na primjer, otvorimo obrazac popisa imenika GTD brojevi i tamo napravite odabir prema vlasniku - element imenika Nomenklatura.

&NaKlijentu
Procedura Naredba1 (Naredba)
Parametar= nova struktura;

izbor= nova struktura;
Izbor. Insert("Owner", LinkToNomenclature) ;

Parametar. Umetni("Odabir", Odabir) ;

OpenForm( "Imenik. GTD brojevi. Obrazac popisa", Parametar);
Kraj postupka

7. Kako otvoriti obrazac za upis u registar podataka

Da biste to učinili, trebat će vam ključ za unos u registar podataka.

Ključ za snimanje— to su vrijednosti svih mjerenja i period (ako je registar periodičan). To jest, ključ zapisa su parametri po kojima se zapis može jedinstveno identificirati.

Algoritam otvaranja je sljedeći:

  1. U strukturu unosimo podatke o ključu zapisa s potrebnim vrijednostima.
  2. Dobivenu strukturu postavljamo u niz.
  3. Kreiramo ključ zapisa iz polja.
  4. Formi koja se otvara prosljeđujemo parametar Ključ s ključem snimanja iz koraka 3 kao vrijednošću.

&NaKlijentu
Procedura Naredba1 (Naredba)
Parametar= nova struktura;

KeyParameters= nova struktura;
Ključni parametri. Insert("Nomenklatura", LinkToNomenclature) ;
Ključni parametri. Insert("PriceType", LinkToPriceType) ;
Ključni parametri. Umetni("Razdoblje", Datum) ;

KeyArray = Novi niz;
KeyArray. Dodaj(KljučniParametri) ;

EntryKey = Novo( "Ključ zapisa registra informacija. Nomenklatura cijena", niz ključeva);

Parametar. Umetni("Ključ",Ključ za snimanje) ;

OpenForm( "Registar informacija. Cijene nomenklature. Obrazac evidencije", Parametar);
Kraj postupka

Dom Za programere početnike Naučite programirati

Kako otvoriti formu postojećeg objekta?

Prilikom otvaranja obrasca postojećeg objekta, osim naziva obrasca potrebno je navesti i objekt čiju formu treba otvoriti. Da biste to učinili, upotrijebite parametar obrasca Key i poveznicu na predmet koji nas zanima.

Na primjer, ako iz obrasca popisa organizacija trebate otvoriti obrazac organizacije na kojem se nalazi kursor, to možete učiniti na sljedeći način:

Parametre forme prosljeđujemo u obliku strukture, pri čemu naziv elementa strukture odgovara nazivu parametra forme, a vrijednost je vrijednost na koju želimo postaviti parametar forme.

Ako želite otvoriti ne glavnu, već proizvoljnu formu objekta kreiranu u konfiguratoru, umjesto standardnog naziva glavne forme (ObjectForm) označite riječ Forma iza koje slijedi točka - naziv forme kreirane u konfigurator.

Na primjer:

ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = New Structure("Key", ReferenceToDirectoryElement); OpenForm("Directory.Organizations.Form.UniversalObjectForm",FormParameters);

Treba napomenuti da u slučaju kada osim poveznice na objekt ne treba prosljeđivati ​​nikakve parametre formi koja se otvara, a potrebna je glavna forma postojećeg objekta, možete koristiti jednostavniju metodu - otvorite obrazac pomoću procedure OpenValue():

OpenValue(Stavke.List.TrenutniRed);

Ova metoda je manje svestrana, ali u nekim slučajevima štedi vrijeme i trud. Na primjer, u razmatranom slučaju, jedan takav red može zamijeniti cijelu proceduru od tri retka koju smo ranije napisali.

Međutim, potrebno je biti oprezan pri korištenju ovog postupka. U nekim slučajevima to može uzrokovati dodatne pozive poslužitelju, na primjer, kada trebate otvoriti obrazac stavke hijerarhijskog imenika. Prilikom korištenja ove procedure, platforma će uputiti dodatni poziv poslužitelju kako bi utvrdila je li element grupa ili ne, budući da se moraju otvoriti različiti obrasci za element i za grupu.

Istovremeno, ove informacije mogu biti unaprijed poznate programeru unutar njegovog algoritma, a pomoću funkcije OpenForm() programer može otvoriti željeni obrazac bez dodatnih poziva poslužitelju, odmah navodeći standardni naziv glavnog oblik.



 


Čitati:



Dizajn i princip rada

Dizajn i princip rada

Optički disk je skupni naziv za medije za pohranu podataka izrađene u obliku diskova, s kojih se čitanje vrši pomoću optičkog...

Napravite portret iz fonta koristeći Photoshop Portraits iz slova

Napravite portret iz fonta koristeći Photoshop Portraits iz slova

Mnogo je opcija za pretvaranje fotografija u vizualna remek-djela, a jedna od njih je vrlo atraktivna - portret iz teksta...

Kako ponovno instalirati program na računalu Kako ponovno instalirati igru ​​bez brisanja

Kako ponovno instalirati program na računalu Kako ponovno instalirati igru ​​bez brisanja

Ako je igra preuzeta s interneta kao slika diska (obično datoteke u ISO i MDF formatu), tada će vam za instalaciju trebati...

Armenski satelitski kanali Armenski kanali na Hotbirdu

Armenski satelitski kanali Armenski kanali na Hotbirdu

Danas apstrahirajmo malo od Tricolora, NTV Plus i plaćene televizije općenito. Postoji mnogo satelita koji proizvode...

feed-image RSS