Programmēšanas valodas 1C 8.3 un 8.2 struktūra ir “atslēgas” un “vērtības” pāru kopa. Laukam “Atslēga” ir virknes veids, savukārt laukā “Vērtība” var pieņemt jebkuru datu tipu. Parasti izmanto, lai saglabātu un pārsūtītu parametru kopu starp procedūrām.
Struktūru 1C programmēšanas valodā var izveidot divos veidos, izmantojot konstrukciju “Jauns”.
Pirmais veids:
Struktūra = jauna struktūra;
Structure.Insert("ParameterKey1", "ParameterValues No.1");
Structure.Insert("ParameterKey2", "ParameterValues No.2");
Otrais veids:
Struktūra = New Structure ("ParameterKey1, ParameterKey2", "ParameterValues No.1", "ParameterValues No.2");
Abas metodes izveidos struktūru, kas redzama atkļūdošanas ekrānuzņēmumā:
Saņemiet 267 video nodarbības 1C bez maksas:
Mainīt
Struktūru var pievienot vai mainīt, izmantojot metodi “Insert()”.
Structure.Insert("KeyName", KeyValue);
Ja jāmaina vecās atslēgas vērtība, ievadiet tās nosaukumu. Ja pievienojat jaunu atslēgu, pievienojiet unikālu nosaukumu attiecībā uz visām atslēgām struktūrā.
Lai izdzēstu kolekcijas elementu, jums ir jāizmanto metode “Dzēst”, kurā nododat atslēgas nosaukumu:
Structure.Delete("KeyName");
Ir iespējams arī notīrīt visus kolekcijas objektus:
Struktūra.Notīrīt();
Struktūras šķērsošana
Lai atkārtotu struktūras kolekciju, jums ir jāizmanto konstrukcija “Katrai atslēgas vērtībai no struktūras cilpas”.
Piemēram:
Katrai atslēgas nozīmei no struktūras cilpas
…… //apstrādāt, piemēram, mainīt vērtības
EndCycle;
Katrā ciklā jūs redzēsiet, ka mums ir pieejami šādi lauki:
1C platforma ir augsta līmeņa rīks darbam ar datu bāzēm. Kopumā izstrādātājam nav jādomā par to, kas un kā notiek DBVS pusē, jo platforma pati izlemj, cik tabulu tai vajadzētu izveidot un kādi lauki tajās būs.
Tomēr lielos projektos ir nepieciešams strādāt ar datiem tieši, piemēram, analizēt informāciju, izmantojot trešo pušu rīkus, vai, kā manā gadījumā, datubāzi integrēt ar ārējām lietojumprogrammām. Šādā situācijā ir nepieciešams priekšstats, kuros fizisko tabulu laukos meklēt mums nepieciešamo informāciju.
Iebūvētā funkcija ir paredzēta tieši šādam gadījumam GetDatabaseStorageStructure(), kas atgriež visus nepieciešamos datus vērtību tabulas veidā. Turklāt dažas šīs tabulas detaļas (lauki un indeksi) ir vērtību tabulas.
No vienas puses, ir ērti, ja visi dati ir vienā struktūrā, bet, no otras puses, ar šīs tabulas pārsūtīšanu klientam rodas papildu grūtības (Load() metode diemžēl neielādē ligzdotas tabulas). Šī iemesla dēļ jums ir jāiziet cauri visiem tabulas ierakstiem cilpā, kas noved pie lēnāka darba lieliem apjomiem.
Tādēļ labāka iespēja būtu metadatu objektu nosaukumus nodot funkcijai, lai samazinātu atgriezto datu apjomu. Tomēr ne visas DBVS tabulas ir saistītas ar konfigurācijas metadatiem, tāpēc es atstāju iespēju skatīt pilnu sarakstu.
Apstrādes funkcionalitāte
Kad ir aktivizēts metadatu koka elements, tiks aizpildīts tabulu, lauku un indeksu saraksts. Veicot dubultklikšķi uz koka saknes, tiek parādītas visas tabulas, tostarp pakalpojumu tabulas (nav ieteicams, jo palielinās meklējamo datu apjoms).
Tabulas daļās darbojas standarta meklēšanas un saraksta komandas.
Atšķirības no esošajām implementācijām
Ir vairākas līdzīgas publikācijas, piemēram, un. Tomēr viņu neērtības ir metadatu koka trūkums, kas apgrūtina navigāciju. Meklēšana tiek veikta arī pēc tabulu un lauku nosaukumiem datu bāzē, nevis otrādi.
Funkcionalitāte ir vistuvāk autora publikācijai (). Turpretim šī apstrāde satur vispilnīgāko koku metadati (apmaiņas plāni, konstantes, dokumentu žurnāli utt.). Turklāt datu struktūra ir attēlota skaidrāk: metadatu objekta tabulu saraksts, lauku saraksts un indeksu saraksts tiek attēlots atsevišķās tabulas daļās.
UPD-2018-01-06 (v1.3). Novērsta kļūda, kas radās saderības režīmā 8.3.7 un jaunākā versijā (platformas darbība ir mainījusies).
UPD-2012-08-17 (v1.2). Ir izveidots ielāps rutīnas uzdevumu pareizai apstrādei, ir fiksēts aprēķinu veidu plānu attēlošanas vienums un ir fiksēta uzvedība, mainot struktūras veidu konfigurācijas saknē.
P.S. Daži darba devēji, pieņemot darbā, jautā par fizisko un virtuālo tabulu skaitu reģistriem. Būtu jauki uzzināt atbildes uz šiem jautājumiem, jo īpaši tāpēc, ka šis ir 1C: profesionālais līmenis. Ja vēlies ne tikai uzzināt šo atbildi, bet arī “sajust” šīs tabulas, tad šī procedūra ir domāta Tev!
Dati, kas nosaka uz 1C:Enterprise balstītas sistēmas darbības loģiku, pieder informācijas bāzei. Informācijas bāze tiek glabāta datu bāzē tabulu kopas veidā, kurai 1C:Enterprise 8.1 var izmantot vienu no četrām datu bāzes pārvaldības sistēmām (DBVS):
* Iebūvēts 1C:Enterprise 8.1 (informācijas bāzes faila versija). Šajā gadījumā visi informācijas bāzes dati tiek saglabāti failā ar nosaukumu 1Cv8.1CD. Šim failam ir binārais formāts, un tā būtībā ir DBVS, kas iebūvēta 1C:Enterprise 8.1, datubāze.
* Microsoft SQL Server(informācijas bāzes klienta-servera versija). Visi informācijas bāzes dati tiek glabāti Microsoft SQL Server datu bāzē.
* PostgreSQL(informācijas bāzes klienta-servera versija). Visi informācijas bāzes dati tiek glabāti PostgreSQL datu bāzē.
* IBM DB2(informācijas bāzes klienta-servera versija). Visi informācijas bāzes dati tiek glabāti IBM DB2 datu bāzē.
Datu bāzes objektu līmenī (tabulas, lauki, indeksi utt.) gan informācijas bāzes faila, gan klienta-servera versijām ir līdzīgs formāts (atšķiras nelielās detaļās). Tālāk ir iekļauta informācija par šo formātu.
Visa informācijas bāze tiek parādīta datu bāzē kā tabulu kopa. Starp tām ir vairākas tabulas, kas noteikti ir atrodamas jebkuras informācijas bāzes skatījumā:
*Konfig- informācijas bāzes pamatkonfigurācija. Šī konfigurācija atbilst reālajai datu struktūrai, un to izmanto 1C:Enterprise 8.0 Enterprise režīmā.
*ConfigSave- konfigurācija, ko rediģējis konfigurators. Konfigurācijas programmā ConfigSave konfigurācija tiek pārrakstīta uz Config, veicot “Datu bāzes konfigurācijas atjaunināšanu” konfiguratorā un otrādi - veicot darbību “Konfigurācija - Datu bāzes konfigurācija - Atgriezties uz DB konfigurāciju” konfiguratorā.
* Faili satur pakalpojumu informāciju, piemēram, par darbu ar konfigurācijas repozitoriju.
* Parametri satur informācijas bāzes parametrus. Starp viņiem:
=>
Informācijas bāzes lietotāju saraksts.
=>
Nacionālās informācijas bāzes uzstādījumi.
=>
Atbilstības tabula starp metadatu objektiem un datu bāzes objektiem (tabulas, lauki, indeksi).
=>
Vēl kāda informācija.
*_Gada nobīde- datuma nobīde datu bāzē. Šī tabula tiek izveidota tikai tad, ja tiek izmantots Microsoft SQL Server.
* DBSchema satur informāciju par 1C:Enterprise datu bāzes struktūru un definē citus datu bāzes objektus, ko izmanto šī informācijas bāze.
Kad 1C:Enterprise tiek startēts, tas pārbauda, vai informācijas bāzē ir uzskaitītās tabulas, un, ja kāda no tām trūkst, tiek parādīts ziņojums “Informācijas bāze ir iznīcināta”. Visu uzskaitīto tabulu trūkums nozīmē, ka informācijas bāze ir tukša. Pēdējā gadījumā šīs tabulas tiks izveidotas.
Citu datu bāzes tabulu sarakstu un struktūru nosaka konkrētā konfigurācija, proti, tajā definētie metadatu objekti. Katras tabulas nosaukums sastāv no burta prefiksa, kam seko cipars. Prefikss nosaka tabulas mērķi, un numurs ļauj atšķirt viena un tā paša mērķa tabulas, kas pieder dažādiem metadatu objektiem. Ja kā DBVS tiek izmantota IBM DB2, tad aprakstītā struktūra ir nevis tabulu nosaukumi, bet gan to aizstājvārdi.
Ja konfigurācijā ir definēts vismaz viens apmaiņas plāns ar karogu "Izplatītā informācijas bāze", tiks izveidotas šādas tabulas:
*_ConfigChangeRec- tabula konfigurācijas objektu izmaiņu reģistrēšanai.
* _ConfigChangeRec_ExtProps- konfigurācijas objektu modificēto ārējo īpašību failu nosaukumu tabula.
Tālāk ir norādīti dažādi metadatu objekti, kuriem var atbilst katra tabula.
* Konstantes
=>
_Consts satur visu konfigurācijā definēto konstantu pašreizējās vērtības.
=>
_ConstsChangeRec - tabula pastāvīgu izmaiņu reģistrēšanai. Izveidots, ja vismaz vienā apmaiņas plānā ir iesaistīta vismaz viena konstante.
* Kopīgojiet plānus
=>
_Mezgls
=>
_Mezgls
* Katalogi
=>
_Atsauce
=>
_Atsauce
=>
_ReferenceChangeRec
* Dokumentācija
=>
_Dokuments
=>
_Dokuments
=>
_DocumentChangeRec
* Dokumentu secības
=>
_Secība
=>
_SequenceBoundary
=>
_SequenceChangeRec
* Dokumentu žurnāli.
=>
_Dokumentu žurnāls
* Pārskaitījumi
=>
_Enum
* Plāni raksturlielumu veidiem
=>
_Chrc
=>
_Chrc
=>
_ChrcChangeRec
* Kontu shēmas
=>
_Acc
=>
_Acc
=>
_Acc
=>
_AccChangeRec
* Plāni aprēķinu veidiem
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKindDN
=>
_CalcKind
=>
_CalcKindChangeRec
* Informācijas reģistri
=>
_InfoReg
=>
_InfoRegChangeRec
* Uzkrāšanas reģistri
=>
_AccumReg
=>
_AccumRegTotals
=>
_AccumRegTurnovers
=>
_AccumRegChangeRec
=>
_AccumRegOptions - iestatījumu tabula uzkrāšanas reģistru kopsummas glabāšanai, viena visiem uzkrāšanas reģistriem.
* Grāmatvedības reģistri
=>
_AccntReg
=>
_AccntRegED
=>
_AccTtl0
=>
_AccTtl
=>
_AccTtlC
=>
_AccntRegChangeRec
=>
_AccntRegOptions - kopsummas glabāšanas iestatījumu tabula, viena visiem grāmatvedības reģistriem.
* Aprēķinu reģistri
=>
_CalcReg
=>
_CalcRegActPer
=>
_CalcRegChangeRec
=>
_CalcRegRecalc
=>
_CalcRegRecalcChangeRec
* Biznesa procesi
=>
_BPRutePoint
=>
_Biznesa process
=>
_Biznesa process
=>
_BusinessProcessChangeRec
* Uzdevumi
=>
_Uzdevums
=>
_Uzdevums
=>
_TaskChangeRec
Izmantojot IBM DB2, tabulu aizstājvārdu prefiksi nesākas ar pasvītrojumu, bet gan sākas ar burta daļu.
Šo tabulu skaits ir atkarīgs no konfigurācijas funkcionalitātes un var būt diezgan liels. Normālā režīmā 1C:Enterprise nepārbauda to pieejamību, kā arī tajos esošo datu integritāti un konsekvenci. Tāpēc ir svarīgi, lai datu bāze, kurā atrodas 1C:Enterprise 8.1 informācijas bāze, būtu aizsargāta pret nesankcionētu piekļuvi un tās pārveidošana tiktu veikta, tikai izmantojot 1C:Enterprise rīkus. Lai pārbaudītu, jums jāizmanto konfiguratorā iebūvētā funkcija "Administrēšana — pārbaude un labošana".
Svarīgi ir arī tas, ka datu bāzes, kurā tiek glabāta informācijas bāze, dublēšana un atjaunošana tiek veikta tikai kopumā. Šim nolūkam ieteicams izmantot datu bāzes dublēšanas rīkus, kas iebūvēti izmantotajā DBVS. Informācijas bāzes faila versijas dublēšanu var veikt, kopējot 1Cv8.1CD failu.
Konfiguratoram ir īpaša funkcija: Administrēšana - Augšupielādēt informācijas bāzi. Ar tās palīdzību jūs varat augšupielādēt norādītajā failā (augšupielādes failā) visus datus, kas saistīti ar informācijas bāzi, un ne vairāk. Reversā funkcija “Ielādēt informācijas bāzi” ļauj ielādēt visus datus no augšupielādētā faila pašreizējā informācijas bāzē, nevis esošos. Šīs funkcijas var izmantot arī informācijas bāzes datu dublēšanai gan failu, gan klienta-servera versijās.