Tipovi podataka 1s 8.3. Korištenje definiranih tipova. Vrste podataka generiranih u aplikativnom rješenju

25.10.2019 Zanimljiv

Definirani tipovi − novi objekt 1C metapodaci, koji su se pojavili u verziji platforme 8.3. Objekt je pomoćnog karaktera. Razmotrimo koje su definirane vrste i zadatke koje ovaj objekt može riješiti.

Definirani su novi tipovi podataka čiji skup određuje developer aplikativnog rješenja. Sastoji se od nekoliko valjanih tipova. Ovaj tip podataka može biti tip bilo kojeg atributa konfiguracije, osim samog definiranog tipa i objekta " ".

Besplatno nabavite 267 video lekcija o 1C:

postavke

Nema toliko postavki za ovaj objekt:

Oni. uz naziv i sinonim u 1C definirani tipovi imaju samo skup tipova objekata.

Primjer korištenja definiranih tipova u 1C 8.3

Za ovaj objekt može se naći velika raznolikost primjena.

Primjeri korištenja:

  • u konfiguraciji možete opisati detalje koji se odnose na podatke koji će biti definirani kada se fragment ugradi u određenu konfiguraciju;
  • dodijeliti jednu vrstu definiranih podataka određenom skupu pretplata na događaje; kada se skup vrsta promijeni, izvor će se dinamički promijeniti za sve pretplate;
  • koristiti kao alternativu planu tipova karakteristika

i mnogo više.

Ako počinjete učiti 1C programiranje, preporučujemo naš besplatni tečaj(ne zaboravi

— počeli smo raspravljati o tome što su 1C tipovi vrijednosti i pretvorbu 1C tipova.

Danas ćemo detaljnije govoriti o vrstama 1C konfiguracijskih objekata (1C vrsta dokumenta, 1C vrsta imenika itd.)

Budući da u programskom kodu radimo s vrijednostima, povremeno moramo znati njihovu vrstu. Tip 1C uvijek je naznačen u metapodacima detalja - u imenicima i dokumentima.

Često se koristi rad s tipovima 1C:

  • Uvjeti u programu
    Različite radnje ovisno o vrsti 1C vrijednosti u konstrukciji "Ako ... Onda ...".
  • Ograničenja pri radu u sučelju
    Zabrana ili dopuštanje korisniku unosa vrijednosti određenih vrsta 1C u polje na obrascu.
  • Određivanje stvarne funkcije/parametra postupka
    Ako parametar funkcije/procedure može biti bilo koje vrste 1C, tada ga trebate definirati kako biste ispravno dobili vrijednost.

Tip 1C može se dobiti:

  • Odredite vrstu stvarne vrijednosti 1C
  • Objekti vrijednosti imaju svojstva koja pokazuju dopušteni 1C tip (na primjer, 1C tipovi dopušteni u stupcu tablice, u polju na obrascu, u metapodacima) ili metode koje vraćaju te 1C tipove
  • Iz metapodataka - možete dobiti tip 1C kako je navedeno u metapodacima u konfiguratoru.

Tipovi 1C mogu se podijeliti u tri tipa:

  • Osnovni tipovi 1C
  • Vrste 1C baza podataka (referenca, objekti)
  • Vrste 1C.

Definicija tipa 1C i usporedba tipova 1C

Možete saznati vrstu vrijednosti 1C pomoću funkcije TypeValue (varijabla)

Da bismo razumjeli koju je 1C vrstu vratila ova funkcija, moramo navesti vrstu koja nam je potrebna ("TypeName")

Na primjer, definicija (usporedba) varijable tipa 1C:
If TypeValue(Variable) = Type("TypeName") Then

Koje vrste trebam napisati kao TypeName?

Osnovni tipovi

Osnovne vrste 1C - broj, niz, datum, boolean.

Na primjer:
Znch = 12;
If TypeValue(Value) = Type("Number") Then
ElseIf Value = Type("String") Then
ElseIf Value = Type("Date") Then
ElseIf Value = Type("Boolean") Then
završi ako;

Vrste baza podataka

1C pohranjuje podatke u bazu podataka, ali ne u obliku pojedinačnih zapisa, već u obliku objekata.

Većina spremljenih objekata (uključujući: direktorije, dokumente, popise, poslovne procese, zadatke) dostupna je kao Objekt (za uređivanje i pisanje) i kao Veza (za čitanje). Pogledajte "Veze i objekti" za više detalja.

Na primjer:
Vrijednost = Imenici.Organizacije.Prazna veza();
If TypeValue(Value) = Type("DirectoryLink.Organizations") Onda
OtherwiseIf Value = Type("DirectoryObject.Organization") Then
InačeIf TipVrijednost(Vrijednost) = Tip("Veza dokumenta.Primitak robe") Zatim
OtherwiseIf Value = Type("DocumentObject.Receipt of Goods") Then
završi ako;

Registri se mogu prezentirati različite vrste. Ime tipa registra je složeno:
RegisterRegisterTypeAccessType.RegisterName

Vrste 1C registara:

  • Informacija
  • Štednja
  • Računovodstvo
  • Kalkulacija.

Postoji nekoliko vrsta pristupa registru. Najčešće se koristi:

  • Skup rekorda
  • Popis
  • Uzorak
  • Snimiti
  • RecordKey.

Ukupno, primjer:
Ako je TypeValue(Value) = Type("InformationRegisterList.RegisterName") tada
OtherwiseIf Value = Type("AccumulationRegisterRecordSet.RegisterName") Then
završi ako;

Jezik 1C omogućuje vam rad s mnogim objektima koji se stvaraju dinamički u programu, na primjer, niz, popis vrijednosti, tablica vrijednosti, struktura...

Takvi 1C tipovi označeni su svojim imenom (jednom riječju, bez razmaka). Na primjer:
If TypeValue(Value) = Type("Array") Onda
ElseIf Value = Type("List of Values") Then
završi ako;

Određivanje vrijednosti referentnog tipa 1C

Rad sa svim objektima baze (imenici, dokumenti...) odvija se preko poveznica. Na primjer, ako želimo napraviti referencu u dokumentu, tada će njegov 1C tip biti "DirectoryLink.DirectoryName".

Na primjer:
Vrijednost = Imenici.Organizacije.Prazna veza();
Ako Directories.TypeAllLinks().Contains(TypeValue(Value)) Onda
//ovo je referentna knjiga
ElseIf Documents.TypeAllLinks().Contains(TypeValue(Value)) Zatim
//ovo je dokument
završi ako;

U zahtjevu se tip 1C može provjeriti na dva načina.

Prvi je sličan opisanom, ali naziv tipa 1C ne označava "Link" ili "Object", odnosno umjesto "DirectoryLink.Organizations" pišemo "Directory.Organizations"

Na primjer:

Dobivanje dostupnih tipova 1C

Mnogi objekti imaju svojstvo.ValueType, koje sadrži popis 1C tipova:

  • Polje na debelom obrascu klijenta
    Elementi obrasca.NazivPolja.TipVrijednosti
  • Polje na obrascu tanak klijent(iznimka: zove se AvailableTypes)
    Elements.FieldName.AvailableTypes
  • Stupac tablice vrijednosti, stablo vrijednosti
  • Detalji obrasca
  • Element odabira

Kako raditi s ovim popisom tipova 1C na terenu.ValueType - pogledajte "Opis tipova" u odjeljku "Jezik 1C".

Rad s vrstama detalja 1C u konfiguracijskim metapodacima

Prilikom dodavanja i uređivanja detalja u konfiguratoru, programer određuje tip(ove) detalja 1C. U programskom kodu na jeziku 1C možete dobiti (saznati) tip(ove) detalja 1C.

Osnovne metode:

  • Za 1C objekt pozovite metodu Metadata(), koja vraća metapodatke određenog objekta, a zatim radite s popisom detalja (i detaljima odjeljka tablice)
    Dokumenti.Primitak robe.EmptyLink().Metapodaci().Detalji
  • Upotrijebite globalnu varijablu "Metapodaci", koja vraća sve konfiguracijske metapodatke, a zatim pristupite detaljima određenog objekta
    Metapodaci. Dokumenti. Primitak robe. Detalji

Atribut ima svojstvo.Type, koje sadrži popis tipova 1C postavljenih u konfiguratoru za ovaj atribut.

Kako raditi s ovim popisom tipova 1C - pogledajte "Opis tipova" u odjeljku "Jezik 1C".

Navedite filtar tipa 1C

Za mnoge objekte moguće je odrediti filtar 1C tipova vrijednosti koji se mogu koristiti, na primjer:

  • Popis vrijednosti (.AvailableValues)
  • Polje obrasca upravljanog klijenta (.AvailableTypes)

Tamo gdje filtar nije dostupan za izmjenu, moguće ga je navesti u metodi objekta. Na primjer, stupac tablice (stablo) vrijednosti ima.ValueType i ne možemo ga promijeniti, ali kada dodajete stupac pomoću metode.Add(), drugi parametar se može koristiti za određivanje popisa dostupnih 1C vrste.

Da biste odredili popis tipova 1C za filtar, koristi se popis tipova 1C; kako raditi s njim, pogledajte "Opis tipova" u odjeljku "Jezik 1C".

Vrsta sustava je poseban sustav kojim se organiziraju podaci koje koriste aplikativna rješenja. Sustav tipova omogućuje vam da informacije iz stvarnog svijeta predstavite terminima koji su "razumljivi" za 1C:Enterprise 8.

Tipski sustav pruža dovoljno mogućnosti kako za opisivanje poslovne logike samih aplikativnih rješenja, tako i za obavljanje posrednih zadataka obrade podataka.

Opis sustava tipova nalazi se u pomoćniku za sintaksu, u ugrađenoj pomoći iu dokumentaciji.

Glavna značajka sustava tipova je da postoje tipovi koji postoje u bilo kojem aplikacijskom rješenju. Sami ovi tipovi definirani su na razini platforme i uvijek su prisutni, bez obzira na radnje programera. Uz njih, u određenom aplikativnom rješenju mogu postojati različite vrste podataka svojstvenih ovom aplikativnom rješenju. Za takve vrste podataka definirano je samo sljedeće na razini platforme: Opća pravila njihove kreacije, predlošci. Platforma stvara specifične vrste podataka na temelju načina na koji programer stvara i mijenja strukturu aplikacijskog rješenja.

Tipovi podataka definirani na razini platforme

Skup tipova s ​​kojima aplikativna rješenja mogu raditi vrlo je raznolik. Omogućuje vam rješavanje problema obrade podataka i zadataka predstavljanja tih podataka korisniku i interaktivnog rada s njima. Postoji nekoliko glavnih kategorija tipova podataka.

Primitivni tipovi

Primitivni tipovi podataka su tipovi kao što su Crta, Broj, datum, Booleov i drugi. Ove vrste nisu nešto posebno za 1C:Enterprise 8. U pravilu, takve vrste podataka postoje u drugim softverskim sustavima.

Vrijednosti primitivnih tipova su jednostavne nedjeljive vrijednosti u kojima se ne mogu razlikovati pojedinačne komponente. Na primjer, vrijednosti poput Broj može biti 1, 8, 15, itd. Da biste kreirali vrijednost primitivnog tipa, morate je navesti u tekstu programa doslovan- simbolički identifikator vrijednosti.

Generičke zbirke vrijednosti

Postoje i složeniji tipovi podataka. Na primjer, platforma podržava cijela linija vrste koje su univerzalne kolekcije vrijednosti: Niz, Struktura, ListValues i drugi.

Uobičajene vrste

Osim toga, platforma implementira specifične vrste podataka koji implementiraju jednu ili drugu funkcionalnost aplikacijskih rješenja: Tekstualni dokument, Tablični dokument, StorageValues, Query Builder i drugi.

Nazivaju se i opći tipovi zajednički objekti . Vrijednosti ovih tipova, za razliku od vrijednosti primitivnih tipova, skup su vrijednosti pojedinačnih svojstava objekta. Zato se i zovu instance objekata.

Instance objekta stvaraju se pomoću posebnog ugrađenog jezičnog operatora - Novi.

Vrste sučelja

Vrste sučelja omogućuju organiziranje vizualne interakcije aplikacijskog rješenja s korisnikom. To su uglavnom tipovi koji se odnose na rad oblika i njihovih elemenata.

Vrste podataka generiranih u aplikativnom rješenju

Međutim, osim tipova podataka koji su definirani na razini platforme, određeno aplikacijsko rješenje može koristiti jedinstvene tipove podataka koji postoje samo u tom specifičnom aplikacijskom rješenju. Štoviše, platforma će u potpunosti podržavati rad s ovim tipovima podataka na isti način kao i s tipovima koji su definirani na razini same platforme.

Pojava novih tipova podataka u aplikativnom rješenju u pravilu je povezana s korištenjem konfiguracijskih objekata aplikacije. Stoga se ove vrste također nazivaju vrste aplikacija ili primijenjenih predmeta.

Na razini platforme podržano je nekoliko klasa (predložaka) aplikacijskih objekata koji se sami ne mogu koristiti u određenom aplikacijskom rješenju. Na primjer, možete navesti klase aplikacijskih objekata kao što su Imenici, Dokumentacija, Informacijski registri, Karakteristični tipski planovi itd.

Za svaku klasu aplikacijskih objekata definirana je osnovna funkcionalnost koja joj odgovara: tipovi tablica baze podataka koje je potrebno kreirati za pohranjivanje podataka, standardni obrasci, standardni jezični objekti, skupovi prava itd.

Razvojni programer, prilikom izrade aplikativnog rješenja, nema mogućnost izravnog korištenja ovih klasa, ali može svom aplikativnom rješenju dodati novi konfiguracijski objekt koji nasljeđuje sve funkcionalnosti pojedine klase:

Na primjer, programer može dodati novu referentnu knjigu svom aplikacijskom rješenju Nomenklatura Imenici, ili novi dokument Izvješće o gotovini, koji će naslijediti funkcionalnost klase Dokumentacija.

Odmah nakon takvog dodavanja programeru postaju dostupni novi tipovi podataka, čiji je sastav određen pripadnošću konfiguracijskog objekta određenoj klasi aplikacijskih objekata.

Na primjer, nakon stvaranja novog imenika Nomenklatura, sljedeće vrste podataka postaju dostupne:

  • DirectoryManager.Nomenclature,
  • DirectoryLink.Nomenklatura,
  • DirectoryObject.Nomenclature,
  • Uzorkovanje imenika. Nomenklatura,
  • Imenik.Nomenklatura.

Sustav tipova opisuje samo opću "strukturu" ovog tipa, pravila prema kojima će se formirati objekti ovog tipa. Konkretno ime tipa, sastav svojstava i metode objekta ovisit će o tome kako programer imenuje konfiguracijski objekt i koje će mu, na primjer, detalje i dijelove tablice dodati.

Istovremeno, nakon izrade novog akumulacijskog registra SalesCompany, sastav novih tipova podataka bit će drugačiji:

  • Akumulacijski registar Voditelj prodaje tvrtke,
  • RegisterAccumulationSelection.SalesCompany,
  • RegisterAccumulationList.SalesCompany,
  • RegisterAccumulationSetRecords.SalesCompany,
  • Evidencija registra akumulacije. Prodaja poduzeća,
  • Akumulacijski registarKljuč evidencije. Prodaja poduzeća.

Ponovno treba napomenuti da ove vrste podataka nisu izvorno podržane od platforme i postoje samo u određenom aplikacijskom rješenju.

Još jednu stvar koju treba naglasiti najlakše je pokazati primjerom.

Recimo da su dva nova direktorija stvorena u aplikacijskom rješenju: Nomenklatura I Cijene. Iako oba ova objekta nasljeđuju funkcionalnost odgovarajuće klase Imenici, a za njih je u aplikacijskom rješenju kreiran isti skup tipova podataka, „isti“ tipovi podataka bit će različiti tipovi podataka. Na primjer, DirectoryObject.Nomenclature Tip podataka.

/
Stvaranje i uređivanje objekata metapodataka

Korištenje definiranih tipova

Opseg primjene: upravljana aplikacija, normalna aplikacija.

1. Definirani tipovi namijenjeni su definiranju tipova podataka koji opisuju često korištene entitete ili se s velikim stupnjem vjerojatnosti mogu promijeniti prilikom implementacije aplikativnog rješenja. Omogućuju vam ponovnu upotrebu opisanog tipa ili skupa tipova bez navođenja sastava na raznim mjestima u konfiguraciji (detalji, svojstva objekata, oblici itd.).

Također pogledajte članak o ITS-u: “Konfiguracijski objekti – definirani tipovi”

2.1. Za definiranje jednostavnog tipa i njegovih kvalifikatora koji imaju primijenjeno značenje, koji se koristi u raznim atributima, resursima, atributima obrasca, izgledima itd. unutar bilo kojeg podsustava ili kroz cijelo aplikativno rješenje. To osigurava da su podaci iste duljine i točnosti na svim mjestima upotrebe i pojednostavljuje modifikaciju ako se zahtjevi promijene.
Na primjer:

  • Broj fakture- String, duljina 30. Regulira format broja računa u raznim dokumentima: Prijem robe i usluga, EntryBooksShopping, Povrat robe od kupca i tako dalje.
  • Adresa dostave- String, 500. Tekstualni prikaz adrese dostave u dokumentima Naručite dobavljaču, Adresa za dostavu Prijevoznik, u procesu Pomoćnik prodaje, u rekvizitima Adresa za dostavu Prijevoznik dokument Zahtjev za povrat robe od klijenta i tako dalje.

2.2. Za definiranje kompozitnog tipa koji se široko koristi u objektima podsustava ili u cjelokupnom aplikacijskom rješenju. Definirani tip jamči isti sastav (tip) podataka na svim mjestima korištenja, a također pojednostavljuje modifikaciju i implementaciju podsustava u konfiguracijama aplikacija.

Na primjer, konfiguracija uključuje podsustav Interakcije, koji je namijenjen dopisivanju putem e-pošta, snimanje poziva i sastanaka. Prilikom implementacije ovog podsustava, programer je odlučio o sastavu objekata metapodataka koji mogu djelovati kao "interakcijski kontakti" - to su elementi imenika Pojedinci, Partneri, Kontakt osobe Partneri, i odredio ovaj sastav tipova u definiranom tipu Interakcije kontakta predviđeno u podsustavu. Zauzvrat, definirani tip se naširoko koristi u detaljima objekta i oblicima podsustava (u dokumentima Sastanak, Planirana interakcija- tablični dio Sudionici, u dokumentu PorukaSMS– tablični dio Adresati, u dokumentu Telefonski poziv- rekviziti PretplatnikKontakt, u općim oblicima Adresar, Odaberite Kontakt- rekviziti KontaktiO predmetu,u parametru izgleda Hijerarhija interakcijaKontakt dnevnik dokumenata Interakcije itd.) Inače, bez korištenja definiranog tipa Interakcije kontakta bilo bi potrebno ukloniti objekte podsustava iz podrške i navesti traženi sastav tipova na svim navedenim mjestima.

2.3. Prilikom razvoja implementiranog podsustava - redefinirati tip aplikacije koji će biti specificiran tijekom implementacije.
Na primjer, vrsta podsustava Dobavljači tijekom implementacije može se zamijeniti vrstom konfiguracije aplikacije Protustranke.

3. Neispravno je koristiti definirane tipove za definiranje "sinonima" za postojeći tip, "zamjenu" entiteta, za lokalnu (ne masovnu) upotrebu unutar jednog podsustava (konfiguracije) bez potrebe za implementacijom u drugim konfiguracijama, samo iz razloga lakoće modifikacije. U pravilu, to ukazuje na grešku u dizajnu ili metodološki pogrešan izbor izvornog naziva tipa.

Ovaj članak nastavlja seriju članaka “Prvi koraci u razvoju 1C.” Govorit će se o primitivnim tipovima podataka i najčešćim funkcijama pri radu s njima. Nakon čitanja materijala naučit ćete:

  • Koje su vrste podataka primitivne?
  • Kako možete raditi s žicama i koje značajke treba uzeti u obzir?
  • Koje su suptilnosti rada s numeričkim izrazima?
  • Kako opisati datum s određenom vrijednošću? Kako postaviti prazan datum?
  • Kako funkcionira pretvorba tipa?
  • Null i Undefined – što su oni i koje su razlike?
  • Kako odrediti koji je tip objekta/varijable?

Primjenjivost

Članak je napisan za verziju 8.3.4.496 platforme 1C, tako da su informacije također relevantne za Trenutna verzija platforme. Međutim, treba napomenuti da su u verziji 8.3.6.1977 dodane nove funkcije za rad sa nizovima. Stoga, kada ponovite korake iz članka, nemojte se iznenaditi ako u odgovarajućem odjeljku Syntax Assistant vidite neke funkcije koje nisu prikazane na našoj snimci zaslona. Također preporučujemo da se upoznate s novom metodom StringWithNumber() dodanom u platformi 8.3.10.

Primitivni tipovi podataka i neke njihove funkcije

Razlikuju se sljedeći primitivni tipovi podataka:

String konstante

Primitivni tip podataka Crta(string konstanta) sastoji se od raznih znakova. Crta uvijek je okružen navodnicima. Primjer konstante niza:

Message.Text = “Postoje prazni podaci”;

Oni. redak "Postoje prazni podaci" dodijeljen je atributu Tekst objekt Poruka. Sve što je okruženo navodnicima smatra se nizom.

Niz se može sastojati od bilo kojih znakova. Nizovi mogu biti višeredni. U tom slučaju svaki novi red mora biti definiran u navodnicima. Na primjer:

Tekst = “Uneseni nevažeći detalji”
“Nemoguće je knjižiti dokument”;

Točka i zarez se stavlja samo na kraju posljednjeg retka.

Postoji još jedan način - cijeli tekst uokviriti samo jednim navodnicima, ali svakim nova linija treba započeti okomitom prugom.

Ova se sintaksa najčešće koristi u tipičnim konfiguracijama. Konkretno, u upitnom jeziku. Na primjer:

Zahtjev.Tekst =
„IZABIRAJ
| Zaposlenici. Ime KAO Zaposlenik,
| Zaposlenici. Datum rođenja KAO Datum rođenja
|OD
| Imenik.Zaposlenici KAKO Zaposlenici
|GDJE
| NE Zaposlenici. Ovo je grupa";

Treba napomenuti da je operacija zbrajanja definirana za nizove. Ovo nije aritmetička operacija, zove se operacija ulančavanja.

Oni. trebate kombinirati, na primjer, dva retka, sa znakom dodavanja "+" između redaka:

Tekst = “Podaci su netočno ispunjeni” + “Nemoguće je knjižiti dokument”;

Dakle, linije su spojene. Operacija ulančavanja, naravno, također je primjenjiva za više linije. Ostale operacije (oduzimanje, množenje, dijeljenje) nisu dopuštene za nizove.

Ako riječ unutar retka treba biti okružena navodnicima, tada citat unutar retka treba definirati dvostruki navodnik. Na primjer:

Tekst = “Greška u modulu “Opći modul1””;

U u ovom primjeru Prvi navodnik otvara niz. Drugi i treći navodnici jedan pored drugog označavaju navodnik.

I na kraju su tri navodnika: zadnji navodnik zatvara red, dva prethodna označavaju navodnik.

Na nizovima su moguće različite operacije pretvorbe niza, identificiranje prvih nekoliko lijevih znakova, identificiranje nekoliko krajnjih desnih znakova, traženje podniza unutar niza itd.

Sve ove funkcije dostupne su bilo gdje u konfiguraciji.

U pomoćniku za sintaksu nalaze se u odjeljku Opći opis ugrađeni jezikUgrađene funkcijeFunkcije za rad s vrijednostima tipa String.

Postoji prilično velik broj funkcija i one su obično dovoljne za rad sa string konstantama.

Pogledajmo primjer rješavanja problema korištenjem string funkcija.

Zadatak:

Treba razviti funkciju. Proizvoljni niz prosljeđuje se kao parametar funkciji. Znakovi u retku mogu biti i brojevi.

Niz znamenki (jedna ili više), odvojen od ostalih znakova razmacima, čini pozitivan cijeli broj.

Na primjer, niz "72 ABC 6AP 31 54f -22" sadrži dva pozitivna cijela broja: 72 i 31. Osim razmaka, drugi beznačajni znakovi (kao što su tabulatori, znakovi za početak) se ne koriste. Funkcija mora vratiti broj pozitivnih cijelih brojeva.

Mora se nalaziti u modulu upravljane aplikacije. Potrebno je osigurati da se poziva prilikom pokretanja sustava. Definirajte niz pomoću varijable.

Dakle, otvorimo modul upravljane aplikacije i odaberimo s popisa u polju za odabir na ploči konfiguratora Modul standardni rukovatelj AtSystemStart().

Unutar rukovatelja definiramo varijablu Crta, Na primjer:

Red = “72 ABC 6AP 31 54f -22”;

Količina = BrojCjelihBrojeva(Niz);

Pošaljimo poruku o broju cijelih brojeva:

Izvješće("Red sadrži " + Broj + " cijele brojeve");

U ovom slučaju varijabla Količinaće se implicitno pretvoriti u tip String konstanta. Tada će se operacija ulančavanja izvršiti na tri niza i poruka će biti poslana.

Definirajmo početak i kraj (tj. predložak) funkcije Broj cijelih brojeva (niz).

Sada pogledajmo jednu od mogućih opcija za razvoj funkcije Broj cijelih brojeva (niz). Istodobno ćemo se upoznati s nekim ugrađenim funkcijama dizajniranim za rad s nizovima.

Prije svega, trebali biste se upoznati s funkcijom Šifra simbola. Ova funkcija dobiva kod znaka koji se nalazi u proslijeđenom nizu na mjestu s navedenim brojem.

Sintaksa:

Šifra znaka(,)

Mogućnosti:

(potreban)

(neobavezno) – ovo je broj znaka u retku čiji kod želite dobiti. Numeriranje znakova u retku počinje od 1.

Povratna vrijednost:
Šifra prenesenog znaka. Kôd se vraća prema Unicode kodiranju.

Imajte na umu da je parametar Postoji zadana vrijednost 1.

Niz se može sastojati i od jednog znaka. Tako je moguće odrediti kod 0 i kod 9, a kodovi svih ostalih znamenki su, kao što je poznato, u intervalu između njih.

Definirajmo odgovarajuće varijable i njihove vrijednosti:

Kod0 = Šifra znaka(“0”);
Kod9 = Šifra znaka(“9”);

Da bismo riješili problem, odabiremo sljedeću shemu:

  1. Ako redak sadrži razmake na početku ili na kraju u bilo kojoj količini, tada ćemo ih se riješiti posebnom funkcijom. Zatim će nas zanimati grupe znakova između unutarnjih prostora. Ako se grupa sastoji samo od znamenki, onda je to cijeli broj. Postoji posebna funkcija koja se može koristiti za određivanje položaja prvog razmaka.
  2. Nakon što odredite položaj prvog razmaka, možete upotrijebiti drugu funkciju da dobijete grupu znakova (podniz) lijevo od razmaka.
  3. Analizirajmo znakove koji čine grupu i utvrdimo je li ona cijeli broj. Identificirani cijeli brojevi bit će zbrojeni u posebnu varijablu.
  4. Skratimo početni red odabirom, pomoću druge funkcije, svih znakova koji su sada desno od razmaka. Ovaj prostor ne može biti samo jedan, već cijeli niz razmaka u nizu, pa u preostalom retku upotrijebite posebnu funkciju da biste se riješili svih krajnjih lijevih razmaka (u redu) i vratili se na točku 2. Ponovit ćemo korake od točke 2 do točke 4 dok ne postignemo stanje da nema razmaka u retku. U ovom slučaju, skraćeni niz će sačinjavati posljednju grupu raščlanjenih znakova.

Sada pogledajmo funkcije koje su nam potrebne za rješavanje problema.

AbbrLP
Sintaksa: AbbrLP()
Mogućnosti: (potreban).
Skraćuje razmake (neznačajne znakove) lijevo od prvog značajnog znaka u nizu i desno od posljednjeg značajnog znaka u nizu.

Pronaći
Sintaksa: Traži(,)
Mogućnosti: (potreban), (potreban).
Vraća položaj prvog znaka pronađenog podniza.
Numeriranje znakova u nizu počinje od 1. Ako niz ne sadrži navedeni podniz, vraća se 0. U našem slučaju, koristit ćemo razmak (“ ”) kao podniz.

Lav
Sintaksa: Lev(,)
Mogućnosti: (potreban), (potreban).
Odabire prve lijeve znakove niza. Pomoću ove funkcije odredit ćemo grupe znakova za analizu (od lijevog do prvog razmaka).

StrLength
Sintaksa: StrLength()
Mogućnosti: (potreban).
Dobiva broj znakova u nizu. Njime ćemo odrediti duljinu niza.
Funkcija Šifra simbola, koji ćemo koristiti za identificiranje grupa znakova koji su cijeli brojevi, opisan je ranije.

Pravo
Sintaksa: desno(,)
Mogućnosti: (potreban), (potreban).
Odabire krajnje desne znakove u nizu. Pomoću ove funkcije odabrat ćemo još neobrađeni dio niza.

AbbrL
Sintaksa: skraćenica()
Mogućnosti: (potreban).
Skraćuje razmake (neznačajne znakove) lijevo od prvog značajnog znaka u nizu. Ovu funkciju koristimo za uklanjanje mogućih razmaka s lijeve strane ostatka niza.

Ispod je mogući algoritam za funkciju s komentarima.

Numerički izrazi

Varijable modula i detalji objekata baze podataka mogu biti numerički.
Postoji ograničenje znamenki za broj. Za numeričke pojedinosti, duljina cijelog broja ne može premašiti 32 znaka.

Preciznost razlomaka ne smije premašiti 10 znamenki. Kada je varijabla opisana i dodijeljena joj je numerička vrijednost, njezina bitna dubina se nigdje ne bilježi. Međutim, postoje i ograničenja za varijable.

Pomoćnik sintakse kaže da je najveća dopuštena dubina bita za broj 38 znakova. Takvo ograničenje ne sprječava bilo kakvu odluku gospodarskih zadataka, tj. Bilo koja novčana vrijednost može se opisati pomoću ovih brojeva.

Međutim, ako i dalje trebate opisati velike količine da biste riješili neke matematičke probleme, tada u teoriji programiranja postoje algoritmi koji vam omogućuju da opišete brojeve s bilo kojom dimenzijom na temelju postojećih ograničenja.

Operacije primjenjive na brojeve:

  • obične aritmetičke operacije (-, +, *, /). Množenje i dijeljenje imaju prednost nad zbrajanjem i oduzimanjem. Zagrade imaju najveći prioritet. Postoje i unarni operatori + i -, čiji prioritet dolazi odmah iza zagrada;
  • operacija “ostatak dijeljenja” (%). Na primjer, 12%5=2;
  • matematičke funkcije koje se mogu koristiti za brojeve (trigonometrijske funkcije, potenciranje, kvadratni korijen, zaokruživanje na određenu mjesnu vrijednost, odabir cjelobrojnog dijela broja)

Ako govorimo o točnosti numeričkih vrijednosti, što se tiče detalja baze podataka, postoje prirodna ograničenja.

Ali što se varijabli tiče, tu postoji jedna posebnost. Zapravo, možete raditi s vrlo velikim brojevima u varijablama, ali vrijednosti s cijelim brojem duljine ne više od 32 znaka bit će pohranjene u informacijskoj bazi.

Booleove vrijednosti

Što se tiče tipa podataka Boolean, postoje samo dvije vrijednosti, True i False, koje se mogu dobiti na razne načine.

Možete, na primjer, koristiti operacije usporedbe između brojeva ili datuma. Kao rezultat toga, dobit će se određena Booleova vrijednost, koja se u budućnosti najčešće koristi u uvjetnim izjavama i operatorima petlje.

Literali tipa Datum

Postoje dva načina da se opiše datum. Jedan od njih je korištenje doslovnog. Literal je napisan u jednostrukim navodnicima.

Prvo se piše godina, zatim mjesec i tek onda dan.

Ako je potrebno, možete odrediti i vrijeme, jer u sustavu 1C:Enterprise 8 svaki datum sadrži i datum i vrijeme. Na primjer:

Datum dokumenta = '20140315121020';

Ako vrijeme nije navedeno, zadano je nula. U opisu datuma možete koristiti bilo koji razdjelnik. Na primjer:

Datum dokumenta = '2014.03.15';

Drugi način određivanja datuma je korištenje funkcije globalnog konteksta Datum od(). U ovom slučaju, ovoj funkciji prosljeđujemo istu stvar kao parametre: godinu, mjesec, dan odvojene zarezima.

Također možete odrediti vrijeme. Ako ga ne navedete, tada će prema zadanim postavkama biti početak dana.

U sustavu 1C:Enterprise 8 prazan datum je sam početak kalendara. Mogućnosti snimanja:

Prazan datum = '00010101';
PrazanDatum = Datum(1,1,1);

Oba unosa će vratiti isti rezultat, a ovaj datum će se smatrati praznim.

Praktičnost funkcije Datum od() Poanta je u tome da u njega možemo unijeti ne određene vrijednosti, već neke varijable. To jest, ponekad konstruiramo datum prikupljanjem različitih varijabli.

Operacija zbrajanja primjenjiva je na datum. Operacija zbrajanja dodaje navedeni broj sekundi datumu.

Primitivne konverzije tipova podataka

U izjavi dodjele gdje se zbraja više varijabli (na primjer, Varijabla = A + B + C), moguća je konverzija primitivnih tipova podataka. Pretvorba tipa podataka izvodi se na vrijednosti prvog tipa podataka.

Prema tome, ako je prvi tip podataka niz, tada će sustav pokušati pretvoriti cijeli izraz u niz. Ako je prvi tip podataka broj, tada će sustav pokušati dobiti numerički tip podataka.

I tako, niz + broj = niz. Ponekad se nizu može dodati broj ako se iz niza može izdvojiti neka brojčana vrijednost (na primjer, 123 + “456”).

Za logički tip podataka primjenjuju se sljedeći izrazi:

Točno I 1 = Točno;
Točno I 0 = Netočno.

Svaki broj veći od nule pretvara se u True, 0 se pretvara u False.

Kao što je ranije navedeno, datum se može dodati broju. Datumi se također mogu dodati tipu podataka Boolean.

U ovom slučaju, True se pretvara u 1, a False u 0.

Osim pretvorbe tipa u operatorima, eksplicitna pretvorba tipa moguća je pomoću odgovarajućih funkcija: String(), Number(), Date(), Boolean().

DO Crta bilo koja vrsta podataka se pretvara.

Broj se može dobiti iz niza ili iz Booleove vrijednosti. Logičke vrijednosti pretvaraju: True u 1, False u 0.

Možete pretvoriti niz u Datum ako sadrži vrijednost datuma. Na primjer, Datum (“20140315”). Kao što je ranije navedeno, moguće je pretvoriti po poziciji:

Datum od(,).

Broj i samu Booleovu vrijednost možete pretvoriti u Booleovu.

Ove se funkcije mogu koristiti u programskom kodu za izvođenje eksplicitne pretvorbe tipa.

Primitivni tipovi podataka Number, String, Date i Boolean mogu djelovati kao polja baze podataka.

Null i Nedefinirane vrijednosti

NULL je literal. Koristi se, u pravilu, u upitima baze podataka kada se spajaju dvije ili više tablica.

Zapisi koji nedostaju u drugoj tablici popunjeni su NULL vrijednošću. Oni. to je vrsta vrijednosti koja nedostaje.

U budućnosti, pri obradi dobivenog rezultata, to se mora uzeti u obzir, jer NULL nije nula, već odgovarajući tip podataka.

Kako bi se vrijednost obradila, NULL se mora pretvoriti u neki regularni tip podataka koji se može ispisati ili koristiti u aritmetičkim operacijama.

Vrijednost tipa NULL također se može dobiti u ugrađenom jeziku. Možete definirati varijablu i to joj dodijeliti NULL vrijednost. Međutim, takva se dodjela gotovo nikada ne koristi u programskom kodu.

Oni. NULL je zapravo tip podataka koji se dobiva pri radu s upitima. Vrijednost NULL u upitnom jeziku mora se obraditi na poseban način.

Naime, usporedba A=NULL neće raditi na razini upita, već će trebati koristiti specijalizirane funkcije. Međutim, u ugrađenom jeziku, usporedba s NULL vrijednošću bit će ispravno obrađena.

Tip podataka Nedefinirano je neprazna vrijednost nekog atributa.

Na primjer, ako atribut imenika ima vezu na neki drugi imenik kao tip podataka, tada prazna vrijednost ovog atributa neće biti jednaka Nedefinirano.

Ovaj tip (Undefined) pojavljuje se, prvo, ako imamo određenu varijablu, a ona nije inicijalizirana (tip podataka nije definiran).

Drugi primjer: Nedefinirani tip podataka vraćaju mnoge ugrađene jezične funkcije ako se akcija ne može izvesti.

Na primjer, traženje elementa imenika po imenu ako neki imenik nema takav naziv elementa. metoda FindByNameće vratiti vrijednost Nedefiniran.

pri čemu Nedefiniran je ključna riječ, označen je crvenom bojom. Ovo je također doslovno, za pisanje Nedefiniran nema potrebe za korištenjem navodnika, zareza, zagrada itd.

Ako postoji popis dokumenata, a ovaj popis je prazan (u skladu s tim nema redaka), tada trenutna linijaće uzeti vrijednost Nedefiniran.

Ako u informacijska baza postoji atribut sa složenim tipom podataka, tada će prazna vrijednost ovog atributa biti jednaka Nedefiniran.

Ali ako vrsta podataka nije složena, tada će prazna vrijednost odgovarati prazna vrijednost ove vrste(za datum, ovo je prva sekunda prvog sata prvog dana prvog mjeseca prve godine).

NULL i Undefined su i tipovi podataka i vrijednosti u ovim tipovima, te jedan i samo jedan. Za NULL to je vrijednost NULL, za Nedefinirano je Nedefinirano.

Tip podataka Vrsta

Glavna upotreba ovog tipa podataka je usporedba vrijednosti određene varijable ili atributa baze podataka s određenim tipom.

Oni. U algoritmu morate razumjeti koji je tip danog objekta.

Naime, ovaj tip podataka nema literal. Ne možemo ga napisati kao NULL ili Nedefined, ali možemo dobiti vrijednost ovog tipa pomoću dvije funkcije Tip I TipVrijednost.

Da bi se dobio tip nekog objekta (to može biti varijabla, ili atribut baze podataka, ili atribut forme), koristi se funkcija TipVrijednost.

Objekt za koji želite dobiti tip podataka prosljeđuje se ovoj funkciji.

Ova funkcija vraća tip tipa kao povratnu vrijednost.

Ubuduće ga treba usporediti s bilo kojim interesom. Na primjer:

Ako je TypeValue(Element) = Type ("DirectoryLink.Nomenclature") tada
Izvješće ("Ovo je proizvod");
završi ako;

Zaključno, rezimirajmo sav obrađeni materijal.

Pogledali smo osnovne strukture ugrađenog 1C jezika, naučili kako koristiti varijable i operatore te shvatili zašto i kako koristiti procedure i funkcije. Imajte na umu da je u osnovi sav naš programski kod do ove točke bio samodostatan - sve smo sami napisali od nule i minimalno koristili neke konfiguracijske objekte ili ugrađeni jezik.

Te ćemo objekte detaljnije istražiti u sljedećem članku, stoga nas pratite! ;)