კუჭ-ნაწლავის დაავადებების შესახებ

Იმისათვის, რომ გახსენით შერჩევის ფორმა შერჩევით 1-ში 8.2(ჩვეულებრივი ფორმები), ჩვენ გვჭირდება გარკვეული მოქმედებების შესრულება. ჯერ მივიღებთ. ამის შემდეგ, ჩვენ დავაყენებთ არჩევანს და გავხსნით მას პროგრამულად, აქ არის კოდის მაგალითი:

ფორმაზე შერჩევა 1C 8.2 შეყვანის ველში რამდენიმე მნიშვნელობით

ზემოთ მოცემულ მაგალითში ჩვენ შევხედეთ როგორ დავაყენოთ შერჩევა შერჩევის ფორმაზეკონკრეტული ღირებულებით. ახლა მოდით შევხედოთ სიტუაციას, როდესაც თქვენ უნდა შეცვალოთ რამდენიმე მნიშვნელობა, ეს შეიძლება იყოს, მაგალითად, მასივი ან გადმოტვირთვა შეკითხვის შედეგიდან. ეს არის არჩევანი 1c შეყვანის ველშიმრავალი მნიშვნელობით.

პირველ რიგში, ჩვენ ვიღებთ შერჩევის ფორმას, გადავცემთ "ელემენტს" (მფლობელს) პარამეტრებში, ვაყენებთ შერჩევის რეჟიმის დროშას. შემდეგ ჩვენ ვქმნით მნიშვნელობების ჩამონათვალს და მასივს, აღვნიშნავთ, რომ როგორც შერჩევა სიაში შედარების ტიპის დაყენებისას, ობიექტი შეიძლება იყოს მხოლოდ ტიპით. ListValues. ჩვენ ვამატებთ ელემენტებს მასივში, შემდეგ ვტვირთავთ ამ მასივს მნიშვნელობების სიაში, რომელიც შემდგომ დავაყენეთ შერჩევაში. ასევე, არ დაგავიწყდეთ ამ შერჩევის გამოყენების დროშის ჩართვა და შედარების ტიპის დაყენება.

შერჩევის დაყენება შეყვანის ველში ფორმაში 1C 8.3, Start of Selection ღონისძიება

ახლა განვიხილოთ შერჩევა შეყვანის ველში მართულ ფორმაში 1C 8.3. მოდი ვიპოვოთ ფორმაში ჩვენთვის საინტერესო ელემენტი, რომელშიც დავაყენებთ არჩევანს, ჩვენს შემთხვევაში ეს არის ველი "ორგანიზაცია". ვპოულობთ ღონისძიებას „შერჩევის დაწყება“, ვაწკაპუნებთ გამადიდებელ შუშაზე და აღმოვჩნდებით პროცედურაში. ჩვენ ვხედავთ Selection Data პარამეტრს, ეს პარამეტრი ValueList ტიპისაა. იმისათვის, რომ არჩევანი შევზღუდოთ საჭირო ელემენტებით, უნდა შეავსოთ ღირებულებების სია. ჩვენ შეგვიძლია შევარჩიოთ ელემენტები მხოლოდ სერვერზე, ამიტომ ვქმნით პროცედურას &OnServer კომპილაციის დირექტივით. ამ პროცედურაში შეავსეთ შერჩევის მონაცემები.

/
დეველოპერები /
კოდირების კონვენციები

მეტამონაცემების ობიექტებისთვის შერჩევის ოფციების და შერჩევის ვარიანტების ასოციაციების დაყენება

1. როგორც წესი, ბიზნეს ლოგიკის შეზღუდვები, როგორიცაა შერჩევის შეზღუდვები, ერთნაირი უნდა იყოს ყველა ფორმისთვის, რომლითაც ხდება კონკრეტული ობიექტის რედაქტირება. ამიტომ, რეკომენდებულია შერჩევის პარამეტრების და კავშირების დაყენება შერჩევის პარამეტრებს შორის მეტამონაცემების ობიექტების თვისებებში - დირექტორიების, დოკუმენტების დეტალებში და ა.შ.

