Lai atvērt atlases formu ar atlasi 1s 8.2 (regulāras formas), mums ir jāveic dažas darbības. Mēs to saņemsim vispirms. Pēc tam mēs iestatīsim atlasi un atvērsim to programmatiski, šeit ir koda piemērs:
Iepriekš minētajā piemērā mēs apskatījām kā iestatīt atlasi atlases veidlapā pēc noteiktas vērtības. Tagad aplūkosim situāciju, kurā ir jāaizstāj vairākas vērtības, piemēram, tas var būt masīvs vai izlādēts no vaicājuma rezultāta. Šī ir atlase 1c ievades laukā ar vairākām nozīmēm.
Pirmkārt, mēs iegūstam atlases veidlapu, parametros nododam “Elementu” (īpašnieku), iestatām atlases režīma karogu. Pēc tam mēs izveidojam vērtību sarakstu un masīvu, mēs atzīmējam, ka kā atlase, iestatot salīdzināšanas veidu sarakstā, objekts var būt tikai ar tipu Vērtību saraksts. Mēs pievienojam elementus masīvam, pēc tam ielādējam šo masīvu vērtību sarakstā, ko pēc tam iestatījām atlasē. Tāpat neaizmirstiet iespējot lietošanas karogu šī izlase un iestatiet salīdzināšanas skatu.
Tagad apsvērsim atlase ievades laukā pārvaldītajā veidlapā 1C 8.3. Veidlapā atradīsim mūs interesējošo elementu, kurā iestatīsim atlasi, mūsu gadījumā tas ir lauks “Organizācija”. Atrodam notikumu “Atlases sākums”, uzklikšķinām uz palielināmā stikla un atrodamies procedūrā. Mēs redzam parametru Selection Data; šis parametrs ir ValueList tipa. Lai ierobežotu atlasi ar nepieciešamajiem elementiem, mums ir jāaizpilda Vērtību saraksts. Mēs varam atlasīt elementus tikai serverī, tāpēc mēs izveidojam procedūru ar &OnServer kompilācijas direktīvu. Šajā procedūrā aizpildiet atlases datus.
Programmatiski atverot veidlapas pārvaldīta lietojumprogramma 1C ievērojami atšķiras no to atvēršanas parastajā lietojumprogrammā. Vispirms apskatīsim veco metodi. Tas sastāv no veidlapas saņemšanas un pēc tam tās atvēršanas parastajā vai modālajā režīmā (atverot modālā režīmā, veidlapa bloķē programmu).
GetForm() . Atvērt ()
Šī ir lēnākā veidlapu atvēršanas metode. Tomēr tas ļauj programmatiski apstrādāt veidlapu pirms tās atvēršanas. Lai apstrādātu kodu, jums ir nedaudz jāmaina:
Form = GetForm( "Dokuments. Preču un pakalpojumu saņemšana. Dokumenta veidlapa")
;
//Šeit veicam darbības ar formu
Veidlapa. Atvērt ();
Jāņem vērā, ka, saņemot veidlapu, tiks veikta cita pasākuma procedūra WhenCreatedOnServer.
Apskatīsim citas metodes, kas ļauj ātrāk un ērtāk atvērt veidlapas pārvaldītā 1C lietojumprogrammā. Atkarībā no konkrētās situācijas var izmantot dažādas metodes.
Šajā gadījumā viss ir ārkārtīgi vienkārši.
RefLink = Katalogi. Nomenklatūra. FindByCode("000000001" );
OpenValue(RefLink) ;
Tam ir funkcija EnterValue(). Funkcijai ir 3 parametri:
Funkcijas izpildes rezultātā tiks atvērta noklusējuma atlases forma norādītā tipa objektam.
Mainīgā vērtība;
Masīvs= jauns Masīvs;
Masīvs. Add(type( "DirectoryLink.Nomenclature")
)
;
Masīvs. Add(type( "DirectoryLink. Darījuma partneri")
)
;
TypeDescription= new TypeDescription(Array) ;
Res = EnterValue(Vērtība, "Padoms" , TipaApraksts) ;
Iepriekšējās metodes ļāva atvērt tikai objektu noklusējuma formas (objekta formu vai atlases formu). Ja jums ir jāatver pielāgota veidlapa, varat izmantot funkciju OpenForm ().
Šai funkcijai ir diezgan daudz parametru. Apskatīsim dažus no tiem:
Apskatīsim, kā funkcija tiek izmantota OpenForm() dažādās situācijās.
Katrai veidlapai ir viens atslēgas atribūts. Veidlapas informācijas sarakstā tas ir izcelts treknrakstā un parasti tiek saukts Objekts uzziņu grāmatu un dokumentu elementu formās. Citiem objektiem var būt cits nosaukums. Lai atvērtu esoša objekta formu, atveramajai formai ir jānodod parametrs Atslēga ar vērtību kā atsauci uz objektu.
&OnClient
Procedūras komanda 1 (komanda)
Parametrs = jauna struktūra;
Parametrs. Insert("Atslēga" , FindC() );
OpenForm(, Parametrs) ;
Procedūras beigas
&OnServer
Funkcija FindC();
Atgriezt direktorijus. Darījuma partneri. FindByRequisites ("TIN", "745107734623")
EndFunction
Šeit noderēs vienkārša funkcija OpenForm() bez jebkādiem parametriem.
&OnClient
Procedūras komanda 1 (komanda)
OpenForm( "Katalogs. Darījuma partneri. Objekta veidlapa")
;
Procedūras beigas
Jums ir jānodod parametrs Bāze, kuras vērtība būs atsauce uz aizpildījuma bāzes objektu. Tas sāks procedūru ProcessFill().
&OnClient
Procedūras komanda 1 (komanda)
Parametrs = jauna struktūra;
Parametrs. Insert("Bāze", LinkToBuyerAccount) ;
OpenForm( "Dokuments. Preču un pakalpojumu pārdošana. Objekta forma", Parametrs) ;
Procedūras beigas
Šis piemērs izveidos dokumentu Preču un pakalpojumu pārdošana un aizpildīta, pamatojoties uz rēķinu par samaksu pircējam, uz kuru tika nosūtīta saite.
1C veidlapu atlase var būt vienkārša vai sarežģīta. Vienkārša atlase ietver tādus izteicienus kā Organizācija = Horns and Hooves LLC. Sarežģītā atlase ietver citus salīdzināšanas veidus, piem. Sarakstā. Šajā rakstā mēs apsvērsim vienkāršas atlases organizēšanu, un atsevišķs raksts tiks veltīts sarežģītai atlasei.
Lai organizētu vienkāršu atlasi, atveramajai veidlapai ir jānodod parametrs ar atslēgu Atlase, vērtība būs struktūra, kurā atslēga ir lauka nosaukums dinamiskais saraksts, un vērtība ir nepieciešamie dati.
Piemēram, atveram direktoriju saraksta formu GTD numuri un veiciet atlasi pēc īpašnieka - direktorija elementa Nomenklatūra.
&OnClient
Procedūras komanda 1 (komanda)
Parametrs = jauna struktūra;
atlase= jauna Struktūra;
Atlase. Insert("Īpašnieks", LinkToNomenclature) ;
Parametrs. Insert("Atlase", Atlase) ;
OpenForm( "Directory.GTD numbers.List form", Parametrs) ;
Procedūras beigas
Lai to izdarītu, jums būs nepieciešama informācijas reģistra ievades atslēga.
Ieraksta atslēga— tās ir visu mērījumu un perioda vērtības (ja reģistrs ir periodisks). Tas nozīmē, ka ieraksta atslēga ir parametri, pēc kuriem ierakstu var unikāli identificēt.
Atvēršanas algoritms ir šāds:
&OnClient
Procedūras komanda 1 (komanda)
Parametrs = jauna struktūra;
KeyParameters= jauna struktūra;
Galvenie parametri. Insert("Nomenklatūra", LinkToNomenklatūra) ;
Galvenie parametri. Insert("Cenas veids", LinkToCenas veids) ;
Galvenie parametri. Insert("Periods", Datums) ;
KeyArray = jauns masīvs;
KeyArray. Pievienot(KeyParameters) ;
EntryKey = New( "Informācijas reģistrsRecord Key.Cenu nomenklatūra", KeyArray) ;
Parametrs. Insert("Atslēga", Ieraksta atslēga) ;
OpenForm( "Informācijas reģistrs. Nomenklatūras cenas. Ieraksta veidlapa", Parametrs) ;
Procedūras beigas
Šis kods ļauj atvērt dokumentu sarakstu ar norādīto atlasi, varat atvērt arī direktorijas elementu sarakstu ar vēlamo atlasi
Kods 1C v 8.2 UP Form = OpenForm ("Dokuments. Invoice.Form.ListForm"); //Atveriet veidlapu
SelectionOwner =Form.List.Selection.Elements.Add(Type("DatuCompositionSelectionElement")); //Pievienot atlasi
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; //Kā salīdzināsim
SelectOwner.Use = True; // Iestatiet izvēles rūtiņu, lai izmantotu NewDataCompositionField("Nomenklatūra")
SelectionOwner.LeftValue = NewDataCompositionField("Konts"); //Kādas detaļas mēs izmantosim, lai veiktu atlasi?
SelectionOwner.RightValue = Object.Account; // Un pati atlases nozīme
Lai atveriet saraksta formu ar iepriekš noteiktu atlasi izmantojiet šādas metodes:
Pirmais veids ir tas, ka, atverot veidlapu, varat iestatīt parametru Atlases veidlapa un atvērt saraksta formu ar šo parametru.
Atlases parametrs attēlo struktūru. Elementu nosaukumi atbilst to lauku nosaukumiem, ar kuriem tiek veikta atlase, un vērtības satur atlases vērtības. Šī ir paplašinājuma iespēja kontrolēta forma dinamiskais saraksts. Tas ir, tas pastāv formām, kuru galvenais atribūts ir DynamicList tipa atribūts, piemēram, sarakstu formām un atlases formām.
Piemēram, nākamajā piemērā tiek atvērts rēķinu saraksts ar atlasi pēc lauka Skaitlis, kas vienāds ar 333.
Kods 1C v 8.2 UE Atlases vērtība = New Structure ("Numurs", "333");
SelectionParameters = New Structure("Atlase", SelectionValue);
OpenForm("Dokuments. Kvīts rēķins. Saraksta veidlapa", Atlases opcijas);
Otrais veids
Varat atvērt saraksta formu bez parametriem:
Kods 1C v 8.2 UE OpenForm ("Dokuments. Kvīts rēķins. Saraksts");
Un pēc tam rēķinu saraksta veidlapas notikumu apdarinātājā When CreatedOnServer ierakstiet kodu, kas izveido atlasi dinamiskajā sarakstā, kas ir galvenais formas atribūts:
Kods 1C v8.2 UP &OnServer
Procedūra, kad tiek izveidots serverī (kļūme, standarta apstrāde)
Atlases elements = List.Selection.Elements.Add(Type("Datukompozīcijas atlases elements"));
SelectionElement.LeftValue = NewDataCompositionField("Numurs");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Nepieejams;
SelectionElement.RightValue = "000000001";
Procedūras beigas
Priekšrocības šī metode Lieta tāda, ka atlases salīdzināšanas veidu var iestatīt ne tikai uz Vienāds, kā pirmajā gadījumā, bet arī uz Vairāk, Mazāk utt.
Bet šai metodei ir arī ļoti būtisks trūkums: ar šo atlasi veidlapa vienmēr tiks atvērta. No kurienes viņu sauca. Tāpēc šo veidlapu nevajadzētu norādīt kā galveno. Un, ja tā tomēr ir galvenā, tad pirms atlases instalēšanas ir jāsniedz sava veida analīze par to, no kurienes šī veidlapa tiek atvērta. Piemēram, veidlapas parametru analīze.
Trešais ceļš
Visbeidzot, atlases nosacījumu var ievietot pielāgotā vaicājumā, kas atlasa datus dinamiskajam sarakstam.
Piemēram, mums ir jāatver to rēķinu saraksts, kuros ir preču sarakstā iezīmētā prece.
Lai to izdarītu, preču saraksta veidā izveido komandu un atbilstošo pogu Saņemt rēķinus.
Aizpildīsim šīs komandas izpildes apdarinātāju šādi:
Kods 1C v8.2 UP &OnClient
Procedūru kvītis rēķini (komanda)
SelectionParameters = New Structure("FilterByProduct", Elements.List.CurrentRow);
OpenForm("Dokuments. Kvīts rēķins. Saraksta veidlapa", Atlases opcijas);
Procedūras beigas
Šajā apdarinātājā mēs atveram veidlapu rēķinu sarakstam, veidlapas parametram FilterByProduct nosūtot saiti uz pašreizējo vienumu sarakstā esošo vienību.
Pēc tam izveidosim veidlapu dokumentu sarakstam: Kvīts rēķins un izveidosim FilterBy Product formas parametru, ko izmantosim, lai atvērtu formu ar nepieciešamo atlasi.
Tagad atvērsim veidlapas List galvenā atribūta rekvizītu paleti. Iestatiet pielāgotā vaicājuma karogu un rindā Saraksta iestatījumi noklikšķiniet uz Atvērt.
Laukā Pieprasījums ievadiet šādu pieprasījuma tekstu:
Kods 1C v8.2 UP SELECT
Dokumenta kvīts rēķina numurs,
Dokumentu saņemšanas rēķins.Datums
NO
Document.ReceiptInvoice AS DocumentReceiptInvoice
KUR
Dokumentu kvīts Invoice.Products.Product = &Produkts
Pieprasījumā mēs izmantojam parametru Prece, kas saņems saiti uz pašreizējo preču saraksta rindu, kas ietverta veidlapas FilterBy Item rēķinu saraksta parametrā.
Lai to izdarītu, saraksta veidlapas notikumu apdarinātājā When CreatedOnServer mēs ierakstīsim kodu, lai iestatītu produkta pieprasījuma parametra vērtību:
Kods 1C v8.2 UP &OnClient
Atvēršanas procedūra (neveiksme)
List.Parameters.SetParameterValue("Produkts", Parameters.FilterByProduct);
Procedūras beigas
Šeit List.Parameters ir saraksts ar dinamiskā saraksta pieprasījuma parametriem atribūtam List. Produkta parametra vērtība ir iestatīta vienāda ar veidlapas FilterByProduct parametra vērtību.
Rezultātā, noklikšķinot uz pogas Rēķini preču saraksta veidā, mēs saņemsim tikai to rēķinu sarakstu, kuros ir izceltās preces. šobrīd nomenklatūras sarakstā.