ცხრილების აღწერა 1c. მონაცემთა ბაზის შენახვის სტრუქტურა (მართული ფორმები). განსხვავებები არსებული განხორციელებებისგან
მონაცემები, რომლებიც განსაზღვრავს სისტემის ფუნქციონირების ლოგიკას 1C:Enterprise-ზე დაყრდნობით, ეხება ინფობაზას. შენახვა საინფორმაციო ბაზახორციელდება მონაცემთა ბაზაში, როგორც ცხრილების ნაკრები, რისთვისაც 1C:Enterprise 8.1-ს შეუძლია გამოიყენოს მონაცემთა ბაზის მართვის ოთხი სისტემადან ერთ-ერთი (DBMS):
* ჩაშენებული 1C: Enterprise 8.1-ში (ინფორმაციული ბაზის ფაილის ვერსია). ამ შემთხვევაში, საინფორმაციო ბაზის ყველა მონაცემი ინახება ფაილში სახელად 1Cv8.1CD. ამ ფაილს აქვს ორობითი ფორმატი და არსებითად არის მონაცემთა ბაზა ჩაშენებული 1C:Enterprise 8.1 DBMS-ისთვის.
*Microsoft SQL Server(ინფორმაციული ბაზის კლიენტ-სერვერის ვერსია). საინფორმაციო ბაზის ყველა მონაცემი ინახება Microsoft SQL Server მონაცემთა ბაზაში.
* PostgreSQL(ინფორმაციული ბაზის კლიენტ-სერვერის ვერსია). საინფორმაციო ბაზის ყველა მონაცემი ინახება PostgreSQL მონაცემთა ბაზაში.
*IBM DB2(ინფორმაციული ბაზის კლიენტ-სერვერის ვერსია). საინფორმაციო ბაზის ყველა მონაცემი ინახება IBM DB2 მონაცემთა ბაზაში.
მონაცემთა ბაზის ობიექტების დონეზე (ცხრილები, ველები, ინდექსები და ა.შ.), ინფო ბაზის ფაილის და კლიენტ-სერვერის ვერსიებს აქვთ მსგავსი ფორმატი (რომელიც განსხვავდება მცირე დეტალებით). ზოგიერთი ინფორმაცია ამ ფორმატის შესახებ მოცემულია ქვემოთ.
მთელი ინფო ბაზა წარმოდგენილია მონაცემთა ბაზაში, როგორც ცხრილების ნაკრები. მათ შორის არის რამდენიმე ცხრილი, რომელიც აუცილებლად წარმოდგენილია ნებისმიერი ინფობაზის წარმოდგენაში:
* კონფიგურაცია- საინფორმაციო ბაზის ძირითადი კონფიგურაცია. ეს კონფიგურაცია შეესაბამება მონაცემთა რეალურ სტრუქტურას და გამოიყენება 1C:Enterprise 8.0-ის მიერ Enterprise რეჟიმში.
* ConfigSave- კონფიგურაცია რედაქტირებულია კონფიგურატორის მიერ. კონფიგურაცია ConfigSave-დან გადაიწერება Config-ში, როდესაც კონფიგურატორში შესრულდება "მონაცემთა ბაზის კონფიგურაციის განახლება" და პირიქით - როცა კონფიგურატორში შესრულდება ოპერაცია "Configuration - Database Configuration - Return to database configuration".
* ფაილებიშეიცავს სერვისის ინფორმაციას, მაგალითად, კონფიგურაციის საცავთან მუშაობის შესახებ.
*პარამებიშეიცავს ინფობაზის პარამეტრებს. Მათ შორის:
=>
საინფორმაციო ბაზის მომხმარებელთა სია.
=>
ეროვნული საინფორმაციო ბაზის პარამეტრები.
=>
მეტამონაცემების ობიექტებისა და მონაცემთა ბაზის ობიექტების შესაბამისობის ცხრილი (ცხრილები, ველები, ინდექსები).
=>
კიდევ რამდენიმე ინფორმაცია.
*_YearOffset- თარიღების ცვლა მონაცემთა ბაზაში. ეს ცხრილი იქმნება მხოლოდ Microsoft SQL Server-ის გამოყენებისას.
* DBSchemaშეიცავს ინფორმაციას 1C:Enterprise მონაცემთა ბაზის სტრუქტურის შესახებ და განსაზღვრავს მონაცემთა ბაზის სხვა ობიექტებს, რომლებიც გამოიყენება ამ ინფობაზის მიერ.
1C:Enterprise-ის დაწყებისას ის ამოწმებს ჩამოთვლილი ცხრილების არსებობას ინფობაზაში და თუ რომელიმე მათგანი აკლია, გამოჩნდება შეტყობინება „ინფობაზა განადგურებულია“. ყველა ჩამოთვლილი ცხრილის არარსებობა ნიშნავს, რომ ინფო ბაზა ცარიელია. ამ უკანასკნელ შემთხვევაში შეიქმნება ეს ცხრილები.
მონაცემთა ბაზის სხვა ცხრილების სია და სტრუქტურა განისაზღვრება კონკრეტული კონფიგურაციით, კერძოდ, მასში განსაზღვრული მეტამონაცემების ობიექტებით. თითოეული ცხრილის სახელი შედგება ასო პრეფიქსისგან, რასაც მოჰყვება რიცხვი. პრეფიქსი განსაზღვრავს ცხრილის დანიშნულებას, ხოლო ნომერი საშუალებას გაძლევთ განასხვავოთ ერთი და იგივე დანიშნულების ცხრილები, რომლებიც მიეკუთვნება მეტამონაცემების სხვადასხვა ობიექტს. თუ IBM DB2 გამოიყენება როგორც DBMS, მაშინ აღწერილი სტრუქტურა არ არის ცხრილის სახელები, არამედ მათი მეტსახელები.
თუ მინიმუმ ერთი გაცვლის გეგმა განსაზღვრულია კონფიგურაციაში "განაწილებული ინფობაზის" დროშის ნაკრებით, მაშინ შეიქმნება შემდეგი ცხრილები:
*_ConfigChangeRec- კონფიგურაციის ობიექტის ცვლილებების რეგისტრაციის ცხრილი.
* _ConfigChangeRec_ExtProps- კონფიგურაციის ობიექტების შეცვლილი გარე თვისებების ფაილების სახელების ცხრილი.
ქვემოთ მოცემულია მეტამონაცემების სხვადასხვა ობიექტები, რომლებსაც შეუძლიათ შეესაბამებოდეს თითოეულ ცხრილს.
* მუდმივები
=>
_Consts შეიცავს კონფიგურაციაში განსაზღვრული ყველა მუდმივის მიმდინარე მნიშვნელობებს.
=>
_ConstsChangeRec - ცხრილი მუდმივებში ცვლილებების რეგისტრაციისთვის. იქმნება, თუ ერთი მუდმივი მაინც მონაწილეობს გაცვლის გეგმაში მაინც.
* გაცვლის გეგმები
=>
_ კვანძი
=>
_ კვანძი
* სახელმძღვანელოები
=>
_ მითითება
=>
_ მითითება
=>
_ReferenceChangeRec
* დოკუმენტაცია
=>
_დოკუმენტი
=>
_დოკუმენტი
=>
_DocumentChangeRec
* დოკუმენტის თანმიმდევრობა
=>
_ თანმიმდევრობა
=>
_SequenceBoundary
=>
_SequenceChangeRec
* დოკუმენტების ჟურნალები.
=>
_DocumentJournal
* ჩამოთვლა
=>
_ ენუმ
* მახასიათებლების ტიპების გეგმები
=>
_ჩრკ
=>
_ჩრკ
=>
_ChrcChangeRec
* ანგარიშთა სქემები
=>
_ აკ
=>
_ აკ
=>
_ აკ
=>
_AccChangeRec
* გაანგარიშების ტიპების გეგმები
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKindDN
=>
_CalcKind
=>
_CalcKindChangeRec
* ინფორმაციის რეგისტრები
=>
_InfoReg
=>
_InfoRegChangeRec
* დაგროვების რეგისტრები
=>
_ AccumReg
=>
_ AccumRegTotals
=>
_ AccumRegTurnovers
=>
_ AccumRegChangeRec
=>
_AccumRegOptions - პარამეტრების ცხრილი დაგროვების რეგისტრების ჯამების შესანახად, ერთი ყველა დაგროვების რეგისტრისთვის.
* საბუღალტრო რეგისტრები
=>
_AccntReg
=>
_AccntRegED
=>
_AccTtl0
=>
_AccTtl
=>
_AccTtlC
=>
_AccntRegChangeRec
=>
_AccntRegOptions - პარამეტრების ცხრილი ჯამების შესანახად, ერთი ყველა სააღრიცხვო რეესტრისთვის.
* კალკულაციის რეგისტრები
=>
_CalcReg
=>
_CalcRegActPer
=>
_CalcRegChangeRec
=>
_CalcRegRecalc
=>
_CalcRegRecalcChangeRec
* Ბიზნეს პროცესები
=>
_BPRoutePoint
=>
_Საქმის პროცესი
=>
_Საქმის პროცესი
=>
_BusinessProcessChangeRec
* Დავალებები
=>
_ დავალება
=>
_ დავალება
=>
_TaskChangeRec
IBM DB2-ის გამოყენებისას ცხრილის მეტსახელის პრეფიქსები არ იწყება ქვედა ხაზით, არამედ დაუყოვნებლივ ასოს ნაწილით.
ამ ცხრილების რაოდენობა დამოკიდებულია კონფიგურაციის ფუნქციონალურობაზე და შეიძლება იყოს საკმაოდ დიდი. ნორმალურ რეჟიმში, 1C:Enterprise არ ამოწმებს მათ არსებობას, ისევე როგორც მათში შემავალი მონაცემების მთლიანობასა და თანმიმდევრულობას. ამიტომ, მნიშვნელოვანია, რომ მონაცემთა ბაზა, რომელიც მასპინძლობს 1C:Enterprise 8.1 საინფორმაციო ბაზას, დაცული იყოს არაავტორიზებული წვდომისგან და მისი შეცვლა მხოლოდ 1C:Enterprise ინსტრუმენტების გამოყენებით. შესამოწმებლად, თქვენ უნდა გამოიყენოთ კონფიგურატორში ჩაშენებული ფუნქცია "ადმინისტრირება - ტესტირება და კორექტირება".
ასევე მნიშვნელოვანია, რომ მონაცემთა ბაზა, რომელიც ინახავს ინფო ბაზას, იყოს სარეზერვო და აღდგენილი მხოლოდ მთლიანად. ამ მიზნით რეკომენდებულია გამოყენება სარეზერვო ასლიგამოყენებული DBMS-ში ჩაშენებული მონაცემთა ბაზები. ინფორმაციის ბაზის ფაილის ვერსიის სარეზერვო ასლის შექმნა შესაძლებელია 1Cv8.1CD ფაილის კოპირებით.
კონფიგურატორში არის სპეციალური ფუნქცია: ადმინისტრაცია - ატვირთეთ ინფო ბაზა. მისი დახმარებით თქვენ შეგიძლიათ ატვირთოთ მითითებულ ფაილში (ფაილის ატვირთვა) ინფობაზასთან დაკავშირებული ყველა მონაცემი და არა მეტი. საპირისპირო ფუნქცია "Infobase ჩატვირთვა" საშუალებას გაძლევთ ჩატვირთოთ ყველა მონაცემი ატვირთვის ფაილიდან არსებულ ინფობაზაში არსებულის ნაცვლად. ეს ფუნქციები ასევე შეიძლება გამოყენებულ იქნას ინფორმაციის ბაზის მონაცემების სარეზერვო ასლისთვის როგორც ფაილის, ასევე კლიენტ-სერვერის ვერსიებში.
1C პლატფორმა არის მაღალი დონის ინსტრუმენტი მონაცემთა ბაზებთან მუშაობისთვის. ზოგადად, დეველოპერს არ სჭირდება ფიქრი რა და როგორ ხდება DBMS მხარეს, რადგან პლატფორმა თავად წყვეტს რამდენ ცხრილს შექმნის და რა ველები იქნება მათ შიგნით.
თუმცა, დიდ პროექტებში საჭიროა უშუალოდ მონაცემებთან მუშაობა, მაგალითად, ინფორმაციის გაანალიზება მესამე მხარის ხელსაწყოებით ან, როგორც ჩემს შემთხვევაში, მონაცემთა ბაზის ინტეგრირება გარე აპლიკაციებთან. ასეთ სიტუაციაში აუცილებელია გვქონდეს წარმოდგენა ფიზიკური ცხრილების რომელ ველებში უნდა ვეძებოთ საჭირო ინფორმაცია.
ჩაშენებული ფუნქცია შექმნილია სწორედ ასეთი შემთხვევისთვის. GetDatabaseStorageStructure() A, რომელიც აბრუნებს ყველა საჭირო მონაცემს მნიშვნელობების ცხრილის სახით. უფრო მეტიც, ამ ცხრილის ზოგიერთი დეტალი (ველები და ინდექსები) თავად არის მნიშვნელობების ცხრილები.
ერთის მხრივ, მოსახერხებელია ყველა მონაცემის ერთ სტრუქტურაში ყოფნა, მაგრამ, მეორე მხრივ, არსებობს დამატებითი სირთულეები ამ ცხრილის კლიენტზე გადაცემისას (Load() მეთოდი, სამწუხაროდ, არ იტვირთება წყობილ ცხრილებს). . ამის გათვალისწინებით, აუცილებელია ცხრილის ყველა მწკრივის ციკლის გავლა, რაც დიდი მოცულობებით იწვევს მუშაობის შენელებას.
რაც შეეხება საუკეთესო ვარიანტიგადასცემს მეტამონაცემების ობიექტების სახელებს ფუნქციას, რათა შეამციროს დაბრუნებული მონაცემების რაოდენობა. თუმცა, ყველა DBMS ცხრილი არ არის დაკავშირებული კონფიგურაციის მეტამონაცემებთან, ამიტომ დავტოვე სრული სიის ნახვის შესაძლებლობა.
დამუშავების ფუნქციონირება
როდესაც მეტამონაცემების ხის ელემენტი გააქტიურებულია, ცხრილების, ველების და ინდექსების სია შევსებული იქნება. ხის ძირზე ორჯერ დაწკაპუნებით გამოჩნდება ყველა ცხრილი, სერვისის ცხრილების ჩათვლით (არ არის რეკომენდებული, რადგან საძიებო მონაცემების რაოდენობა იზრდება).
ცხრილის სექციებში მუშაობს სტანდარტული ძებნისა და ჩამონათვალის ბრძანებები.
განსხვავებები არსებული განხორციელებებისგან
არსებობს რამდენიმე მსგავსი პუბლიკაცია, მაგალითად და. თუმცა, მათი მინუსი არის მეტამონაცემების ხის ნაკლებობა, რაც ართულებს ნავიგაციას. ძიება ასევე ტარდება მონაცემთა ბაზაში ცხრილებისა და ველების დასახელებით და არა პირიქით.
ფუნქციონალურობით ყველაზე ახლოს ავტორის გამოცემასთან (). ამის საპირისპიროდ, ეს დამუშავება შეიცავს ყველაზე სრულ ხეს მეტამონაცემები (გაცვლის გეგმები, მუდმივები, დოკუმენტების ჟურნალი და ა.შ.). მეტიცმონაცემთა სტრუქტურა უფრო ნათლად არის წარმოდგენილი: მეტამონაცემების ობიექტის ცხრილების სია, ველების სია და ინდექსების სია გამოსახულია ცალკე ცხრილის ნაწილებად.
UPD-2018-01-06 (v1.3).დაფიქსირდა შეცდომა, რომელიც წარმოიშვა თავსებადობის რეჟიმში 8.3.7 და უფრო მაღალი (პლატფორმის ქცევა შეიცვალა).
UPD-2012-08-17 (v1.2).გაკეთდა პატჩი დაგეგმილი ამოცანების სწორად დამუშავებისთვის, დაფიქსირდა გაანგარიშების ტიპების გეგმების ჩვენების წერტილი, გამოსწორდა ქცევა კონფიგურაციის ძირში სტრუქტურის ტიპის გადართვისას.
P.S. ზოგიერთი დამსაქმებელი ეკითხება რეგისტრების ფიზიკური და ვირტუალური ცხრილების რაოდენობას სამუშაოზე განაცხადის დროს. კარგი იქნებოდა ამ კითხვებზე პასუხების ცოდნა, მით უმეტეს, რომ ეს არის 1C: პროფესიული დონე. თუ გსურთ არა მხოლოდ ისწავლოთ ეს პასუხი, არამედ „შეგრძნოთ“ ეს ცხრილები, მაშინ ეს დამუშავება თქვენთვისაა!
პროგრამირების ენაში 1C 8.3 და 8.2 სტრუქტურა არის "Key" და "Value" წყვილების ნაკრები. "Key" ველს აქვს სტრიქონის ტიპი, ხოლო "Value" შეიძლება მიიღოს ნებისმიერი ტიპის მონაცემები. ჩვეულებრივ გამოიყენება ნებისმიერი პარამეტრის ნაკრების შესანახად და პროცედურებს შორის გადასატანად.
1C პროგრამირების ენაში სტრუქტურა შეიძლება შეიქმნას ორი გზით "ახალი" კონსტრუქციის გამოყენებით.
პირველი გზა:
სტრუქტურა = ახალი სტრუქტურა;
Structure.Insert("ParameterKey1", "Parameter Values #1");
Structure.Insert("ParameterKey2", "Parameter Values #2");
მეორე გზა:
სტრუქტურა = ახალი სტრუქტურა ("ParameterKey1, ParameterKey2", "პარამეტრის მნიშვნელობები #1", "პარამეტრის მნიშვნელობები #2");
ორივე მეთოდი შექმნის სტრუქტურას, რომელიც ჩანს გამართვის სკრინშოტში:
მიიღეთ 267 1C ვიდეო გაკვეთილები უფასოდ:
Ცვლილება
თქვენ შეგიძლიათ დაამატოთ ან შეცვალოთ სტრუქტურა "Insert()" მეთოდის გამოყენებით.
Structure.Insert("KeyName", KeyValue);
თუ გსურთ ძველი გასაღების მნიშვნელობის შეცვლა, შეიყვანეთ მისი სახელი. თუ ახალ გასაღებს დაამატებთ, დაამატეთ უნიკალური სახელი სტრუქტურის ყველა კლავიშთან შედარებით.
კოლექციის ელემენტის წასაშლელად, თქვენ უნდა გამოიყენოთ "წაშლა" მეთოდი, სადაც უნდა გადაიტანოთ გასაღების სახელი:
Structure.Delete("KeyName");
ასევე შესაძლებელია კოლექციაში არსებული ყველა ობიექტის გასუფთავება:
Structure.Clear();
სტრუქტურის გავლა
სტრუქტურების კრებულზე გამეორებისთვის, თქვენ უნდა გამოიყენოთ კონსტრუქცია „სტრუქტურის მარყუჟის თითოეული გასაღების და ღირებულებისთვის“.
Მაგალითად:
თითოეული გასაღების და ღირებულებისთვის სტრუქტურის მარყუჟიდან
…… //დამუშავება, მაგალითად, მნიშვნელობების შეცვლა
საბოლოო ციკლი;
თითოეულ ციკლში გამოჩნდება, რომ ჩვენთვის ხელმისაწვდომია შემდეგი ველები: