Mövcud obyektin formasını necə açmaq olar? İdarə olunan obyekt formasını açın.

İdarə olunan 1C proqramında formaların proqramlı şəkildə açılması onları adi proqramda açmaqdan əhəmiyyətli dərəcədə fərqlənir. Əvvəlcə köhnə üsula nəzər salaq. O, formanı qəbul edib sonra onu normal və ya modal rejimdə açmaqdan ibarətdir (modal rejimdə açıldıqda, forma proqramı bloklayır).

GetForm() . Açıq()

Bu formaların açılmasının ən yavaş üsuludur. Bununla belə, formanı açmadan əvvəl onu proqramlı şəkildə emal etməyə imkan verir. Kodu emal etmək üçün bir az dəyişdirməlisiniz:

Forma = GetForm( "Sənəd. Malların və xidmətlərin qəbulu. Sənəd forması") ;
//Burada forma ilə hərəkətləri yerinə yetiririk
forma. Open();

Nəzərə almaq lazımdır ki, forma alındıqda başqa hadisə proseduru icra olunacaq WhenCreatedOnServer.

İdarə olunan 1C proqramında formaları daha sürətli və daha rahat açmağa imkan verən digər üsullara baxaq. Xüsusi vəziyyətdən asılı olaraq müxtəlif üsullardan istifadə edilə bilər.

1. İdarə olunan proqramda obyekt formasını ona keçid olduqda necə açmaq olar.

Bu vəziyyətdə hər şey son dərəcə sadədir.

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

2. Seçim formasını necə açmaq və sonra seçilmiş dəyəri almaq.

Bunun üçün bir funksiya var EnterValue(). Funksiya 3 parametrə malikdir:

  • Seçilmiş dəyərin yazılacağı dəyişən;
  • Seçim pəncərəsində göstəriləcək bir işarə;
  • Seçilmiş dəyərlərin növlərinin təsviri. Bir neçə növ ola bilər, bu halda xüsusi dəyəri seçməzdən əvvəl sizdən növ seçməyiniz xahiş olunacaq.

Funksiyanın icrası nəticəsində müəyyən edilmiş tipli obyekt üçün standart seçim forması açılacaqdır.

Dəyişən dəyər;
Massiv = yeni massiv;
Massiv. Əlavə et(Növ( "DirectoryLink.Nomenklatura") ) ;
Massiv. Əlavə et(Növ( "DirectoryLink. Qarşı tərəflər") ) ;

TypeDescription= new TypeDescription(Array) ;

Res = EnterValue(Dəyər, "İpucu" , TypeDescription);

Əvvəlki üsullar yalnız obyektlər üçün standart formaları (obyekt forması və ya seçim forması) açmağa imkan verirdi. Fərdi forma açmaq lazımdırsa, funksiyadan istifadə edə bilərsiniz OpenForm().

Bu funksiya kifayət qədər bir neçə parametrə malikdir. Onlardan bəzilərinə nəzər salaq:

  • Formanın adı— burada siz standart obyekt formalarından birini seçə bilərsiniz, məsələn, Seçim forması və ya Siyahı forması. Və ya tərtibatçılar tərəfindən yaradılmış xüsusi bir forma.
  • Seçimlər— onu formada olan formaya köçürməyə imkan verir strukturlar onu açmadan əvvəl bəzi parametrlər, bununla da çıxış məlumatlarını təyin etmək. Parametrlər müştəridən serverə ötürülə bilən istənilən məlumat ola bilər. Formanın açılması zamanı verilən parametrlər prosedurda işlənə bilər WhenCreatingOnServer() açılan formada.
  • Formanın açılması rejimi— 3 variantı var: müstəqil, bütün interfeysi bloklayın, sahib formasını bloklayın.

Gəlin funksiyanın necə istifadə olunduğuna baxaq OpenForm() müxtəlif vəziyyətlərdə.

3. Mövcud obyektin formasını necə açmaq olar

Hər formada bir əsas atribut var. Forma təfərrüatları siyahısında qalın hərflərlə vurğulanır və adətən çağırılır Bir obyekt arayış kitablarının və sənədlərin elementləri formalarında. Digər obyektlərin fərqli adı ola bilər. Mövcud obyektin formasını açmaq üçün açılan formaya parametr ötürmək lazımdır Açar obyektə istinad kimi dəyəri ilə.

&OnClient
Prosedur Əmri 1 (Əmr)
Parametr = yeni struktur;
Parametr. Insert("Key" , FindC() );
OpenForm(, Parametr);
EndProcedure

&Serverdə
Funksiya FindC();
Kataloqları qaytarın. Qarşı tərəflər. FindByRequisites ("VÖEN", "745107734623")
EndFunction

4. Yeni obyekt formasını necə açmaq olar

Burada sadə bir funksiya yerinə yetiriləcək OpenForm() heç bir parametr olmadan.

&OnClient
Prosedur Əmri 1 (Əmr)
OpenForm( "Kataloq. Qarşı tərəflər. Obyekt forması") ;
EndProcedure

5. Yeni obyekt formasını necə açmaq və onu nəyəsə əsaslanaraq doldurmaq

Parametr keçmək lazımdır Baza, dəyəri doldurulma əsas obyektinə istinad olacaq. Bu prosedura başlayacaq ProcessFill().

&OnClient
Prosedur Əmri 1 (Əmr)
Parametr = yeni struktur;
Parametr. Daxil et("Baza", LinkToBuyerAccount);
OpenForm( "Sənəd. Malların və xidmətlərin satışı. Obyekt forması", Parametr);
EndProcedure

Bu nümunə sənəd yaradacaq Malların və xidmətlərin satışı və əlaqəsi ötürülən alıcıya ödəniş üçün hesab-faktura əsasında doldurulur.

6. Formanı necə açmaq və onun üzərində seçim qurmaq

1C formaları üzrə seçim sadə və ya mürəkkəb ola bilər. Sadə seçim kimi ifadələri ehtiva edir Təşkilat = Horns and Hooves MMC. Kompleks seçim digər müqayisə növlərini nəzərdə tutur, məsələn. Siyahıda. Bu yazıda sadə seçimin təşkilini nəzərdən keçirəcəyik və ayrıca bir məqalə kompleks seçimə həsr olunacaq.

Sadə seçimi təşkil etmək üçün açılan formaya açarı olan parametri ötürmək lazımdır Seçim, dəyər açarın dinamik siyahı sahəsinin adı, dəyərin isə axtarılan məlumat olduğu struktur olacaq.

Məsələn, kataloq siyahısı formasını açaq GTD nömrələri və orada sahibə - kataloq elementinə görə seçim edin Nomenklatura.

&OnClient
Prosedur Əmri 1 (Əmr)
Parametr = yeni struktur;

seçim= yeni struktur;
Seçim. Insert("Sahibi", LinkToNomenclature);

Parametr. Daxil et("Seçim", Seçim);

OpenForm( "Directory.GTD nömrələri.Siyahı forması", Parametr);
EndProcedure

7. Məlumat reyestrinə giriş forması necə açılır

Bunu etmək üçün sizə məlumat reyestrinin giriş açarı lazımdır.

Qeyd açarı— bunlar bütün ölçmələrin və dövrün qiymətləridir (registr dövri olarsa). Yəni qeyd açarı qeydin unikal şəkildə müəyyən edilə biləcəyi parametrlərdir.

Açılış alqoritmi aşağıdakı kimidir:

  1. Qeyd açarı məlumatlarını lazımi dəyərlərlə struktura daxil edirik.
  2. Yaranan strukturu massivdə yerləşdiririk.
  3. Massivdən qeyd açarı yaradırıq.
  4. Açılan formaya bir parametr keçirik Açar dəyər kimi 3-cü addımdan qeyd düyməsi ilə.

&OnClient
Prosedur Əmri 1 (Əmr)
Parametr = yeni struktur;

KeyParameters= yeni Struktur;
Əsas parametrlər. Insert("Nomenklatura", LinkToNomenklatura) ;
Əsas parametrlər. Daxil et("Qiymət Növü", LinkToQiymət Tipi);
Əsas parametrlər. Daxil et("Dövr", Tarix);

KeyArray = Yeni Massiv;
KeyArray. Əlavə et(KeyParameters);

EntryKey = Yeni( "Məlumat Reyestrinin Qeyd Açarı. QiymətlərNomenklaturası", KeyArray);

Parametr. Daxil et("Açar", RecordKey);

OpenForm( "Məlumat reyestri. Nomenklatura qiymətləri. Qeyd forması", Parametr);
EndProcedure

Üçün 1s-də seçim ilə seçim formasını açın 8.2(müntəzəm formalar), bəzi hərəkətləri yerinə yetirməliyik. Əvvəlcə onu alacağıq. Bundan sonra seçimi təyin edəcəyik və onu proqramlı şəkildə açacağıq, burada bir kod nümunəsi var:

Bir neçə dəyəri olan 1C 8.2 giriş sahəsində formada seçim

Yuxarıdakı nümunədə baxdıq seçim formasında seçimi necə təyin etmək olar xüsusi dəyəri ilə. İndi bir neçə dəyəri əvəz etməli olduğunuz bir vəziyyətə baxaq, bu, məsələn, massiv və ya sorğu nəticəsindən yüklənməmiş ola bilər. Bu, 1c giriş sahəsində seçimdirçoxlu mənaları ilə.

Əvvəlcə seçim formasını alırıq, parametrlərdə "Element" (sahibi) keçirik, seçim rejimi bayrağını təyin edirik. Sonra dəyərlər siyahısı və massiv yaradırıq, qeyd edirik ki, siyahıda müqayisə növünü təyin edərkən seçim olaraq obyekt yalnız növü ilə mövcud ola bilər. SiyahıDəyərləri. Biz massivə elementlər əlavə edirik, sonra bu massivi sonradan seçimdə təyin etdiyimiz Dəyərlər Siyahısına yükləyirik. Həmçinin, bu seçimi istifadə etmək üçün bayrağı aktivləşdirməyi və Müqayisə Tipini təyin etməyi unutmayın.

1C 8.3-də formada daxiletmə sahəsində seçimin qurulması, Seçimin Başlanması hadisəsi

İndi düşünək 1C 8.3-də idarə olunan formada giriş sahəsində seçim. Formada bizi maraqlandıran, seçimi təyin edəcəyimiz elementi tapaq, bizim vəziyyətimizdə bu "Təşkilat" sahəsidir. Biz “Seçimin Başlanğıc” hadisəsini tapırıq, böyüdücü şüşəyə vurun və özümüzü prosedurda tapırıq. Biz Seçim Məlumatı parametrini görürük, bu parametr ValueList tiplidir; Seçimi zəruri elementlərlə məhdudlaşdırmaq üçün Dəyərlər Siyahısını doldurmalıyıq. Biz elementləri yalnız serverdə seçə bilərik, ona görə də &OnServer kompilyasiya direktivi ilə prosedur yaradırıq. Bu prosedurda Seçim Məlumatını doldurun.

Əsas Başlanğıc tərtibatçılar üçün Proqramlaşdırmağı öyrənmək

Mövcud obyektin formasını necə açmaq olar?

Mövcud obyektin formasını açarkən, formanın adından əlavə, forması açılmalı olan obyekti də göstərməlisiniz. Bunun üçün Açar forma parametrindən və bizi maraqlandıran obyektə keçiddən istifadə edin.

Məsələn, təşkilatların siyahısından kursorun yerləşdiyi təşkilatın formasını açmaq lazımdırsa, bunu aşağıdakı şəkildə edə bilərsiniz:

Forma parametrlərini struktur şəklində keçirik, burada struktur elementinin adı forma parametrinin adına uyğun gəlir, qiymət isə forma parametrini təyin etmək istədiyimiz qiymətdir.

Konfiquratorda yaradılan obyektin əsas deyil, ixtiyari formasını açmaq istəyirsinizsə, əsas formanın standart adı (ObjectForm) əvəzinə, Form sözünü və ardınca nöqtəni - yaradılan formanın adını göstərin. konfiqurator.

Misal üçün:

ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = Yeni Struktur ("Açar", ReferenceToDirectoryElement); OpenForm("Directory.Organizations.Form.UniversalObjectForm",FormParameters);

Qeyd etmək lazımdır ki, bir obyektə keçiddən əlavə, açılan formaya heç bir parametr ötürülməməsi lazım olduqda və mövcud obyektin əsas forması tələb olunursa, daha sadə bir üsuldan istifadə edə bilərsiniz. - prosedurdan istifadə edərək formanı açın OpenValue():

OpenValue(Items.List.CurrentRow);

Bu üsul daha az universaldır, lakin bəzi hallarda vaxt və səylərə qənaət edir. Məsələn, nəzərdən keçirilən halda, belə bir sətir əvvəllər yazdığımız bütün üç sətirli proseduru əvəz edə bilər.

Ancaq bu prosedurdan istifadə edərkən diqqətli olmaq lazımdır. Bəzi hallarda, o, serverə əlavə zənglərə səbəb ola bilər, məsələn, iyerarxik kataloq elementi formasını açmağınız lazım olduqda. Bu prosedurdan istifadə edərkən platforma elementin qrup olub olmadığını müəyyən etmək üçün serverə əlavə zəng edəcək, çünki element və qrup üçün müxtəlif formalar açılmalıdır.

Eyni zamanda, bu məlumat tərtibatçıya öz alqoritmi daxilində əvvəlcədən məlum ola bilər və OpenForm() funksiyasından istifadə edərək, tərtibatçı serverə əlavə zənglər etmədən istədiyi formanı aça, dərhal əsasın standart adını göstərə bilər. forma.

SP bizə aşağıdakıları deyir:

Qlobal kontekst.GetForm
Qlobal kontekst
GetForm
Sintaksis:

GetForm(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>)
Seçimlər:

<ИмяФормы>(tələb olunur)

Növ: .
Formanın adı. Forma metadata obyektinə tam yol kimi (məsələn, "Directory. Counterparties.Form.ObjectForm", "GeneralForm.FileSavingForm") və ya standart forma adı ilə tamamlanan tətbiq obyektinə tam yol kimi formalaşır (məsələn, "Directory.Products.SelectionForm" ).
Defolt forma adları:

  • ObjectForm - standart obyekt forması;
  • GroupForm (FolderForm) - standart qrup forması;
  • RecordForm - standart reyestrə giriş forması;
  • ListForm - standart siyahı forması;
  • ChoiceForm - standart seçim forması;
  • GroupChoiceForm - standart qrup seçim forması;
  • ConstantsForm - normal rejim üçün standart sabitlər, konfiqurasiya üçün sabitlər forması kimi təyin olunur;
  • Forma - sabitin, hesabatın və emalın standart forması;
  • CommonForm - ümumi forma;
  • SettingsForm - standart hesabat parametrləri forması;
  • LoadForm - parametrləri yükləmək üçün forma;
  • SaveForm - parametrləri saxlamaq üçün forma;
  • VariantForm - hesabat variantını redaktə etmək üçün forma;
  • SearchForm - verilənlərdə tam mətn axtarışı üçün forma.
Məsələn, "GeneralSettings" ümumi formasını əldə etmək üçün modula aşağıdakı kodu yazmalısınız:
Forma = GetForm("GeneralForm.GeneralSettings");

Xarici hesabatlar və emal üçün forma adı aşağıdakı kimi müəyyən edilir:

  • Xarici Hesabat.<имя отчета>.Forma.<имя формы>;
  • Xarici Hesabat.<имя отчета>.<имя стандартной формы>;
  • Xarici emal.<имя обработки>.Forma.<имя формы>;
  • Xarici emal.<имя обработки>.<имя стандартной формы>.
Bu halda, xarici hesabat və ya emal əvvəllər sistemdə qeydiyyatdan keçməlidir.
<Параметры>(isteğe bağlı)

Növ: .
Forma parametrləri. Struktur açarı parametrin adıdır, dəyər isə forma parametrinin qiymətidir. Element adı struktur parametrinin adına uyğun olmalıdır.
P = Yeni Struktur (“Açar”, Təchizatçı);
Form = GetForm("Directory. Counterparties.ObjectForm", P);
Form.Open();
<Владелец>(isteğe bağlı)

Formanın sahibi başqa bir formanın forması və ya nəzarətidir.
<Уникальность>(isteğe bağlı)

Növ: Pulsuz.
Bu parametr açarı təyin edə bilər, onun dəyəri artıq açıq formaları axtarmaq üçün istifadə olunacaq. Eyni unikallıq açarı olan forma tapılarsa, yeni forma açmaq əvəzinə, tapılan forma aktivləşdiriləcək.
- standart unikallıq açarı olan formanı axtarın, - formanı ümumiyyətlə axtarmayın, hər hansı digər dəyər axtarışın aparılacağı unikallıq açarını təyin edir.
Cari dəyər: .
<Окно>(isteğe bağlı)

Növ: ; .
Formanın açılacağı proqram pəncərəsi.
Yalnız idarə olunan forma üçün tətbiq edilir. Pəncərə yalnız əsas proqram pəncərəsi və ya köməkçi forma pəncərəsi ola bilər.
Növ göstərilibsə, seçilmiş seçimə uyğun olaraq forma pəncərəsi yaradılacaq.
<НавигационнаяСсылка>(isteğe bağlı)

Növ: ; .
Əgər onun tərkibində -dən başqa bir dəyər varsa, o zaman həmin dəyər bu metodun çağırılması nəticəsində yaranan formanın xassəsinə təyin edilir və həmin formanın xassəsinə təyin edilir.
Cari dəyər: .
Qaytarılan dəyər:

Növ: ; ; .
- işləyici formanın yaradılmasını rədd etmək üçün qurulubsa.
Təsvir:

Formanı və ya idarə olunan formanı alır. Qəbul etməzdən əvvəl eyni tipli artıq açıq forma üçün axtarış aparılır.
Axtarış forma növü, əsas forma parametrlərinin dəyərləri, forma sahibi, istifadəçinin unikallığı açarı ilə aparılır.
Parametrdə olarsa<Уникальность>dəyər ötürülür, sonra artıq açıq formaların axtarışı həyata keçirilmir.
Mövcudluq:

İncə müştəri, veb müştəri, qalın müştəri, mobil proqram (müştəri).
Qeyd:

İncə və veb müştəridə yalnız idarə olunan forma qəbul edilir.
Xarici emalın ənənəvi formaları dəstəklənmir.
Parametrdə müntəzəm forma qəbul edərkən<ИмяФормы>Qeyri-standart forma adı göstərilib, ötürülən parametrlər işlənmir;
İcra zamanı serverə çoxlu zənglər ola bilər. Onlardan bəziləri yaddaşda saxlanılır. Serverə həmişə ən azı bir sorğu olur və o, yaddaşda saxlanmır. Keshləmə platforma versiyasından və bütövlükdə konfiqurasiya versiyasından asılıdır. Əgər əlaqə sürəti aşağı səviyyəyə qoyulubsa və cari xətt göstərilməyibsə, seçim forması keşlənir. Keş hər 20 dəqiqədən bir təmizlənir. Bu müddət ərzində istifadə olunmayan formalar silinir.
Həmçinin bax:



Əlaqədar nəşrlər