2. თუმცა, შეიძლება იყოს შემთხვევები, როდესაც შერჩევის შეზღუდვები შეიძლება დამოკიდებული იყოს კონკრეტულ საოპერაციო სცენარზე. ასეთ შემთხვევებში, შერჩევის პარამეტრები შეიძლება განისაზღვროს ადგილობრივად, კონკრეტული ფორმით.

მაგალითად, კონფიგურაცია შეიცავს

  • დირექტორია თანამშრომლები, რომელიც შეიცავს დეტალებს ორგანიზაციადა თანამშრომლის ტიპი(აღრიცხვა მნიშვნელობებით ძირითადი/ნახევარ განაკვეთზე);
  • დოკუმენტი მიღების ორდერი, რომელიც შეიცავს რეკვიზიტებს ორგანიზაციადა თანამშრომელი; ამავე დროს რეკვიზიტებისთვის თანამშრომელიდოკუმენტი მიღების ორდერიშერჩევის პარამეტრის კავშირი მითითებულია შერჩევა.ორგანიზაციარეკვიზიტებით ორგანიზაცია.

საჭიროა მხოლოდ ძირითადი თანამშრომლების არჩევის უნარის დანერგვა ფუნქციური ვარიანტის მნიშვნელობიდან გამომდინარე აირჩიეთOnlyFromEmployeesBasics. ამისთვის აუცილებელია

  • დოკუმენტის სახით მიღების ორდერიდამატებითი ფორმის ატრიბუტების დანერგვა თანამშრომლების ტიპები,
  • შემდეგ ფორმის ველისთვის თანამშრომელიშერჩევის პარამეტრის ბმული შეიძლება შეიქმნას შერჩევა.დასაქმებულის ტიპიფორმის დეტალებით თანამშრომლების ტიპები,
  • ამ შემთხვევაში ფორმის დეტალები თანამშრომლების ტიპებიივსება ფუნქციური ვარიანტის ანალიზის საფუძველზე.

(ამავდროულად დააყენეთ რეკვიზიტები თანამშრომელიდოკუმენტი მიღების ორდერიბმული შერჩევის პარამეტრისთვის შერჩევა.დასაქმებულის ტიპიარ არის შესაძლებლობა, რადგან რეკვიზიტები თანამშრომლის ტიპიდოკუმენტში მიღების ორდერიარ არსებობს.)

შემდეგ დააყენეთ კავშირი პარამეტრზე შერჩევა.ორგანიზაციასაყრდენი თვისებებში თანამშრომელიდოკუმენტი მიღების ორდერიდა კავშირები პარამეტრისთვის შერჩევა.დასაქმებულის ტიპიდოკუმენტის ფორმის ველში მიღების ორდერიგამოიწვევს იმ ფაქტს, რომ რეჟიმში 1C: საწარმოებიორივე შერჩევის პარამეტრის ბმული იმუშავებს. ამრიგად, დასაქმების ბრძანების ფორმაში თანამშრომლის შერჩევისას, თანამშრომელთა სიაში შერჩევა განისაზღვრება როგორც დოკუმენტში შევსებული ორგანიზაციის, ასევე თანამშრომლის ტიპის მიხედვით, რომელიც განისაზღვრება ფუნქციური ვარიანტის საფუძველზე.

Საღამო მშვიდობისა.

დღეს ჩვენ ვისაუბრებთ იმაზე, თუ როგორ პროგრამულად გავხსნათ შერჩევის ფორმები ახალ მართულ ინტერფეისში.

ადრე, "რეგულარულ განაცხადში" ჩვენ ასე დავწერეთ:

form = Directory.nomenclature.GetSelectionForm();

resultSelection = form.openModalNO();

ამ ოპერატორებს შორის შეგვიძლია შევცვალოთ ფორმის თვისებები, მაგალითად დავაყენოთ შერჩევა. ჩვენ შეგვიძლია დავასახელოთ კონკრეტული ფორმა სახელით. მათ შეუძლიათ შეცვალონ მისი გარეგნობა ფორმის ელემენტების თვისებებზე წვდომით მათი სახელით წერტილის მეშვეობით (form.Button1.Visibility = False;)

