განსაზღვრული ტიპები არის ახალი 1C მეტამონაცემების ობიექტი, რომელიც გამოჩნდა პლატფორმის 8.3 ვერსიაში. ობიექტი დამხმარე ხასიათისაა. განვიხილოთ რა არის განსაზღვრული ტიპები და ამოცანები, რომელთა გადაჭრაც შეუძლია ამ ობიექტს.
განსაზღვრულია მონაცემთა ახალი ტიპები, რომელთა ნაკრები განისაზღვრება აპლიკაციის გადაწყვეტის შემქმნელის მიერ. იგი შედგება რამდენიმე მოქმედი ტიპისგან. მონაცემთა ეს ტიპი შეიძლება იყოს ნებისმიერი კონფიგურაციის ატრიბუტის ტიპი, გარდა თავად განსაზღვრული ტიპისა და ობიექტისა.
მიიღეთ 267 ვიდეო გაკვეთილი 1C-ზე უფასოდ:
ამ ობიექტისთვის ამდენი პარამეტრი არ არის:
იმათ. 1C-ში სახელისა და სინონიმის გარდა, განსაზღვრულ ტიპებს აქვთ მხოლოდ ობიექტების ტიპების ნაკრები.
ამ ობიექტისთვის შეგიძლიათ იპოვოთ აპლიკაციების დიდი არჩევანი.
გამოყენების მაგალითები:
და უფრო მეტი.
თუ იწყებთ 1C პროგრამირების სწავლას, გირჩევთ ჩვენს უფასო კურსი(არ დაგავიწყდეს
— ჩვენ დავიწყეთ განხილვა, თუ რა არის 1C მნიშვნელობის ტიპები და 1C ტიპების კონვერტაცია.
დღეს უფრო დეტალურად ვისაუბრებთ 1C კონფიგურაციის ობიექტების ტიპებზე (1C დოკუმენტის ტიპი, 1C დირექტორიის ტიპი და ა.შ.)
ვინაიდან პროგრამის კოდში ჩვენ ვმუშაობთ მნიშვნელობებთან, პერიოდულად უნდა ვიცოდეთ მათი ტიპი. ტიპი 1C ყოველთვის მითითებულია დეტალების მეტამონაცემებში - დირექტორიებსა და დოკუმენტებში.
1C ტიპებთან მუშაობა ხშირად გამოიყენება:
ტიპი 1C შეგიძლიათ მიიღოთ:
1C ტიპები შეიძლება დაიყოს სამ ტიპად:
1C ტიპის განსაზღვრა და 1C ტიპების შედარება
შეგიძლიათ გაიგოთ მნიშვნელობის ტიპი 1C ფუნქციის TypeValue (ცვლადი) გამოყენებით.
იმის გასაგებად, თუ რა ტიპის 1C დააბრუნა ამ ფუნქციამ, უნდა მიუთითოთ ჩვენთვის საჭირო ტიპი ("TypeName")
მაგალითად, 1C ტიპის ცვლადის განმარტება (შედარება):
თუ TypeValue(Variable) = Type("TypeName") მაშინ
რა ტიპები უნდა დავწერო TypeName-ად?
ძირითადი ტიპები
1C-ის ძირითადი ტიპები - რიცხვი, სტრიქონი, თარიღი, ლოგიკური.
Მაგალითად:
Znch = 12;
თუ TypeValue(Value) = Type("ნომერი") მაშინ
ElseIf Value = Type("String") შემდეგ
ElseIf Value = Type ("თარიღი") შემდეგ
ElseIf Value = Type("Boolean") შემდეგ
დაასრულე თუ;
მონაცემთა ბაზის ტიპები
1C ინახავს მონაცემებს მონაცემთა ბაზაში, მაგრამ არა ფორმაში ინდივიდუალური ჩანაწერები, მაგრამ ობიექტების სახით.
შენახული ობიექტების უმეტესობა (მათ შორის: დირექტორიები, დოკუმენტები, ჩამოთვლები, ბიზნეს პროცესები, ამოცანები) ხელმისაწვდომია როგორც ობიექტი (რედაქტირებისთვის და ჩაწერისთვის) და როგორც ბმული (წაკითხვისთვის). იხილეთ "ბმულები და ობიექტები" დამატებითი ინფორმაციისთვის.
Მაგალითად:
მნიშვნელობა = Directories.Organizations.EmptyLink();
თუ TypeValue(Value) = Type("DirectoryLink.Organizations") მაშინ
სხვაგვარადIf Value = Type("DirectoryObject.Organization") შემდეგ
სხვაგვარადIf TypeValue(Value) = Type("DocumentLink.საქონლის მიღება") შემდეგ
სხვა შემთხვევაშიIf Value = Type("DocumentObject.საქონლის მიღება") მაშინ
დაასრულე თუ;
რეგისტრების წარდგენა შესაძლებელია განსხვავებული ტიპები. რეგისტრის ტიპის სახელი რთულია:
RegisterRegisterTypeAccessType.RegisterName
1C რეგისტრების ტიპები:
რეგისტრში წვდომის რამდენიმე ტიპი არსებობს. ყველაზე ხშირად გამოიყენება:
სულ, მაგალითად:
თუ TypeValue(Value) = Type("InformationRegisterList.RegisterName") მაშინ
სხვაგვარადIf Value = Type("AccumulationRegisterRecordSet.RegisterName") შემდეგ
დაასრულე თუ;
1C ენა საშუალებას გაძლევთ იმუშაოთ პროგრამაში დინამიურად შექმნილ ბევრ ობიექტთან, მაგალითად, მასივი, მნიშვნელობების სია, მნიშვნელობების ცხრილი, სტრუქტურა...
ასეთი 1C ტიპები მითითებულია მათი სახელით (ერთი სიტყვით, სივრცეების გარეშე). Მაგალითად:
თუ TypeValue(Value) = Type("Array") მაშინ
ElseIf Value = Type("List of Value") შემდეგ
დაასრულე თუ;
1C საცნობარო ტიპის მნიშვნელობის განსაზღვრა
მონაცემთა ბაზის ყველა ობიექტთან (ცნობარი, დოკუმენტი...) მუშაობა ხორციელდება ბმულების საშუალებით. მაგალითად, თუ გვსურს დოკუმენტში მითითება, მაშინ მისი 1C ტიპი იქნება “DirectoryLink.DirectoryName”.
Მაგალითად:
მნიშვნელობა = Directories.Organizations.EmptyLink();
If Directories.TypeAllLinks().Contains(TypeValue(Value)) მაშინ
//ეს არის საცნობარო წიგნი
ElseIf Documents.TypeAllLinks().Contains(TypeValue(Value)) შემდეგ
//ეს არის დოკუმენტი
დაასრულე თუ;
მოთხოვნისას, 1C ტიპის შემოწმება შესაძლებელია ორი გზით.
პირველი მსგავსია აღწერილის, მაგრამ 1C ტიპის სახელი არ მიუთითებს "ბმულზე" ან "ობიექტზე", ანუ "DirectoryLink.Organizations" ნაცვლად ჩვენ ვწერთ "Directory.Organizations"
Მაგალითად:
ქვითარი ხელმისაწვდომი ტიპები 1C
ბევრ ობიექტს აქვს თვისება.ValueType, რომელიც შეიცავს 1C ტიპების ჩამონათვალს:
როგორ იმუშაოთ ველში 1C ტიპის ამ ჩამონათვალთან.ValueType - იხილეთ „ტიპების აღწერა“ განყოფილებაში „1C ენა“.
მუშაობა 1C დეტალების ტიპებთან კონფიგურაციის მეტამონაცემებში
კონფიგურატორში დეტალების დამატებისა და რედაქტირებისას, პროგრამისტი განსაზღვრავს 1C დეტალების ტიპ(ებ)ს. პროგრამის კოდში 1C ენაზე შეგიძლიათ მიიღოთ (გაეცნოთ) 1C დეტალების ტიპ(ებ).
ძირითადი მეთოდები:
ატრიბუტს აქვს თვისება.Type, რომელიც შეიცავს ამ ატრიბუტის კონფიგურატორში დაყენებულ 1C ტიპების ჩამონათვალს.
როგორ ვიმუშაოთ 1C ტიპების ამ ჩამონათვალთან - იხილეთ "ტიპების აღწერა" განყოფილებაში "1C ენა".
მიუთითეთ 1C ტიპის ფილტრი
მრავალი ობიექტისთვის შესაძლებელია 1C მნიშვნელობის ტიპების ფილტრის მითითება, რომელიც შეიძლება გამოყენებულ იქნას, მაგალითად:
სადაც ფილტრი არ არის ხელმისაწვდომი მოდიფიკაციისთვის, შესაძლებელია ფილტრის მითითება ობიექტის მეთოდში. მაგალითად, მნიშვნელობების ცხრილის (ხის) სვეტს აქვს.ValueType და ჩვენ ვერ შევცვლით მას, მაგრამ სვეტის დამატება. ტიპები.
ფილტრისთვის 1C ტიპების სიის დასაზუსტებლად გამოიყენება 1C ტიპების სია, თუ როგორ უნდა ვიმუშაოთ მასთან, იხილეთ "ტიპების აღწერა" განყოფილებაში "1C".
ჩვენ ვაგრძელებთ გაცნობას 1C:Enterprise-ის ახალ ფუნქციონალთან, რომელიც დაიწყო სერიის წინა სტატიაში. ამ სტატიაში მასალების შესწავლის შემდეგ თქვენ შეიტყობთ:
სტატიაში განხილულია 1C:Enterprise პლატფორმის ვერსია 8.3.4.437, მაგრამ მისი მასალები ასევე შეიძლება სასარგებლო იყოს მათთვის, ვინც მუშაობს ძველ გამოშვებებზე.
ჩვენ ვაგრძელებთ ინოვაციების განხილვას 1C:Enterprise 8 პლატფორმაში, რომელიც მიზნად ისახავს კონფიგურაციის ხელშეწყობას.
პლატფორმა 8.3, ახალი ობიექტი დაემატა კონფიგურაციის ფილიალს "ზოგადი" - განსაზღვრული ტიპები.
ეს არის სპეციალური კონფიგურაციის ობიექტი, რომელიც შექმნილია მონაცემთა ტიპის დასადგენად, რომელიც აღწერს ხშირად გამოყენებულ ერთეულს ან სავარაუდოდ შეიცვლება აპლიკაციის გადაწყვეტის დანერგვისას.
მაგალითად, განიხილეთ კომპოზიციური ტიპი, რომელიც მოიცავს ბმულს საქაღალდეებთან "კონტრაქტორები" და "ფიზიკები".
და ეს ტიპი, ზოგიერთ განვითარებულ კონფიგურაციაში, ხშირად გამოიყენება, როგორც განზომილება ინფორმაციის რეესტრში, რომელიც აღწერს საკონტაქტო ინფორმაციას, როგორც დეტალი დოკუმენტში "ნაღდი ფულის მიღების ორდერი" და ა.შ.
ასეთი კონფიგურაციის განხორციელებისას, ამ ტიპის შემადგენლობა შეიძლება შეიცვალოს - მას ახალი ობიექტები დაემატოს და ასევე პირიქით - გამოირიცხოს არასაჭირო ტიპები.
თუ ჩვენი ახალი „განსაზღვრული ტიპის“ ნაცვლად გამოვიყენებთ კომპოზიტურ ტიპს ყველა ადგილას, სადაც ასეთი ერთეული გამოიყენება, მაშინ ყველგან მოგვიწევს ტიპების შემადგენლობის შეცვლა. ეს არის ხანგრძლივი, რთული, შრომატევადი და არსებობს გარკვეული რეკვიზიტების დავიწყების შესაძლებლობა.
თუ იყენებთ განსაზღვრულ ტიპს, მაშინ აპლიკაციის გადაწყვეტის დასრულების პროცესში, მხოლოდ ამ ტიპის განმარტება (და პროგრამის კოდი, რომელიც ამუშავებს ასეთ ველებს) უნდა შეიცვალოს.
ყველა დეტალი, რომლის ტიპად მითითებულია ტიპი, ავტომატურად შეიცვლება.
აქ არის განსაზღვრული ტიპის გამოყენების კიდევ ერთი მაგალითი.
ზოგიერთი დეტალისთვის არის აკრეფის სტანდარტი კონფიგურაციის ფარგლებში. მაგალითად, ჩვენ განვსაზღვრავთ რაოდენობას, როგორც სიგრძის რიცხვს 15 სიზუსტით 3, და ჯამს, როგორც სიგრძის რიცხვს 15 სიზუსტით 2.
დავუშვათ, რომ კომპანიას სჭირდებოდა ძვირადღირებული საქონლის აღრიცხვა მაღალი სიზუსტითმათი წონა.
შესაბამისად, დაგვჭირდა დეტალების სიზუსტის გაზრდა 4 ათობითი ადგილამდე. ეს ცვლილებები ერთდროულად უნდა განხორციელდეს დოკუმენტის ყველა დეტალისა და რესურსების რეგისტრაციისთვის.
ეს არ არის რთული ამოცანა, მაგრამ ძალიან შრომატევადი და მოითხოვს დეველოპერის დიდ ზრუნვას და გამძლეობას.
როდესაც თქვენ შექმნით ახალ განსაზღვრულ ტიპს, თქვენ მხოლოდ უნდა მიუთითოთ მისი ტიპი. შემდეგ დოკუმენტის დეტალების შექმნისა და რესურსების რეგისტრაციისას შეგიძლიათ აირჩიოთ ბმული შექმნილი განსაზღვრული ტიპისთვის.
ეს მიდგომა საშუალებას გვაძლევს გარანტირებული ვიყოთ ერთი და იგივე ტიპის მონაცემები (იგივე სიგრძე, სიზუსტე, იგივე შემადგენლობა კომპოზიციური ტიპის ველებისთვის და ა.შ.) ყველა ადგილას, სადაც ის გამოიყენება.
შემდეგ, თუ თქვენ გჭირდებათ ყველა დეტალის მონაცემთა ტიპის შეცვლა, თქვენ არ გჭირდებათ ხელით შეასწოროთ თითოეული ატრიბუტი, საკმარისია ცვლილებების შეტანა შესაბამის განსაზღვრულ ტიპში.
განსაზღვრული ტიპი შეიძლება შეიქმნას როგორც კომპოზიტური ტიპი. თუმცა, არსებობს შეზღუდვები ამ კონფიგურაციის ობიექტის გამოყენებასთან დაკავშირებით. ამრიგად, განსაზღვრული ტიპი არ შეიძლება იყოს დამახასიათებელი ტიპების გეგმის მნიშვნელობის ტიპის ნაწილი და ასევე არ შეიძლება იყოს სხვა ატრიბუტის კომპოზიციური მონაცემთა ტიპის ნაწილი.
გაითვალისწინეთ, რომ პლატფორმის 8.3.5 ვერსიაში, განსაზღვრული ტიპების გამოყენების შესაძლებლობები გაიზარდა იმ ტიპების ნაკრების გაფართოებით, რომლებიც შეიძლება იყოს განსაზღვრული ტიპის ნაწილი.
ცვლილებები აღარ არის მანამდე მიმდინარე ვერსიებიპლატფორმა 8.3.10/8.3.11 არ მუშაობდა განსაზღვრულ ტიპთან.
პლატფორმა 8.2-ში root კონფიგურაციის ელემენტს ჰქონდა „პირველადი როლი“ თვისება, რომელშიც დეველოპერმა განსაზღვრა როლი, რომელიც გამოიყენებოდა, თუ საინფორმაციო ბაზამომხმარებლები არ შექმნილა.
პლატფორმა 8.3-ში შესაძლებელი გახდა მრავალი როლის დაზუსტება, რომლებიც გამოყენებული იქნება წვდომის უფლებების დასადგენად, როდესაც მომხმარებლების სია ცარიელია. შესაბამისად, ქონებას ეწოდა „მთავარი როლები“.
გასადიდებლად დააწკაპუნეთ სურათზე.
კონფიგურაციისას მართული აპლიკაციადეველოპერმა უნდა აკონტროლოს პროგრამის კოდის შესრულების კონტექსტი, შესაბამისი წინასწარი პროცესორის დირექტივების გამოყენებით.
იმის გამო, რომ კლიენტზე ხელმისაწვდომია მონაცემთა ტიპებისა და მეთოდების შეზღუდული ნაკრები, დეველოპერს ხშირად სჭირდება კლიენტის პროცედურის შექმნა, საიდანაც გადასცემს კონტროლს სერვერზე.
პლატფორმა 8.3-ში გამოჩნდა დამხმარე კლიენტის ფორმის მოვლენების დამმუშავებლების შესაქმნელად.
გასადიდებლად დააწკაპუნეთ სურათზე.
ახლა დეველოპერს არ სჭირდება სერვერის მეთოდის ხელით შექმნა და მისი გამოძახების მითითება კლიენტის პროცედურის შიგნით, მაგრამ შეუძლია მთლიანად კონცენტრირება მოახდინოს სისტემის აპლიკაციის ლოგიკის განხორციელებაზე.
8.3 პლატფორმის კიდევ ერთი ინოვაცია არის მთელი კონფიგურაციის დისკზე ატვირთვის შესაძლებლობა გარკვეული სტრუქტურის ფაილების ნაკრების სახით.
კონფიგურაცია ყოველთვის იტვირთება მთლიანად, ატვირთული ობიექტების გაფილტვრის შესაძლებლობის გარეშე.
კონფიგურაციის ფაილებზე ასატვირთად უნდა აირჩიოთ კონფიგურაცია – მენიუში ფაილების კონფიგურაციის ატვირთვა და გახსნილ დიალოგში აირჩიეთ დირექტორია, რომელშიც ფაილები შეინახება.
კონფიგურაციის ობიექტები აიტვირთება XML ფაილების ნაკრების სახით. მოდულები და ტექსტის განლაგება ინახება როგორც TXT ფაილები. სურათები კონფიგურაციიდან ინახება გამოსახულების ფაილებად (BMP, PNG და ა.შ.). დახმარების ინფორმაცია აიტვირთება HTML ფაილებში.
გასადიდებლად დააწკაპუნეთ სურათზე.
როგორც ხედავთ, შედეგად მიღებული ფაილები ჩვეულებრივ იყენებენ უნივერსალურ ფორმატებს. მათი რედაქტირება არსებობს დიდი რიცხვისხვადასხვა პროგრამული პროდუქტები.
თქვენ ასევე შეგიძლიათ გამოიყენოთ მესამე მხარის ვერსიების კონტროლის სისტემები. ისინი საშუალებას გაძლევთ შეინახოთ ერთი და იგივე დოკუმენტის მრავალი ვერსია და, საჭიროების შემთხვევაში, დაუბრუნდეთ უფრო მეტს ადრინდელი ვერსიები, დაადგინეთ ვინ და როდის მოახდინა ესა თუ ის ცვლილება.
რედაქტირებული ფაილები შეიძლება ისევ ჩაიტვირთოს კონფიგურაციაში მენიუს პუნქტის კონფიგურაციის გამოყენებით – კონფიგურაციის ჩატვირთვა ფაილებიდან.
ჩამოტვირთვის/ატვირთვის ახალ ფუნქციონალთან მუშაობა ასევე ხელმისაწვდომია პარამეტრების გამოყენებით ბრძანების ხაზი LoadConfigFromFiles და DumpConfigToFiles. მაგალითად, ასე:
"c:\Program Files (x86)\1cv8\8.3.4.437\bin\1cv8.exe" DESIGNER /F "X:\Platform8Demo" /N "Administrator" /DumpConfigToFiles "X:\1"
ადრე, პლატფორმა 8.2-ში, არსებობდა კონფიგურაციის ფაილების ატვირთვის/ჩამოტვირთვის მექანიზმი, რომელიც საშუალებას აძლევდა კონფიგურაციის ობიექტების ზოგიერთი თვისების შერჩევით ატვირთვას/ჩამოტვირთვას (მოდულები, განლაგება და საცნობარო ინფორმაცია).
აღინიშნა, რომ ნაგულისხმევად ბრძანებები "ატვირთვა კონფიგურაციის ფაილები" და "ჩატვირთეთ კონფიგურაციის ფაილები" ბრძანებები გამორიცხულია კონფიგურატორიდან 8.3 პლატფორმაზე.
თუმცა, მთავარი მენიუს მორგებით, შეგიძლიათ აჩვენოთ ეს ბრძანებები მენიუში და გამოიყენოთ ისინი.
ფაილებში კონფიგურაციების ატვირთვის ახალი მექანიზმი ყოველთვის ატვირთავს მთელ კონფიგურაციის მონაცემებს.
რეგულარული ფორმები და ინტერფეისები აიტვირთება ბინარული ფორმით (შიდა) და მათი რედაქტირება შეუძლებელია. პროვაიდერის კონფიგურაცია ასევე არ არის განკუთვნილი რედაქტირებისთვის.
დარჩენილი ობიექტები აიტვირთება ფაილებში უნივერსალური ფორმატები. არსებითად, მექანიზმი ორიენტირებულია მართულ აპლიკაციაზე.
ახალი მექანიზმი დეველოპერს აძლევს შესაძლებლობას ავტომატურად დაამუშაოს კონფიგურაცია კონფიგურატორის პარტიულ რეჟიმში გაშვებით.
ასევე ახლა კონფიგურაციის რედაქტირება შესაძლებელია გარედან პროგრამული უზრუნველყოფამაგალითად, XML ფორმატის გამოყენების წყალობით.
გადმოტვირთვისას ხორციელდება დამატებითი კონფიგურაციის დამუშავება: გაყინული ბმულები იშლება, გამოუყენებელი ინფორმაცია ასევე არ იტვირთება (მაგალითად, დახმარება არარსებული ენისთვის).
ხოლო კონფიგურაციის ჩატვირთვისას მოწმდება მისი მთლიანობა, დაუშვებელია ფაილების ჩატვირთვა არაუნიკალური იდენტიფიკატორებით, მეტამონაცემების ობიექტებით, მონაცემთა არასწორი ტიპის სახელებით და ა.შ.
გაითვალისწინეთ, რომ 8.3.7 ვერსიიდან, გამოჩნდა ახალი ატვირთვის ფორმატი, რომელსაც ეწოდება "იერარქიული". ძველი ფორმატი ცნობილი გახდა, როგორც "წრფივი". ფორმატის შერჩევა ხელმისაწვდომია ფაილის ატვირთვის ფანჯარაში:
8.3.11 ვერსიით დაწყებული, "იერარქიული" ფორმატი გახდა ერთადერთი ხელმისაწვდომი შერჩევისთვის ინტერაქტიული ატვირთვის დროს:
თუ იყენებთ ამ ფუნქციას, გირჩევთ:
8.3.10 ვერსიაში დაიწყო XML ფაილებში კონფიგურაციის ნაწილობრივი ატვირთვის მხარდაჭერა. შედეგად, შესაძლებელი გახდა კონფიგურაციის ატვირთვის გამოყენება XML-ში Git-თან ერთად.
მონაცემთა ტიპები 1C-ში: Enterprise 8.x
სანამ ჩავუღრმავდებით ჩაშენებულ ენობრივ კონსტრუქციებს, უნდა გავეცნოთ მონაცემთა ძირითად ტიპებს. საბედნიეროდ,:
ისინი, ვინც იწყებენ 1C პლატფორმის შესწავლას, ზოგჯერ იბნევიან მონაცემთა ტიპების განსაზღვრაში და წარმოქმნილი ყველა სახის ენის ნიუანსში. ეს პირველი სტატია შესავალია და ეძღვნება პრიმიტიულ 1C მონაცემთა ტიპებს, მათგან არც ისე ბევრია.
ნომერი. რიცხვები 1C-ში ნიშნავს როგორც მთელ, ასევე მცურავი წერტილის მნიშვნელობებს. რიცხვის ტიპის მნიშვნელობის მაქსიმალური სიგრძე შეიძლება იყოს 32 სიმბოლო, ათობითი წერტილის ჩათვლით. გასათვალისწინებელია ისიც, რომ 32-ნიშნა ლიმიტი ვრცელდება მონაცემთა ბაზაში ჩაწერილ ციფრებზე. შესაძლებელია ცვლადის გამოცხადება და 32 სიმბოლოზე მეტი მნიშვნელობის მინიჭება. რიცხვითი მნიშვნელობებისთვის, რომლებიც ინახება მეხსიერებაში, ეს შეზღუდვაᲔს არ მუშაობს. როგორც კი გამოცხადდება "Number" ტიპის ცვლადად, მისი მნიშვნელობა იქნება 0.
ხაზი. ნებისმიერი სხვა პროგრამირების ენის მსგავსად, 1C ახორციელებს ყველა საჭირო ფუნქციას სტრიქონების მანიპულირებისთვის. ღირებულებები ამ ტიპისწარმოდგენილია უნიკოდში. სიმებიანი ტიპის ცვლადების სიგრძე შეზღუდული არ არის.
Თარიღი. თავად თარიღის გარდა, ამ ტიპის მნიშვნელობები ასევე შეიცავს დროს. დრო ეხება საათებს, წუთებს და წამებს. ინიციალიზაციისთანავე ცვლადი ტიპი"თარიღი" მიენიჭება მნიშვნელობა (თარიღი) "01 იანვარი, 0001 00 საათი 00 წუთი 00 წამი, ეს ზოგჯერ იწვევს გაღიზიანებას, მაგრამ დროთა განმავლობაში თქვენ ეჩვევით მას."
ლოგიკური. ნათელია, რომ ამ ტიპის ცვლადებს შეუძლიათ მიიღონ მხოლოდ ორი მნიშვნელობა: True, False.
Განუსაზღვრელი. ტიპის "გაურკვეველი" მნიშვნელობები გამოიყენება იმ შემთხვევებში, როდესაც თქვენ უნდა მიუთითოთ ცარიელი მნიშვნელობა, რომელიც არ ეკუთვნის სხვა მონაცემთა ტიპს. მაგალითად, თქვენ უნდა გამოაცხადოთ ცვლადი, რომელიც შემდეგ გამოყენებული იქნება სადმე. თქვენ შეგიძლიათ მიანიჭოთ მას ისეთი მნიშვნელობა, როგორიცაა 0 ან “” (ანუ ცარიელი სტრიქონი), მაგრამ ამით ჩვენ დაუყოვნებლივ ვაყენებთ მისთვის შესაბამის ტიპს (რიცხვი ან სტრიქონი). მაგრამ რა მოხდება, თუ რომელიმე ამ ტიპის დაყენებამ შეიძლება ხელი შეუშალოს მოგვიანებით? ასეთ შემთხვევებში, შეგიძლიათ გამოიყენოთ "განუსაზღვრელი" ტიპის მნიშვნელობა. აღსანიშნავია ისიც, რომ ჩაშენებული ენის მრავალი ფუნქცია, წარუმატებლად შესრულების შემთხვევაში, შედეგად აბრუნებს ამ ტიპის მნიშვნელობას. თქვენი ფუნქციების აღწერისას რეკომენდებულია იგივე წესის დაცვა.
ნულოვანი. Null-ის ზოგადი მნიშვნელობა თითქმის იგივეა, რაც "გაურკვეველი". ამ ტიპის მნიშვნელობები გამოიყენება მონაცემთა ბაზაში დაკარგული მნიშვნელობის აღსანიშნავად. ყველაზე ხშირად, შეგიძლიათ მიიღოთ ამ ტიპის მნიშვნელობები შეკითხვის ენის გამოყენებით. მაგალითად, მოთხოვნა, რომელიც იყენებს ცხრილის შეერთებას. ვთქვათ, ერთ-ერთ ცხრილს არ აქვს მნიშვნელობა, რომელიც აკმაყოფილებს პირობას. ამ შემთხვევაში გამოტოვებული მნიშვნელობა შეიცვლება Null ტიპის მნიშვნელობით.
შესაძლებელია შეგხვდეთ Null ტიპის მნიშვნელობა არა მხოლოდ შეკითხვებთან მუშაობისას. მაგალითად, Null ტიპის მნიშვნელობები მიიღება ატრიბუტებით, რომლებიც არ გამოიყენება ობიექტის მიერ. წარმოვიდგინოთ, რომ გვაქვს იერარქიული დირექტორია"რაოდენობის" ატრიბუტით. ამ ატრიბუტის შექმნისას, მისი "გამოყენება" თვისება დაყენდა "ელემენტისთვის". თუ ცდილობთ ამ ატრიბუტზე წვდომას "ჯგუფის" ტიპის დირექტორიაში ელემენტისთვის, მაშინ მისი მნიშვნელობა იქნება Null.
ტიპი. ეს ტიპი გამოიყენება ხელმისაწვდომი ტიპების დასადგენად. ცოტა დამაბნეველად ჟღერს? კარგი, შევეცდები ავხსნა მაგალითით. წარმოიდგინეთ, რომ თქვენ წინაშე გაქვთ ორი ცვლადის ტიპების შედარება. კოდში ასე გამოიყურება:
ცვლადი1 = 123; //ვინაიდან ჩვენ მივენიჭეთ რიცხვი, ცვლადის ტიპი იქნება "number".
ცვლადი2 = "სტრიქონი"; //აქ მივანიჭეთ სტრიქონი, რაც ნიშნავს, რომ ცვლადის ტიპი იქნება string.
ახლა თქვენ უნდა იყოთ 100% დარწმუნებული, რომ ცვლადი1 არის რიცხვითი. სწორედ აქ გამოდგება "ტიპი" (სასაცილოდ ჟღერს) და ასევე რამდენიმე დამხმარე ფუნქცია. ჯერ-ჯერობით დეტალებს არ შევეხები. უბრალოდ შეხედეთ და შეეცადეთ გაიგოთ ქვემოთ მოცემული მაგალითი:
თუ (TypeValue(Variable1) = Type ("ნომერი")) მაშინ
ანგარიში ("ცვლადი1 არის რიცხვითი!");
წინააღმდეგ შემთხვევაში
ანგარიში ("ცვლადი1 არ არის რიცხვითი:()");
დაასრულე თუ;
კოდის ამ პატარა ნაჭერში, პირველად ვიღებ ცვლადის ტიპს TypeValue() ფუნქციის გამოყენებით. ეს ფუნქციაპარამეტრად იღებს იმ მნიშვნელობას, რომლის ტიპიც გსურთ მიიღოთ. ჩვენს შემთხვევაში ეს არის "ცვლადი1". შემდეგ მე უნდა მივიღო "Type" ტიპის მნიშვნელობა, რომელიც ახასიათებს ტიპს "Number". ამ მიზნით, ჩაშენებული ენა უზრუნველყოფს "Type()" ფუნქციას. მას სჭირდება მხოლოდ ერთი არგუმენტი - ტიპის სახელის სტრიქონიანი წარმოდგენა. ვინაიდან ჩვენ უნდა შევადაროთ "Number" ტიპის, ფუნქციის პარამეტრი იქნება "Number".
მადლობა იგორ ანტონოვს ამ სტატიის დაწერაში დახმარებისთვის.
ეს სტატია აგრძელებს სტატიების სერიის "პირველი ნაბიჯები 1C განვითარებაში". საუბარი იქნება მონაცემთა პრიმიტიულ ტიპებზე და მათთან მუშაობისას ყველაზე გავრცელებულ ფუნქციებზე. მასალის წაკითხვის შემდეგ გაიგებთ:
სტატია დაიწერა 1C პლატფორმის 8.3.4.496 ვერსიისთვის, ამიტომ ინფორმაცია ასევე აქტუალურია მოქმედი ვერსიაპლატფორმები. თუმცა, უნდა აღინიშნოს, რომ 8.3.6.1977 ვერსიაში დაემატა სტრინგებთან მუშაობის ახალი ფუნქციები. ამიტომ, როდესაც სტატიიდან ნაბიჯებს იმეორებთ, არ გაგიკვირდეთ, თუ სინტაქსის ასისტენტის შესაბამის განყოფილებაში ნახავთ ზოგიერთ ფუნქციას, რომელიც არ არის ნაჩვენები ჩვენს ეკრანის სურათზე. ჩვენ ასევე გირჩევთ გაეცნოთ ახალ StringWithNumber() მეთოდს, რომელიც დამატებულია პლატფორმაში 8.3.10.
გამოირჩევა შემდეგი პრიმიტიული მონაცემების ტიპები:
პრიმიტიული მონაცემთა ტიპი ხაზი(სტრიქონის მუდმივი) შედგება სხვადასხვა სიმბოლოსგან. ხაზიყოველთვის გარშემორტყმულია ბრჭყალებით. სიმებიანი მუდმივის მაგალითი:
Message.Text = "არსებობს ცარიელი მონაცემები";
იმათ. ხაზი "არსებობს ცარიელი მონაცემები" ენიჭება ატრიბუტს ტექსტიობიექტი შეტყობინება. ყველაფერი, რაც გარშემორტყმულია ციტატებით, ითვლება სტრინგად.
სტრიქონი შეიძლება შედგებოდეს ნებისმიერი სიმბოლოსგან. სიმები შეიძლება იყოს მრავალხაზოვანი. ამ შემთხვევაში, ყოველი ახალი ხაზი უნდა განისაზღვროს ბრჭყალებში. Მაგალითად:
ტექსტი = „შევსებულია არასწორი დეტალები“
„შეუძლებელია დოკუმენტის განთავსება“;
მძიმით იდება მხოლოდ ბოლო ხაზის ბოლოს.
არსებობს კიდევ ერთი გზა - მთლიანი ტექსტის ჩარჩო მხოლოდ ერთი ბრჭყალებით, მაგრამ თითოეული ახალი ხაზიუნდა დაიწყოს ვერტიკალური ზოლით.
ეს სინტაქსი ყველაზე ხშირად გამოიყენება ტიპიური კონფიგურაციები. კერძოდ, შეკითხვის ენაზე. Მაგალითად:
მოთხოვნა.ტექსტი =
"აირჩიე
| Employees.Name AS Employee,
| თანამშრომლები.დაბადების თარიღი AS DateBirth
|საიდან
| Directory.Employees HOW თანამშრომლები
|სად
| არა თანამშრომლები ეს არის ჯგუფი“;
უნდა აღინიშნოს, რომ დამატების ოპერაცია განისაზღვრება სტრიქონებისთვის. ეს არ არის არითმეტიკული ოპერაცია, მას უწოდებენ შეერთების ოპერაციას.
იმათ. თქვენ უნდა დააკავშიროთ, მაგალითად, ორი ხაზი, ხაზებს შორის დამატების ნიშნით "+":
ტექსტი = „დეტალები არასწორად არის შევსებული“ + „დოკუმენტის განთავსება შეუძლებელია“;
ამრიგად, ხაზები გაერთიანებულია. შეერთების ოპერაცია, რა თქმა უნდა, გამოიყენება უფრო მეტ სტრინგზე. სხვა ოპერაციები (გამოკლება, გამრავლება, გაყოფა) დაუშვებელია სტრიქონებისთვის.
თუ სტრიქონში შემავალი სიტყვა ბრჭყალებში უნდა იყოს ჩასმული, მაშინ სტრიქონის შიგნით ციტატა უნდა განისაზღვროს ორმაგი ბრჭყალებით. Მაგალითად:
ტექსტი = “შეცდომა მოდულში “General module1””;
IN ამ მაგალითშიპირველი ციტატა ხსნის სტრიქონს. მეორე და მესამე ბრჭყალები ერთმანეთის გვერდით მიუთითებს ბრჭყალზე.
და ბოლოს არის სამი ბრჭყალი: ბოლო ბრჭყალი ხურავს ხაზს, ორი წინა მიუთითებს ბრჭყალზე.
სტრიქონებზე შესაძლებელია სტრიქონების კონვერტაციის სხვადასხვა ოპერაციები, პირველი რამდენიმე მარცხენა სიმბოლოს იდენტიფიცირება, რამდენიმე ყველაზე მარჯვენა სიმბოლოს იდენტიფიცირება, სტრიქონის შიგნით ქვესტრიქონის ძიება და ა.შ.
ყველა ეს ფუნქცია ხელმისაწვდომია კონფიგურაციის ნებისმიერ ადგილას.
სინტაქსის ასისტენტში ისინი განყოფილებაში არიან ჩაშენებული ენის ზოგადი აღწერა – ჩაშენებული ფუნქციები – String ტიპის მნიშვნელობებთან მუშაობის ფუნქციები.
ფუნქციების საკმაოდ დიდი რაოდენობაა და ისინი, როგორც წესი, საკმარისია სიმებიანი მუდმივებთან მუშაობისთვის.
მოდით შევხედოთ პრობლემის გადაჭრის მაგალითს სიმებიანი ფუნქციების გამოყენებით.
Ამოცანა:
ფუნქცია უნდა შემუშავდეს. თვითნებური სტრიქონი გადაეცემა ფუნქციას პარამეტრად. ხაზის სიმბოლოები ასევე შეიძლება იყოს რიცხვები.
ციფრების თანმიმდევრობა (ერთი ან მეტი), რომელიც გამოყოფილია სხვა სიმბოლოებისგან სივრცეებით, წარმოადგენს დადებით მთელ რიცხვს.
მაგალითად, ხაზი "72 ABC 6AP 31 54f -22" შეიცავს ორ მთელ რიცხვს დადებითი რიცხვები: 72 და 31. ინტერვალის გარდა, სხვა არამნიშვნელოვანი სიმბოლოები (როგორიცაა ჩანართი, კარის დაბრუნება) არ გამოიყენება. ფუნქციამ უნდა დააბრუნოს დადებითი მთელი რიცხვების რაოდენობა.
ის უნდა განთავსდეს მართულ აპლიკაციის მოდულში. აუცილებელია იმის უზრუნველყოფა, რომ ის გამოიძახება სისტემის გაშვებისას. განსაზღვრეთ სტრიქონი ცვლადის გამოყენებით.
მოდით გავხსნათ მართული აპლიკაციის მოდული და შევარჩიოთ სიიდან შერჩევის ველში კონფიგურატორის პანელში მოდულისტანდარტული დამმუშავებელი AtSystemStart().
დამმუშავებლის შიგნით ჩვენ განვსაზღვრავთ ცვლადს ხაზი, Მაგალითად:
რიგი = „72 ABC 6AP 31 54f -22“;
რაოდენობა = მთელი რიცხვების რაოდენობა (სტრიქონი);
მოდით გავაგზავნოთ შეტყობინება მთელი რიცხვების რაოდენობის შესახებ:
Report("სტრიქონი შეიცავს " + ნომერი + " მთელი რიცხვები");
ამ შემთხვევაში, ცვლადი რაოდენობაირიბად გადაიქცევა ტიპად სიმებიანი მუდმივი. შემდეგ შეერთების ოპერაცია შესრულდება სამ სტრიქონზე და შეტყობინება გადაიცემა.
განვსაზღვროთ ფუნქციის დასაწყისი და დასასრული (ანუ შაბლონი). მთელი რიცხვების რაოდენობა (სტრიქონი).
ახლა მოდით შევხედოთ ერთ-ერთს შესაძლო ვარიანტებიმახასიათებლების განვითარება მთელი რიცხვების რაოდენობა (სტრიქონი). ამავდროულად, ჩვენ გავეცნობით რამდენიმე ჩაშენებულ ფუნქციას, რომელიც შექმნილია სიმებთან მუშაობისთვის.
პირველ რიგში, თქვენ უნდა გაეცნოთ ფუნქციას სიმბოლო კოდი. ეს ფუნქცია იღებს სიმბოლოს კოდს, რომელიც მდებარეობს გავლილ სტრიქონში მითითებული ნომრის პოზიციაზე.
Სინტაქსი:
სიმბოლოს კოდი (,)
Პარამეტრები:
(აუცილებელია)
(არასავალდებულო) - ეს არის სიმბოლოს რიცხვი ხაზში, რომლის კოდიც გსურთ მიიღოთ. ხაზში სიმბოლოების ნუმერაცია იწყება 1-დან.
დაბრუნების ღირებულება:
გადაცემული სიმბოლოს კოდი. კოდი ბრუნდება Unicode კოდირების მიხედვით.
გთხოვთ გაითვალისწინოთ, რომ პარამეტრი არის ნაგულისხმევი მნიშვნელობა 1.
სტრიქონი ასევე შეიძლება შედგებოდეს ერთი სიმბოლოსგან. ამრიგად, შესაძლებელია კოდის 0 და კოდის დადგენა, ხოლო ყველა სხვა ციფრის კოდები, როგორც ცნობილია, მათ შორის ინტერვალშია.
მოდით განვსაზღვროთ შესაბამისი ცვლადები და მათი მნიშვნელობები:
Code0 = სიმბოლოს კოდი (“0”);
Code9 = CharacterCode(“9”);
პრობლემის გადასაჭრელად, ჩვენ ვირჩევთ შემდეგ სქემას:
ახლა მოდით გადავხედოთ ფუნქციებს, რომლებიც გვჭირდება პრობლემის გადასაჭრელად.
AbbrLP
სინტაქსი: AbbrLP()
Პარამეტრები:
(აუცილებელია).
ჭრის სივრცეებს (უმნიშვნელო სიმბოლოებს) პირველის მარცხნივ მნიშვნელოვანი სიმბოლოსტრიქონში და გამოჩნდება ხაზის ბოლო მნიშვნელოვანი სიმბოლოს მარჯვნივ.
იპოვე
სინტაქსი: Find(,)
Პარამეტრები:
(აუცილებელია),
(აუცილებელია).
აბრუნებს ნაპოვნი ქვესტრიქონის პირველი სიმბოლოს პოზიციას.
სტრიქონში სიმბოლოების ნუმერაცია იწყება 1-დან. თუ სტრიქონი არ შეიცავს მითითებულ ქვესტრინგს, მაშინ ჩვენ შემთხვევაში ქვესტრინგად გამოვიყენებთ ინტერვალს (“ ”).
ლომი
სინტაქსი: Lev(,)
Პარამეტრები:
(აუცილებელია),
(აუცილებელია).
ირჩევს სტრიქონის პირველ მარცხენა სიმბოლოებს. ამ ფუნქციის გამოყენებით განვსაზღვრავთ სიმბოლოთა ჯგუფებს ანალიზისთვის (მარცხნიდან პირველ სივრცეში).
სიძლიერის სიგრძე
სინტაქსი: StrLength()
Პარამეტრები:
(აუცილებელია).
იღებს სტრიქონში სიმბოლოების რაოდენობას. ჩვენ მას გამოვიყენებთ სტრიქონის სიგრძის დასადგენად.
ფუნქცია სიმბოლო კოდი, რომელსაც გამოვიყენებთ მთელი რიცხვების სიმბოლოების ჯგუფების დასადგენად, ადრე იყო აღწერილი.
უფლება
სინტაქსი: მარჯვენა (,)
Პარამეტრები:
(აუცილებელია),
(აუცილებელია).
ირჩევს სტრიქონში ყველაზე მარჯვნივ სიმბოლოებს. ამ ფუნქციის გამოყენებით ჩვენ ვირჩევთ სტრიქონის ჯერ კიდევ დაუმუშავებელ ნაწილს.
AbbrL
სინტაქსი: აბრევიატურა ()
Პარამეტრები:
(აუცილებელია).
წყვეტს სივრცეებს (არამნიშვნელოვანი სიმბოლოები) სტრიქონის პირველი მნიშვნელოვანი სიმბოლოს მარცხნივ. ჩვენ ვიყენებთ ამ ფუნქციას დანარჩენი სტრიქონის მარცხენა მხარეს შესაძლო სივრცეების მოსაშორებლად.
ქვემოთ მოცემულია ფუნქციის შესაძლო ალგორითმი კომენტარებით.
მოდულების ცვლადები და მონაცემთა ბაზის ობიექტების დეტალები შეიძლება იყოს რიცხვითი.
რიცხვისთვის არსებობს ციფრული ლიმიტი. რიცხვითი დეტალებისთვის, მთელი რიცხვის ნაწილის სიგრძე არ შეიძლება აღემატებოდეს 32 სიმბოლოს.
წილადი ნაწილის სიზუსტე არ უნდა აღემატებოდეს 10 ციფრს. როდესაც ცვლადი დეკლარირებულია და მას ენიჭება რიცხვითი მნიშვნელობა, მაშინ მისი ბიტის სიღრმე არსად არის დაფიქსირებული. თუმცა, ასევე არსებობს შეზღუდვები ცვლადებისთვის.
სინტაქსის დამხმარე ამბობს, რომ რიცხვისთვის დასაშვები ბიტის მაქსიმალური სიღრმე არის 38 სიმბოლო. ასეთი შეზღუდვა ხელს არ უშლის რაიმე ეკონომიკური პრობლემის გადაჭრას, ე.ი. ნებისმიერი ფულადი ღირებულება შეიძლება აღწერილი იყოს ამ რიცხვების გამოყენებით.
ამასთან, თუ თქვენ ჯერ კიდევ გჭირდებათ დიდი რაოდენობით აღწეროთ ზოგიერთი მათემატიკური ამოცანის გადასაჭრელად, მაშინ პროგრამირების თეორიაში არსებობს ალგორითმები, რომლებიც საშუალებას გაძლევთ აღწეროთ რიცხვები ნებისმიერი განზომილებით არსებული შეზღუდვების საფუძველზე.
ოპერაციები, რომლებიც გამოიყენება ნომრებზე:
თუ ვსაუბრობთ რიცხვითი მნიშვნელობების სიზუსტეზე, მონაცემთა ბაზის დეტალებთან დაკავშირებით, არსებობს ბუნებრივი შეზღუდვები.
მაგრამ რაც შეეხება ცვლადებს, აქ არის თავისებურება. სინამდვილეში, თქვენ შეგიძლიათ იმუშაოთ ძალიან ცვლადებზე დიდი რაოდენობით, მაგრამ მნიშვნელობები, რომელთა მთლიანი ნაწილის სიგრძე არ აღემატება 32 სიმბოლოს, შეინახება საინფორმაციო ბაზაში.
რაც შეეხება ლოგიკური მონაცემთა ტიპს, არსებობს მხოლოდ ორი მნიშვნელობა, True და False, რომელთა მიღება შესაძლებელია სხვადასხვა გზით.
შეგიძლიათ, მაგალითად, გამოიყენოთ შედარების ოპერაციები რიცხვებსა და თარიღებს შორის. შედეგად, მიიღება გარკვეული ლოგიკური მნიშვნელობა, რომელიც მომავალში ყველაზე ხშირად გამოიყენება პირობით განცხადებებში და მარყუჟის ოპერატორებში.
თარიღის აღწერის ორი გზა არსებობს. ერთ-ერთი მათგანი იყენებს სიტყვასიტყვით. ლიტერალი იწერება ერთ ბრჭყალებში.
ჯერ წელი იწერება, მერე თვე და მერე დღე.
საჭიროების შემთხვევაში, შეგიძლიათ დროც მიუთითოთ, რადგან 1C: Enterprise 8 სისტემაში, ნებისმიერი თარიღი შეიცავს როგორც თარიღს, ასევე დროს. Მაგალითად:
DocumentDate = '20140315121020';
თუ დრო არ არის მითითებული, ის ნაგულისხმევად არის ნულოვანი. თარიღის აღწერილობაში შეგიძლიათ გამოიყენოთ ნებისმიერი გამყოფი. Მაგალითად:
DocumentDate = '2014.03.15';
თარიღის დადგენის მეორე გზა არის გლობალური კონტექსტის ფუნქციის გამოყენება Თარიღი(). ამ შემთხვევაში, ამ ფუნქციას გადავცემთ იგივე პარამეტრებს: წელი, თვე, დღე, გამოყოფილი მძიმეებით.
თქვენ ასევე შეგიძლიათ მიუთითოთ დრო. თუ არ მიუთითებთ, მაშინ ის ნაგულისხმევად იქნება დღის დასაწყისი.
1C: Enterprise 8 სისტემაში, ცარიელი თარიღი არის კალენდრის დასაწყისი. ჩაწერის პარამეტრები:
EmptyDate = '00010101';
EmptyDate = თარიღი (1,1,1);
ორივე ჩანაწერი დააბრუნებს ერთსა და იმავე შედეგს და ეს თარიღი ჩაითვლება ცარიელი.
ფუნქციის მოხერხებულობა Თარიღი()საქმე იმაშია, რომ მასში შეგვიძლია გადავიტანოთ არა კონკრეტული მნიშვნელობები, არამედ რამდენიმე ცვლადი. ანუ, ზოგჯერ ჩვენ ვაშენებთ თარიღს სხვადასხვა ცვლადის შეგროვებით.
დამატების ოპერაცია გამოიყენება თარიღისთვის. დამატების ოპერაცია თარიღს ამატებს წამების მითითებულ რაოდენობას.
დავალების განცხადებაში, სადაც მრავალი ცვლადი ჯამდება (მაგალითად, ცვლადი = A + B + C), შესაძლებელია მონაცემთა პრიმიტიული ტიპების კონვერტაცია. მონაცემთა ტიპის კონვერტაცია ხორციელდება პირველი მონაცემთა ტიპის მნიშვნელობაზე.
ამრიგად, თუ მონაცემთა პირველი ტიპი არის სტრიქონი, მაშინ სისტემა შეეცდება მთელი გამოხატულება სტრიქონად აქციოს. თუ მონაცემთა პირველი ტიპი არის რიცხვი, მაშინ სისტემა შეეცდება მოიპოვოს ციფრული მონაცემთა ტიპი.
ასე რომ, სტრიქონი + ნომერი = სტრიქონი. ზოგჯერ რიცხვი შეიძლება დაემატოს სტრიქონს, თუ სტრიქონიდან შეიძლება ამოღებულ იქნას გარკვეული რიცხვითი მნიშვნელობა (მაგალითად, 123 + "456").
ლოგიკური მონაცემთა ტიპისთვის გამოიყენება შემდეგი გამონათქვამები:
True AND 1 = True;
მართალია და 0 = მცდარი.
ნულზე მეტი ნებისმიერი რიცხვი გარდაიქმნება True-ში, 0 გარდაიქმნება მცდარი.
თარიღი, როგორც ზემოთ აღინიშნა, შეიძლება დაემატოს ნომერს. თარიღები ასევე შეიძლება დაემატოს ლოგიკურ მონაცემთა ტიპს.
ამ შემთხვევაში True გარდაიქმნება 1-ად და False 0-ად.
ოპერატორებში ტიპის კონვერტაციის გარდა, აშკარა ტიპის კონვერტაცია შესაძლებელია შესაბამისი ფუნქციების გამოყენებით: სტრიქონი(), ნომერი(), თარიღი(), ლოგიკური().
TO ხაზინებისმიერი ტიპის მონაცემთა კონვერტაცია ხდება.
რიცხვის მიღება შესაძლებელია სტრიქონიდან ან ლოგიკურიდან. ლოგიკური კონვერტაცია: True 1-ზე, False 0-მდე.
შეგიძლიათ გადასცეთ სტრიქონი Date-ზე, თუ ის შეიცავს თარიღის მნიშვნელობას. მაგალითად, თარიღი (“20140315”). როგორც უკვე აღვნიშნეთ, შესაძლებელია კონვერტაცია პოზიციის მიხედვით:
Თარიღი(,).
თქვენ შეგიძლიათ გადაიყვანოთ ნომერი და თავად ლოგიკური მნიშვნელობა ლოგინად.
ეს ფუნქციები შეიძლება გამოყენებულ იქნას პროგრამის კოდში აშკარა ტიპის კონვერტაციის შესასრულებლად.
მონაცემთა პრიმიტიული ტიპები Number, String, Date და Boolean შეიძლება იმოქმედონ მონაცემთა ბაზის ველებად.
NULL არის პირდაპირი. ის ჩვეულებრივ გამოიყენება მონაცემთა ბაზის შეკითხვებში, როდესაც გაერთიანებულია ორი ან მეტი ცხრილი.
ეს არის მეორე ცხრილში დაკარგული ჩანაწერები, რომლებიც ივსება NULL მნიშვნელობით. იმათ. ეს არის ერთგვარი დაკარგული ღირებულება.
მომავალში, მიღებული შედეგის დამუშავებისას, ეს უნდა იქნას გათვალისწინებული, რადგან NULL არ არის ნული, არამედ შესაბამისი მონაცემთა ტიპი.
იმისათვის, რომ მნიშვნელობა დამუშავდეს, NULL უნდა გადაიცეს ზოგიერთ ჩვეულებრივ მონაცემთა ტიპზე, რომელიც შეიძლება გამოვიდეს ან გამოიყენოთ არითმეტიკული ოპერაციებში.
NULL ტიპის მნიშვნელობის მიღება ასევე შესაძლებელია ჩაშენებულ ენაში. თქვენ შეგიძლიათ განსაზღვროთ ცვლადი და მიანიჭოთ მას იგივე NULL მნიშვნელობა. თუმცა, ასეთი დავალება თითქმის არასოდეს გამოიყენება პროგრამის კოდში.
იმათ. NULL ნამდვილად არის მონაცემთა ტიპი, რომელიც მიიღება შეკითხვებთან მუშაობისას. NULL მნიშვნელობა შეკითხვის ენაში უნდა დამუშავდეს სპეციალური გზით.
კერძოდ, A=NULL შედარება არ იმუშავებს შეკითხვის დონეზე, საჭირო იქნება სპეციალიზებული ფუნქციების გამოყენება. თუმცა, ჩაშენებულ ენაში NULL მნიშვნელობასთან შედარება სწორად იქნება დამუშავებული.
მონაცემთა ტიპი Undefined არის ზოგიერთი ატრიბუტის არა ცარიელი მნიშვნელობა.
მაგალითად, თუ დირექტორიას ატრიბუტს აქვს ბმული სხვა დირექტორიასთან, როგორც მონაცემთა ტიპი, მაშინ ამ ატრიბუტის ცარიელი მნიშვნელობა არ იქნება განუსაზღვრელი.
ეს ტიპი (Undefined) ჩნდება, პირველ რიგში, თუ გვაქვს გარკვეული ცვლადი და ის არ არის ინიციალიზებული (მონაცემთა ტიპი არ არის განსაზღვრული).
მეორე მაგალითი: Undefined მონაცემთა ტიპი ბრუნდება მრავალი ჩაშენებული ენის ფუნქციით, თუ მოქმედების შესრულება შეუძლებელია.
მაგალითად, დირექტორიაში ელემენტის ძებნა სახელით, თუ რომელიმე დირექტორიაში არ არის ასეთი ელემენტის სახელი. მეთოდი FindByNameდააბრუნებს მნიშვნელობას Განუსაზღვრელი.
სადაც Განუსაზღვრელიარის საკვანძო სიტყვა, იგი მონიშნულია წითლად. ესეც პირდაპირი, წერისთვის Განუსაზღვრელიარ არის საჭირო ციტატების, მძიმეების, ფრჩხილების გამოყენება და ა.შ.
თუ არსებობს დოკუმენტების სია და ეს სია ცარიელია (მასში ხაზები არ არის), მაშინ მიმდინარე ხაზი მიიღებს მნიშვნელობას Განუსაზღვრელი.
თუ ინფობაზას აქვს ატრიბუტი კომპოზიციური მონაცემთა ტიპით, მაშინ ამ ატრიბუტის ცარიელი მნიშვნელობა იქნება ტოლი Განუსაზღვრელი.
მაგრამ თუ მონაცემთა ტიპი არ არის კომპოზიტური, მაშინ ცარიელი მნიშვნელობა შეესაბამება ამ ტიპის ცარიელ მნიშვნელობას (თარიღისთვის ეს არის პირველი წლის პირველი თვის პირველი დღის პირველი საათის პირველი წამი).
NULL და Undefined არის ორივე მონაცემთა ტიპები და მნიშვნელობები ამ ტიპებში და ერთი და მხოლოდ ერთი. NULL-სთვის ეს არის მნიშვნელობა NULL, განუსაზღვრელისთვის ეს არის Undefined.
ამ ტიპის მონაცემთა ძირითადი გამოყენება არის გარკვეული ცვლადის ან მონაცემთა ბაზის ატრიბუტის მნიშვნელობის შედარება კონკრეტულ ტიპთან.
იმათ. ალგორითმში უნდა გესმოდეთ, რა ტიპისაა მოცემული ობიექტი.
აღსანიშნავია, რომ მონაცემთა ამ ტიპს არ აქვს ლიტერალი. ჩვენ არ შეგვიძლია დავწეროთ NULL ან Undefined, მაგრამ შეგვიძლია მივიღოთ ამ ტიპის მნიშვნელობა ორი ფუნქციის გამოყენებით ტიპიდა TypeValue.
ზოგიერთი ობიექტის ტიპის მისაღებად (ეს შეიძლება იყოს ცვლადი, ან მონაცემთა ბაზის ატრიბუტი, ან ფორმის ატრიბუტი), გამოიყენება ფუნქცია. TypeValue.
ამ ფუნქციას გადაეცემა ობიექტი, რომლისთვისაც გსურთ მიიღოთ მონაცემთა ტიპი.
ეს ფუნქცია აბრუნებს ტიპის ტიპს დაბრუნების მნიშვნელობად.
მომავალში ის უნდა შევადაროთ ნებისმიერი ტიპის ინტერესს. Მაგალითად:
თუ TypeValue(Element) = Type (“DirectoryLink.Nomenclature”) მაშინ
ანგარიში ("ეს არის პროდუქტი");
დაასრულე თუ;
დასასრულს, მოდით შევაჯამოთ ყველა დაფარული მასალა.
ჩვენ გადავხედეთ ჩაშენებული 1C ენის ძირითად სტრუქტურებს, ვისწავლეთ როგორ გამოვიყენოთ ცვლადები და ოპერატორები და გავარკვიეთ, რატომ და როგორ გამოვიყენოთ პროცედურები და ფუნქციები. გაითვალისწინეთ, რომ ძირითადად ჩვენი პროგრამის ყველა კოდი ამ მომენტამდე იყო თვითკმარი - ჩვენ თვითონ ვწერდით ყველაფერს ნულიდან და ვიყენებდით რამდენიმე კონფიგურაციის ობიექტს ან ჩაშენებულ ენას მინიმუმამდე.
ჩვენ უფრო დეტალურად შევისწავლით ამ ობიექტებს შემდეგ სტატიაში, ასე რომ თვალი ადევნეთ! ;)