ახლა ჩვენ გვაქვს მართული ინტერფეისი და აქ ყველაფერი სხვაგვარადაა. პრობლემა არის კოდის სერვერის და კლიენტის ნაწილებად დაყოფაში. ჩვენ შეგვიძლია წვდომა ობიექტებზე და მათ მეტამონაცემებზე მხოლოდ სერვერზე და ჩვენ უნდა გავხსნათ ფორმები კლიენტზე.

მოდით დავიწყოთ.

1. უმარტივესი შემთხვევაა, როცა არ გვჭირდება შერჩევის მართვა (არჩევნების დაყენება, პარამეტრების გადაცემა გახსნილ შერჩევის ფორმაში).

ვინაიდან ფორმების გახსნა შესაძლებელია მხოლოდ კლიენტზე, ეს იქნება კლიენტის მხარის კოდი. ჩვენ გამოვიყენებთ ფუნქციას EnterValue (<Значение>, <Подсказка>, <Тип>) . სინამდვილეში, ყველაფერი ნათელია მისი აღწერილობიდან. ის აბრუნებს დროშას, გააკეთა თუ არა მომხმარებელმა არჩევანი პირველ პარამეტრში, ჩვენ გადავცემთ კონტეინერს, რომელშიც დაბრუნდება შერჩევის მნიშვნელობა, მეორე ტექსტში, რომელიც გამოჩნდება შერჩევის ფანჯრის სათაურში, მესამე მასივში; ტიპები.

აქ არის გამოყენების მაგალითი:

ცვლადი SelectTMC;

ArrayTypes = ახალი მასივი;

DescriptionofTypesTMC = NewDescriptionofTypes(Array);

თუ EnterValue (აირჩიეთ ინვენტარი, "აირჩიეთ ნივთი", ინვენტარის ტიპების აღწერა) მაშინ

//არჩეული მნიშვნელობის დამუშავება

დაასრულე თუ;

დავამატებ, რომ თუ რაიმე მნიშვნელობას მივანიჭებთ ჩვენს კონტეინერის ცვლადს მის არჩევამდე, ეს იქნება ნაგულისხმევი მნიშვნელობა. ამ შემთხვევაში, თქვენ არ უნდა შექმნათ ტიპების მასივი.

2. ზოგჯერ, მნიშვნელობის არჩევამდე, ჩვენ უნდა დავაყენოთ რამდენიმე არჩევანი და შერჩევის პარამეტრი. მაგალითად, ჩვენ უნდა ავირჩიოთ კონტრაგენტის ხელშეკრულება. პირველი მეთოდი გვიხსნის ყველა დოკუმენტს, მაგრამ ჩვენ უნდა შევარჩიოთ მფლობელი.

ფორმების გახსნის ორი გზა არსებობს: OpenFormდა OpenFormModal. პირველ მეთოდში ჩვენ გავხსნით ფორმას და კოდის ნაწილი, საიდანაც გავხსენით ფორმა, გააგრძელებს შესრულებას შერჩევის შედეგის მიღების გარეშე. შერჩევის შედეგი, ზარის მეთოდიდან გამომდინარე, განთავსდება ან შეყვანის ველში ან მიიღება წინასწარ განსაზღვრულ პროცედურაში „შერჩევის დამუშავება“.

ჩვენს შემთხვევაში, ჩვენ უნდა მივიღოთ შერჩეული მნიშვნელობა გარკვეულ ცვლადში და გავაგრძელოთ დამუშავება შერჩეული მნიშვნელობის გათვალისწინებით, კონტროლის სხვა პროცედურებზე გადატანის გარეშე. ამიტომ ის მოგვწონს OpenFormModal.

მე მაშინვე გავაკეთებ დაჯავშნას, რომ ეს ცუდი გზაა ვებ ინტერფეისისთვის, რადგან... მოდალური ფანჯრები იხსნება ბრაუზერის ახალ ფანჯარაში, რომელიც ჩვეულებრივ დაბლოკილია. მაგრამ თუ მომხმარებელს წინასწარ აუხსნით რა არის, მაშინ ვფიქრობ, რომ ის გაუმკლავდება ამ პრობლემას))

ასე რომ, მოდით შევხედოთ პროცედურის აღწერას, მას აქვს 4 პარამეტრი. პირველში მივუთითებთ ხაზს სრული ბილიკით ფორმის "ცნობარი. კონტრაქტორთა ხელშეკრულებები. შერჩევის ფორმა". მეორეში ჩვენ მივუთითებთ შერჩევის პარამეტრებს, მათ შესახებ ქვემოთ. მესამეში - მფლობელი, ეს არის ფორმა ან შერჩევის ველი, რომელიც მიიღებს შერჩევის შედეგს, ჩვენ არ ვავსებთ მას. მეოთხე პარამეტრი ასევე არ გამოიყენება ჩვენს შემთხვევაში.

ასე რომ, მარტივი შერჩევისთვის, შემდეგი ხაზი გააკეთებს:

&OnClient

პროცედურის ბრძანება 1 (ბრძანება)

res = OpenFormModal ("ცნობარი. კონტრაქტორების ხელშეკრულებები. SelectionForm");

დასრულების პროცედურა

მაგრამ ეს არის No1 მეთოდის სრული ანალოგი და ჩვენ ვნახავთ ფორმას ყველა კონტრაქტის შერჩევისთვის, მფლობელის მიერ შერჩევის გარეშე. იმათ. ეს შეიძლება გაკეთდეს მხოლოდ იმ შემთხვევაში, თუ გვინდა მივუთითოთ შერჩევის ფორმის სახელი.

შერჩევის დაყენებაში დაგვეხმარება მეორე პარამეტრი.

მეორე პარამეტრი არის "სტრუქტურის" ტიპის. როგორც სტრუქტურის ელემენტები, შეგიძლიათ მიუთითოთ ფორმის პარამეტრები დამატებული შერჩევის ფორმის ჩანართზე „პარამეტრები“. მათი დამუშავება უნდა იყოს აღწერილი პროცედურაში როდესაც CreatedOnServerშერჩევის ფორმის მოდულში. ეს ჩვენთვის არ არის კარგი, რადგან... კონფიგურაციის შეცვლა მჭირდება. თქვენ ასევე შეგიძლიათ გადასცეთ შერჩევის სტრუქტურა პარამეტრის სტრუქტურაში „შერჩევის“ ღილაკით. შემდეგ შერჩევის სტრუქტურის ყველა ველი გამოყენებული იქნება ელემენტების სიის შერჩევისას და არ იქნება ხელმისაწვდომი მომხმარებლისთვის არც სანახავად და არც შესაცვლელად.

ჩემს მაგალითში, მე დავხატე შერჩევის ველი დამუშავებისას, რომელიც ეხება დამუშავების ფორმის ატრიბუტს "კონტრაპარტია"მონაცემთა ტიპით " DirectoryLink.Counterpartiesდა დაწერა კოდის შემდეგი ნაწილი:

&OnClient

პროცედურის ბრძანება 1 (ბრძანება)

შერჩევა = ახალი სტრუქტურა ("მფლობელი", კონტრაგენტი);

SelectionParameters = New Structure("Selection", Selection);

res = OpenFormModal("ცნობარი. კონტრაქტორების ხელშეკრულებები. შერჩევის ფორმა", შერჩევის პარამეტრები);

დასრულების პროცედურა

ეს ჩვეულებრივ საკმარისია პრობლემების უმეტესობის გადასაჭრელად და არ საჭიროებს რაიმე კონფიგურაციის ჩარევას. თუმცა, შერჩევის ფორმაში "When CreatedOnServer" პროცედურაში, თქვენი არჩევანი შეიძლება დაიკარგოს. ამიტომ ამ მეთოდის გამოყენებამდე გადახედეთ ამ პროცედურას თქვენს მიერ გახსნილ შერჩევის ფორმაში. თაღლითურ დეველოპერებს შეუძლიათ მარტივად დააყენონ თავიანთი არჩევანი „ნაგულისხმევად“, დაავიწყდეთ შეამოწმონ, რომ არჩევანი გადაცემულია გახსნის პარამეტრებში.

დღეისთვის სულ ესაა, გმადლობთ ყურადღებისთვის.



თუ შეამჩნევთ შეცდომას, აირჩიეთ ტექსტის ნაწილი და დააჭირეთ Ctrl+Enter
გააზიარე: