Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Lajme
  • Operatorët logjikë 1s. Operacionet logjike (ndërmarrja e parë)

Operatorët logjikë 1s. Operacionet logjike (ndërmarrja e parë)

Ky artikull është një lloj përgjigjeje ndaj botimit "Pse 1C është i keq dhe pse programuesit 1C janë kaq të papëlqyer". Unë kam shumë vite që merrem me programim 1C dhe dua të them që na shikojnë shtrembër pikërisht për autorë të tillë artikujsh. Le të hedhim një vështrim hap pas hapi në atë që kemi tani.

Platforma

Ne kemi një platformë dhe konfigurime të shkruara për të.

Përditësimi i platformës sjell funksionalitet shtesë, heq një sërë gabimesh dhe natyrisht sjell disa veçori të reja. Në thelb, për mendimin tim personal, të ankohen për faktin se pas përditësimit të platformës, puna në zyrë është ndalur nuk është e saktë. Së pari, kopjet rezervë të bazës së të dhënave përpara përditësimit duhet t'ju shpëtojnë nga problemet me bazat e të dhënave. Epo, mundësia për t'u kthyer në platformën e vjetër nuk është anuluar. Kjo është njësoj si të fajësosh Microsoft-in ose autorët e softuerit të lirë për faktin se pas lëshimit të një patch/përditësimi gjithçka shkoi keq dhe ideja për të bërë një kopje të të dhënave nuk ju ka shkuar në mendje. Po, aktualisht ka probleme me çelësat e softuerit. Por mund të përdorni ato harduerike (janë pak më të shtrenjtë), ose gjatë punës teknike për të rivendosur funksionalitetin e zyrës, mund të instaloni arna jo ortodokse, të cilat do të ndihmojnë përkohësisht në zgjidhjen e problemit me mungesën/paaftësinë e çelësit. . Puna e një zyre me 30-40 persona është më e rëndësishme.

Konfigurimet

Këtu ka vend që kritikët të bredhin, por le t'i marrim gjërat me radhë.

Le të themi se kemi një organizatë të zakonshme tregtare dhe funksionaliteti i konfigurimit "Menaxhimi i Tregtisë 10.3/11" është i mjaftueshëm për ne.

Këtu kemi dy opsione për përdorimin e këtij produkti softuer:

1. Përdorni vetëm funksionalitetin bazë dhe përditësoni çdo muaj kur lëshohen versionet e reja të konfigurimit.
2. Mos përditësoni fare dhe, nëse është e nevojshme, shtoni funksionalitetin që na nevojitet.

Në fakt, opsioni i dytë përdoret më shpesh. Konfigurimi është vendosur, konfiguruar dhe gjatë gjithë jetës së organizatës praktikisht nuk përditësohet. Maksimumi - Formularët e printuar korrigjohen në përputhje me rregulloret. Kjo është në thelb ajo. Pse vazhdimisht vuani dhe transferoni ndryshime nga lëshimi në lëshim është e paqartë.

Sigurisht, mund të kundërshtohet dhe të thuhet se organizata ka, për shembull, kontabilitet. Le të shqyrtojmë këtë opsion.

Kontabiliteti duhet të përditësohet vazhdimisht për shkak të ndryshimeve në legjislacion, normave në fondet e taksave dhe pensioneve dhe punës tjetër të vështirë të përditshme të kontabilistëve.

Rregullat e shkëmbimit zakonisht përdoren për të transferuar të dhëna midis tregtimit dhe kontabilitetit. Ky është një rregull i caktuar, i shkruar në xml, i cili përshkruan se cilat objekte të dhënash shkarkohen dhe si ngarkohen; Ju gjithashtu mund të specifikoni përpunim shtesë para dhe pas në kohën e shkarkimit/ngarkimit. Nëse konfigurimi ynë tregtar mbetet i pandryshuar, atëherë ne nuk prekim rregullat e shkarkimit (me përjashtime të rralla, nëse papritmas ka ndryshime thelbësore). Ne gjithashtu nuk do t'i ndryshojmë shpesh rregullat e ngarkimit. Fakti i pranimit/shitjes së mallrave do të bartet gjithmonë. Por procedura për llogaritjen e taksave dhe gjërave të tjera tashmë do të llogaritet në departamentin e përditësuar të kontabilitetit dhe kjo nuk do të ndikojë në asnjë mënyrë në konfigurimin e tregtimit.

Më duket marrëzi të më kujtosh, por unë ende guxoj. Përpara përditësimeve dhe ndryshimeve, gjithmonë duhet të bëni kopje rezervë. Epo, duhet ta pranoni, është marrëzi të ankohesh se pas përditësimit gjithçka u prish dhe e gjithë kompania është në gjendje të keqe. Sepse Nuk ka asnjë mënyrë për të shitur, shkruar ose telefonuar. Të gjitha kontaktet, llogaritë dhe informacionet janë në bazën e të dhënave.

Përdorimi i 1C në fusha të ndryshme të biznesit

Po, kompania 1C është një monopolist në tregun e softuerit të krijuar për të automatizuar kontabilitetin dhe për të paraqitur pasqyra financiare.

Nëse po flasim për segmentin e biznesit të vogël, atëherë për kontabilitetin në shumicën e kompanive mund të përdorni pothuajse çdo program që është pak më i komplikuar sesa tabelat kryesore në Excel. Kontabiliteti për mallrat/shërbimet në pjesë, llogaritë e arkëtueshme/kreditori, llogaritja e listës së pagave. Dorëzimi i raporteve është i mundur përmes programeve të palëve të treta në të cilat thjesht futen numrat përfundimtarë.
Nëse biznesi është më i madh, atëherë konkurrentët e 1C janë Navision, Oracle dhe në shembuj shumë të mëdhenj është SAP.

Por këtu përballemi me një tjetër specifikë. Legjislacioni ynë ndryshon mjaft shpesh. Dhe edhe nëse kompanitë e huaja janë të përfshira në ruajtjen e rëndësisë së produkteve të tyre softuerike, ato jo gjithmonë vazhdojnë me ndryshimet. Meqenëse numri i zbatimeve të "programeve NON-1C" është i vogël, kostoja e pronësisë bëhet e lartë. Është e vështirë të gjesh një specialist që mund të përditësojë shpejt (në varësi të disponueshmërisë së një përditësimi) ose të konfigurojë/konfigurojë një produkt ekzistues softuerësh.

1C ka avantazhe të padyshimta me lidhjen e pajisjeve tregtare (peshore, skanerë, terminale, ekrane). Për më tepër, në konfigurimet standarde kjo bëhet në nivelin e përdoruesit. Ne do të shtojmë mundësinë për të lidhur përpunimin e jashtëm dhe format e printuara për të zgjeruar funksionalitetin dhe për të marrë raporte shtesë pa bërë ndryshime në konfigurim. Si rezultat, nëse i qaseni saktë, nuk ka kuptim të futeni "brenda" konfigurimit.

Një tjetër gjë është se është më e lehtë dhe më e lirë të futesh në një patericë që do të bjerë pas përditësimit dhe do ta vendosë klientin në gjilpërë. Pastaj ujisni vazhdimisht 1C dhe thoni që kështu lëshojnë shpesh, dhe me të njëjtën frekuencë vijnë te klienti dhe marrin pak para prej tij.

Më duket se arsyeja kryesore për negativitetin ndaj 1C është se kodi është i hapur. Askush nuk e ka parë se si është shkruar Word ose Navision dhe askush nuk do të shkojë atje për të shtuar butonat e tij, të cilët do të veprojnë krejtësisht ndryshe nga sa kishin menduar zhvilluesit. Është marrëzi të shkruash se gjithçka është përditësuar, edhe atë që unë nuk e përdor. Mos e përditësoni modulin që është përgjegjës për faqeshënuesit në shfletues, unë nuk e përdor atë. Ose titujt dhe fundet në Word nuk nevojiten fare, hiqni ato nga përditësimi. Nëse nuk ju pëlqen, mos e përditësoni, ose kur përditësoni, lexoni se çfarë ka ndryshuar.

Në emrin tim, do të shtoj se nuk jam përfaqësues i kompanive të franshizës apo partner. Unë kam automatizuar kontabilitetin për 1C për më shumë se 7 vjet. Nëse jeni të interesuar, mund t'ju tregoj më në detaje për ndërlikimet e kontabilitetit në realitetet e kohës sonë.

Kujdes! Ky është një version hyrës i mësimit, materialet e të cilit mund të jenë të paplota.

Hyni në sit si student

Identifikohu si student për të aksesuar materialet shkollore

Gjuha e brendshme e programimit 1C 8.3 për programuesit fillestar: shprehje të thjeshta logjike në 1C

Në mësimin e fundit mësuam se si të japim emra dhe të futim vlerat e tyre nga përdoruesi.

Fitoni forcë dhe durim. Mësimet Nr. 5 dhe Nr. 6 do të jenë të vështira, por shumë të rëndësishme për të kuptuar më tej programimin në 1C. Prandaj, nëse të paktën diçka mbetet e pakuptueshme ose e pazbuluar, rilexoni atë, mendoni për të, bëni pyetje.

Shprehje të thjeshta Boolean

Sot, llojeve të të dhënave të studiuara tashmë (vargu, numri dhe data), ne do të shtojmë një tjetër - logjike lloji. Mund të marrë vetëm dy vlera: E vërtetë ose Gënjeshtra.

Vlera Boolean ( E vërtetë ose Gënjeshtra) është rezultat i disa shprehjeve logjike.

Një shprehje Boolean është një shprehje e përbërë duke përdorur operacione krahasimi. Ju mund të krahasoni numrat, datat, vargjet dhe të dhëna të tjera. Po lexoni një version provë të mësimit, mësimet e plota janë të disponueshme. Për një shprehje logjike mund të themi, është e vërtetë ( E vërtetë) ose e pasaktë ( Gënjeshtra).

Operacionet e krahasimit janë si më poshtë:

Mendoj se është intuitivisht e qartë se çfarë do të thotë secili prej operacioneve.

Lexohet, për shembull, kështu:

  • 1 = 1 ("një është e barabartë me një").
  • 4 <>5 ("katër nuk është e barabartë me pesë")
  • 3 > 1 ("tre është më shumë se një").

Ju lutemi vini re se tre shembujt e listuar të shprehjeve logjike marrin vlerën E vërtetë, pasi janë të gjitha të sakta.

Le të shohim një shembull:

Detyra nr 14. Për secilën shprehje logjike, tregoni rezultatin e saj - E vërtetë ose Gënjeshtra.

  1. "Venus" = "Jupiter"
  2. "Venus"<>"Jupiteri"
  3. 123 = 321
  4. 123 < 321
  5. 123 <= 321
  6. 123 <= 123
  7. "20000101" <> "20140101"
  8. "20000101" = "20000101"
  9. "20140101" > "20120101"
  10. 25 + 25 = 50
  11. 2 * (10 + 10) > 50
  12. "Yuri" + "Gagarin" = "Yuri Gagarin"

Mundohuni t'u përgjigjeni të gjitha pyetjeve vetë. Po lexoni një version provë të mësimit, mësimet e plota janë të disponueshme. Pastaj shikoni përgjigjet më poshtë dhe përpiquni të kuptoni nëse keni bërë ndonjë gabim diku.

  1. "Venus" = "Jupiter" ( Gënjeshtra, vargjet nuk janë të barabarta me njëri-tjetrin, por shprehja thotë se janë të barabartë).
  2. "Venus"<>"Jupiteri" ( E vërtetë, rreshtat nuk janë të barabartë me njëri-tjetrin, siç thuhet në shprehje).
  3. 123 = 321 (Gënjeshtra, meqenëse numrat nuk janë të barabartë me njëri-tjetrin, por shprehja thotë se janë të barabartë).
  4. 123 < 321 (E vërtetë, pasi 123 është më pak se 321, siç thuhet në shprehje).
  5. 123 <= 321 (E vërtetë, pasi 123 është më i vogël se 321, dhe ky pohim është i vërtetë nëse numri i majtë është më i vogël ose i barabartë me të djathtën).
  6. 123 <= 123 (E vërtetë, pasi 123 është e barabartë me 123, dhe ky pohim është i vërtetë nëse numri i majtë është më i vogël ose i barabartë me të djathtën).
  7. "20000101" <> "20140101" (E vërtetë, pasi data e majtë 01/01/2000 nuk është e barabartë me 01/01/2014, siç thuhet në shprehje).
  8. "20000101" = "20000101" (E vërtetë, pasi data e majtë 01/01/2000 është e barabartë me 01/01/2000, siç thuhet në shprehje).
  9. "20140101" > "20120101" (E vërtetë, pasi që i pari i janarit 2014 është më i madh se i pari i janarit 2012, siç thuhet në shprehje).
  10. 25 + 25 = 50 (e vertete, pasi 25 plus 25 është vërtet e barabartë me pesëdhjetë, siç thuhet në shprehje).
  11. 2 * (10 + 10) > 50 (Gënjeshtra, meqenëse rezultati i shprehjes së majtë është 40, dhe 40 është më pak se 50, megjithëse deklarata thotë të kundërtën).
  12. "Yuri" + "Gagarin" = "Yuri Gagarin" ( E vërtetë, pasi shuma e vargjeve "Yuri" dhe "Gagarin" formon një varg "Yuri Gagarin", i cili është i barabartë me vargun në të djathtë, siç thuhet në shprehje).

Le t'ju bëjmë të numëronikompjuter

Por çfarë konsiderojmë ne vetë "të vërtetë" ose "të gabuar". Në fund të fundit, ne kemi një kompjuter në dorë! Le t'ia besojmë këtë detyrë atij dhe në të njëjtën kohë ta testojmë veten.

Për shembull, le të kontrollojmë shprehjen 2 * (10 + 10) > 50.
Për ta bërë këtë, ne do të shkruajmë programin e mëposhtëm:

Raporti(2 * (10 + 10 ) > 50 ) ;

Nëse e ekzekutojmë, kompjuteri do të thotë "Jo", që do të thotë se rezultati është Gënjeshtra.

Si e ka llogaritur këtë shprehje?

  1. Kompjuteri pa komandën Raport.
  2. Shikova se çfarë parametri po i kalojmë kësaj komande.
  3. Pashë që shprehja logjike 2 * (10 + 10) > 50 ishte specifikuar si parametër.
  4. Fillova të llogaris rezultatin e një shprehjeje logjike.
  5. Pashë që shprehja përbëhet nga ana e majtë 2 * (10 + 10), ana e djathtë 50 dhe shenja më e madhe se midis tyre.
  6. Llogarita rezultatin në anën e majtë dhe kuptova se ishte e barabartë me dyzet.
  7. Ai e shikoi përsëri shprehjen, vetëm në një formë të thjeshtuar: 40 > 50, dhe meqë 40, natyrisht, është më pak se 50, ai shtypi "Jo".

Detyra nr 15. Vlerësoni të gjithë shembujt e shprehjeve logjike nga detyra e mëparshme në kompjuter.

Për shembull, shprehja "Venus" = "Jupiter", vlera e së cilës, siç zbuluam, është e barabartë me Gënjeshtra.

Raporti("Venus" = "Jupiteri");

Kompjuteri shfaq vlerën "Jo" në fillim, që do të thotë: rezultati është vërtet i barabartë me Gënjeshtra dhe e kemi llogaritur vetë absolutisht saktë.

Zgjidhje referimi. Fillimisht e shkruajmë vetë kodin, e kontrollojmë në kompjuter (si të gjithë programet shembull nga mësimet), vetëm pastaj kontrollojmë












1. Hyrje

Gjuha e programit 1C është e strukturuar dhe e bazuar në objekte. Kjo gjuhë mund të quhet si një gjuhë e ndërmjetme midis gjuhëve të nivelit të lartë dhe gjuhëve të skriptimit, siç është VBA.
Në thelbin e tij, aplikacioni 1C funksionon sikur me dy module. Moduli i parë është kerneli ose motori. Në thelb, ky është një përpilues që përkthen kodin, si dhe përshkrimet e formave të printuara dhe grafike në ekran ose printer. Moduli i dytë është baza e të dhënave me të cilën funksionon moduli i parë. Të dy modulet janë të ndërlidhura dhe nuk mund të punojnë në mënyrë të pavarur. Moduli i dytë është përgjegjës për aksesin në bazën e të dhënave, si dhe për manipulimin e informacionit në bazën e të dhënave.
Në versionin 1C 7.7 ka 1 mekanizëm të integruar të hyrjes në bazën e të dhënave dhe një mekanizëm që përdor një ndërfaqe të jashtme të hyrjes në bazën e të dhënave.
Mekanizmi i parë është qasja në bazën e të dhënave të formatit dbf (në fakt, qasja jo në bazën e të dhënave, por në çdo skedar individual). Versioni i dbf i përdorur është DBASE II, me kufizimet dhe disavantazhet përkatëse të këtij versioni të vjetër.
Mekanizmi i dytë është qasja në bazën e të dhënave në formatin MS SQL Server duke përdorur një lidhje nëpërmjet ODBC (i ashtuquajturi ofrues i aksesit ODBC në MS SQL Server), i cili vjen me MS SQL Server. Fillimisht, versioni 7.7 u zhvillua për SQL Server 6.5 (ose më mirë, ai u finalizua nga versioni 7.5, i cili funksiononte në versionet e mëparshme të SQL Server). Në kohën e shkrimit, versioni aktual i 1C (reliance 7.70.027) mbështet versionet e SQL Server 6.5, 7.0. SQL2000, nuk ka asnjë informacion në lidhje me mbështetjen për SQL 2005. Por autori kreu një test lidhjeje me versionin 7.70.027 të SQL Server 2005 dhe testi dështoi. ato. mund të supozojmë se versioni 27 nuk e mbështet zyrtarisht SQL Server 2005 (por ky problem mund të zgjidhet këtu :).
Për të kuptuar se si funksionon 1C, le të shohim se si 1C ruan dhe lëshon kodin për ekzekutim. I gjithë kodi 1C ndodhet fizikisht ose në skedarin 1Cv7.md ose në raportet e përpunimit të jashtëm (*.ert) (është gjithashtu e mundur të ngarkoni module nga skedarë të jashtëm, por ky është një rast i veçantë dhe nuk do të merret parasysh). Kodi ekzekutohet hap pas hapi. Kjo do të thotë që kodi përpilohet dhe ekzekutohet sipas nevojës (më saktë, kur aksesohet një formë objekti ose objekti). Përjashtimi i vetëm është moduli global; përpilimi i tij ndodh kur lansohet vetë 1C (më saktë, pasi të jetë inicializuar baza e të dhënave). Modulet e mbetura nuk përpilohen kur lansohet 1C, por përpilohen vetëm kur ky modul aksesohet përmes një forme ose objekti. Kjo çon në faktin se ju duhet të kontrolloni vetë kontrollin e sintaksës ose të kërkoni për gabime sintaksore tashmë ndërsa aplikacioni po funksionon.

2. Struktura e objektit 1C

Logjikisht, kodi 1C ruhet në module (një modul në të kuptuarit e gjuhës 1C është kodi që niset për ekzekutim). Në 1C, të gjitha modulet mund të ndahen në 3 kategori të mëdha: 1 - moduli global, modulet e objektit 1C, modulet e përpunimit dhe raportimit. Nga pikëpamja 1C, një objekt kuptohet si pjesë e një grupi të përgjithshëm entitetesh që ekzistojnë në një bazë të dhënash specifike, të cilat kanë të njëjtat veti, kanë të njëjtin grup metodash dhe kryejnë të njëjtin lloj funksionesh me informacion ose me bazën e të dhënave. Duhet të theksohet se jo të gjitha objektet 1C kanë module, por në të njëjtën kohë, disa objekte kanë më shumë se një modul. Zakonisht modulet janë të lidhura me formularët. Nga pikëpamja 1C, një formë është një dritare me një sërë atributesh dhe detajesh. Jo të gjitha objektet kanë format e tyre; në të njëjtën kohë, disa objekte kanë disa forma. Zakonisht kjo është forma e një elementi specifik ose forma e një liste elementesh.
Duhet të theksohet se 1C punon me një bazë të dhënash, në të njëjtën kohë, disa objekte nuk ruhen në bazën e të dhënave.
ato. Klasifikimi i parë i objekteve mund të bazohet në faktin nëse informacioni mbi objektet ruhet në bazën e të dhënave ose jo në bazën e të dhënave; le t'i quajmë llojin e parë të objekteve Informativ, dhe llojin e dytë Jo-Informativ. Të gjitha objektet e informacionit ruhen në një bazë të dhënash, në një ose më shumë tabela. Puna me objektet e informacionit përfshin gjithmonë pozicionimin në një hyrje specifike në tabelë që identifikon objektin. Kjo do të thotë që për të hyrë në një objekt të tillë, duhet disi të shkoni te rekordi i kërkuar në bazën e të dhënave. Në mënyrë tipike, metodat 1C përdoren për një tranzicion të tillë.
Një tipar shumë i mirë i 1C është se disa nga objektet e krijuara rishtazi mund të kenë llojin e një objekti tashmë ekzistues. Objekte të tilla quhen objekte tip-formuese. Ato lloje që nuk formojnë të dhëna për objektet e krijuara rishtazi janë jo-tipformuese. Të gjitha objektet tipformuese janë informative, d.m.th. ato ruhen në një bazë të dhënash. Në kuptimin e 1C, objektet tip-formuese janë objekte agregate.
Në të njëjtën kohë, në 1C ekzistojnë lloje themelore që ekzistojnë pavarësisht nga objektet që krijohen. Këto lloje ruhen gjithashtu në bazën e të dhënave, por këto të dhëna nuk janë objekte nga pikëpamja 1C, por janë atribute të objekteve të informacionit.
Gjithashtu, një klasifikim i rëndësishëm i objekteve është shtypja e tyre sipas karakteristikave me të cilat ato ndahen në vetë përshkrimin e bazës së të dhënave. Këto janë objektet:
  • Konstante.
  • Drejtoritë.
  • Dokumentacioni.
  • Regjistrat e dokumenteve.
  • Transfertat.
  • Raportet.
  • Përpunimi.
  • Skemat e llogarive.
  • Llojet e nënkontos.
  • Operacioni.
  • Instalime elektrike.
  • Regjistrat.
  • Ditarët e llogaritjes.
  • Llojet e llogaritjeve.
  • Grupet e vendbanimeve.
  • Kalendarët.
Përveç kësaj, ka objekte jo-shtypëse që nuk janë informuese dhe që nuk janë të pranishme në pemën e konfigurimit:
  • Teksti.
  • XBase.
  • Rezultatet e Kontabilitetit.
  • Postimet e sakta.
  • Rregulla e rillogaritjes.
  • Pasoja.
  • Periodike.
  • ListVlerat.
  • Tabela e vlerave.
  • Tabela.
  • Kërkesë.
  • Foto.
  • FS (Skedari i Sistemit).
Pothuajse të gjitha llojet e objekteve të listuara mund të aksesohen në module duke përdorur funksionin e krijimit të objektit CreateObject().Struktura e përgjithshme e klasifikimeve të objekteve të përshkruara mund të përfaqësohet në formën e matricës së mëposhtme:
Llojet e objekteve Informacion Formimi i tipit CreateObject() Disponueshmëria e moduleve
Konstante
Drejtoritë + + + +
Dokumentacioni + + + +
Regjistrat e dokumenteve +
Transfertat +
Raportet +
Trajtimet +
Skemat e llogarive + + + +
Llojet e nënkontos +
Operacioni + + +
Instalime elektrike + +
Regjistrat +
Ditarët e llogaritjes + +
Llojet e llogaritjeve + +
Grupet e vendbanimeve
Kalendarët +
Teksti +
XBase +
Rezultatet e Kontabilitetit +
Postimet e sakta + +
Rregulla e rillogaritjes +
Pasoja + +
Periodike +
ListVlerat +
Tabela e vlerave +
Tabela +
Kërkesë +
Foto +
FS (Skedari i Sistemit) +
Numri +
Linjë +
datë +

3. Gjuha 1C. Modulariteti

Siç është përmendur tashmë, i gjithë teksti i kodit të programit është i ndarë në module.
Në përgjithësi, modulet mund të strukturohen si kjo:
Baza e të dhënave e veçantë
Moduli global.
Modulet e drejtorisë.
Modulet Format e listave të drejtorive.
Moduli i elementit të drejtorisë.
Moduli i grupit të drejtorive
Modulet e dokumentit.
Moduli i formës së dokumentit.
Moduli i dokumenteve.
Modulet e regjistrit të dokumenteve.
Moduli i formularit të regjistrit të dokumentit.
Modulet e grafikut të llogarive.
Moduli i formularit të faturës.
Format e listës së moduleve të planit kontabël.
Modulet e funksionimit.
Moduli i funksionimit.
Modulet e formularit të listës së operacioneve.
Modulet e instalimeve elektrike.
Modulet e formularëve të listës së ditarit të transaksioneve.
Modulet e ditarit të llogaritjes.
Modulet e formularëve për listat e ditarëve të llogaritjes.
Modulet e llojit të llogaritjes.
Modulet e llogaritjes.
Raportoni modulet.
Moduli i formularit të raportit.
Modulet e përpunimit.
Moduli i formularit të përpunimit.
ato. brenda një baze të dhënash, vetëm moduli global është i aksesueshëm nga çdo modul objekt. Të gjitha modulet e tjera janë të izoluara dhe ndërlidhja e tyre pa thirrje në një objekt specifik të pozicionuar është i pamundur. Por në të njëjtën kohë, atributet (dhe disa metoda që përcaktohen si funksione të sistemit) të nivelit të lartë janë të disponueshme nga secili modul. Duhet të theksohet se funksionet dhe procedurat e shkruara të përcaktuara nga përdoruesi nuk janë metoda të objekteve dhe ato nuk mund të quhen si metoda.
Niveli i izolimit të atributeve dhe variablave shkon nga poshtë lart. Pra, variablat e një moduli global janë të disponueshme në të gjitha modulet, dhe po kështu janë funksionet dhe procedurat e një moduli global. Në të njëjtën kohë, atributet e objekteve janë të disponueshme në të gjitha modulet e këtyre objekteve, por metodat ndahen në ato që janë të disponueshme dhe ato që nuk janë.

4. Dispozitat e përgjithshme për shkrimin e moduleve

Semantika e gjuhës 1C është e tillë që i gjithë teksti i modulit ndahet në deklarata dhe komente. Fundi i operatorit është simboli ";". Operatorët përbëhen nga shprehje.

4.1.Komentet

Komentet në 1C janë vetëm rresht pas rreshti (nuk ka komente bllok pas blloku). një koment fillon me dy karaktere "//" dhe përfundon me një karakter në fund të rreshtit (d.m.th., deri në fund të rreshtit).

4.2. Emrat e variablave, procedurave dhe funksioneve

Emri i një ndryshoreje, procedure përdoruesi ose funksioni mund të jetë çdo sekuencë shkronjash, numrash dhe nënvizash "_" duke filluar me një shkronjë ose nënvizim "_". Emrat e krijuar rishtazi nuk duhet të përputhen me fjalët e rezervuara të gjuhës ose emrat e procedurave dhe funksioneve ekzistuese të disponueshme në kohën e ekzekutimit. Emrat e variablave, procedurave dhe funksioneve njihen në një mënyrë të pandjeshme ndaj shkronjave të vogla.

4.3. Fjalë të rezervuara

Në vijim fjalë kyçe janë të rezervuara dhe nuk mund të përdoren si emra variablash të krijuar ose emra të deklaruar të procedurave dhe funksioneve. Në këtë version të gjuhës, secila prej fjalëve kyçe ka dy përfaqësime - rusisht dhe anglisht. Përfaqësimi në anglisht është tradicional për gjuhët e programimit. Fjalët kyçe në përfaqësimin rusisht dhe anglisht mund të përzihen lirisht në një tekst burimor. Rasti i shkronjave të fjalëve kyçe nuk ka rëndësi. Më poshtë është një listë e fjalëve kyçe në të dyja pamjet.

Përndryshe Nëse

Fortësia

FundNëse

Kontekst

Vazhdoni

Aborti

Fundi i procedurës

Funksioni i Fundit

Paralajmërim

Fundi i Ciklit

Procedura

4.4. Struktura e modulit të softuerit

Struktura e modulit të softuerit mund të ndahet në seksionet e mëposhtme:

  • seksioni i përkufizimit të variablave;
  • seksioni i procedurave dhe funksioneve;
  • seksioni i programit kryesor.

Në një modul specifik softueri, ndonjë nga seksionet mund të mungojë.

Seksioni i përkufizimit të variablave vendosur nga fillimi i tekstit të modulit deri në deklaratën e parë Procedure ose Function ose ndonjë deklaratë të ekzekutueshme. Ky seksion mund të përmbajë vetëm deklarata të deklaratave të variablave.

Seksioni i procedurave dhe funksioneve vendosur nga deklarata e parë e Procedurës ose Funksionit deri te çdo deklaratë e ekzekutueshme jashtë trupit të procedurës ose përshkrimit të funksionit.

Seksioni kryesor i programit vendoset nga deklarata e parë e ekzekutueshme jashtë trupit të procedurave ose funksioneve deri në fund të modulit. Ky seksion mund të përmbajë vetëm deklarata të ekzekutueshme. Seksioni kryesor i programit ekzekutohet kur moduli niset për ekzekutim (shih "Llojet e moduleve të programit"). Zakonisht, në një seksion të programit kryesor, ka kuptim vendosja e operatorëve për inicializimin e variablave me ndonjë vlerë specifike, e cila duhet të kryhet përpara thirrjes së parë në ndonjë nga procedurat ose funksionet e modulit.

5. Format për përshkrimin e shprehjeve dhe konvertimeve të tipit

Siç është përmendur tashmë, semantika e gjuhës 1C është e tillë që përbërësi kryesor i operatorëve janë shprehjet. Shprehjet, nga ana tjetër, përbëhen nga numra, vlera vargjesh ose vlera të llojit "datë", operatorë të integruar të gjuhës, atribute dhe funksione të lidhura me simbole të operacioneve aritmetike.

5.1 Llojet e të dhënave në shprehje dhe formati i regjistrimit të tyre.

Le të shohim më nga afër elementët e shprehjeve dhe veprimet aritmetike të përdorura për të punuar me to.

Numrat

Numrat shkruhen me numra nga 0 deri në 9; Nëse është e nevojshme të shkruhet një numër thyesor, pjesa e plotë ndahet nga pjesa thyesore me një pikë ".".
Për shembull:
45 është një numër i plotë pozitiv
-12 është një numër i plotë negativ
16.67 është një numër thyesor pozitiv.

Për të punuar me numra, mund të përdorni veprimet e dhëna aritmetike (shih më poshtë).

Datat

Datat shkruhen si një sekuencë karakteresh në formatin e mëposhtëm:
"DD.MM.YY"
ose
"DD.MM.VVVV" ,
Ku:
DD - dita e muajit. Duhet të shkruhet me dy shifra: nëse dita e muajit është më e vogël se 9, përpara vendoset një 0, për shembull "02";
MM - numri i muajit, i shkruar gjithashtu me dy shifra;
YY (YYYY) - viti, mund të shkruhet me dy ose katër shifra.

Për shembull: "01/01/2007"

Ju lutemi vini re se datat tregohen vetëm në thonjëza të vetme. Me një regjistrim të tillë, një sekuencë me një simbol si "01/01/2007" do të perceptohet dhe përpunohet nga sistemi 1C: Enterprise si një datë, dhe jo si një sekuencë karakteresh që "përfaqësojnë" datën. Ne do t'ju tregojmë pse kjo është e rëndësishme më poshtë.

Përveç datave specifike, në gjuhën e integruar ekziston një gjë e tillë si "datë boshe". Një datë e zbrazët specifikohet nga sekuenca "00.00.00". Në mënyrë tipike, një datë boshe përdoret për krahasim. Ju gjithashtu mund të merrni një datë të zbrazët duke përdorur metodën e konvertimit Date(0).

Shënim.

Nuk ka lloj Koha në 1C, ashtu si nuk ka lloj DataTime.

Vlerat e vargut

Vlerat e vargut janë sekuenca karakteresh të mbyllura në thonjëza të dyfishta ose të vetme. Shembull: "Starg shembull".

Nëse duhet të specifikoni thonjëza në një vlerë vargu, përdorni 2 karaktere thonjëzash me radhë. Për shembull, kur shkruani përmbajtjen e një operacioni në një formulë, një vlerë vargu i formës

"Linja shembull ""vargu në thonjëza"""

do të formojë një varg në përmbajtjen e operacionit

Shembull varg "vargu në thonjëza"

Në shembullin e konsideruar, në një vlerë vargu:
karakteri i parë i kuotës është thonjëza hapëse e vlerës së vargut në tërësi;
2 thonjëza me radhë janë thonjëza hapëse dhe në vargun që rezulton zëvendësohen me një thonjëza të vetme;
3 karaktere citate në një rresht është një grup i përbërë nga: 2 thonjëza - një thonjë mbyllëse, të cilat në vargun që rezulton zëvendësohen me një karakter të vetëm thonjëza, dhe një thonjë - një thonjë mbyllëse e vlerës së vargut në tërësi.

Siç tregon praktika, për disa arsye specifikimi i kuotave në vlerat e vargut shkakton disa vështirësi. Megjithëse nuk ka asgjë të komplikuar në lidhje me këtë, thjesht duhet të mbani mend një rregull të thjeshtë: thonjëzat e para dhe të fundit janë nga një karakter secila, dhe të gjitha thonjëzat brenda tyre janë nga dy karaktere secila.

Vlerat e vargut kanë konceptin e një "vargu bosh". Një varg bosh specifikohet nga një palë thonjëza: "". Vargu bosh ka të gjitha vetitë e një vlere të vargut "normal", por nuk ka gjatësi.

5.2. Veprimet aritmetike

Tani le të shohim veprimet aritmetike të përdorura në gjuhën 1C (Op - "operand"):

Megjithatë, përdorimi i veprimeve aritmetike ka veçori të caktuara, në varësi të llojeve të operandëve.

ME vlerat numerike Ju mund të përdorni të gjitha veprimet aritmetike të listuara më sipër, praktikisht pa kufizime.

Për vlerat e vargut Lejohet vetëm operacioni "+", i cili në këtë rast quhet operacion lidhjen (aderimi). Ky operacion shton një vlerë të vargut në një tjetër.

Për shembull, rezultati i shprehjes:

"Shargu Shembull " + "Janar 2007"

do të ketë një linjë

Shembull i vargut janar 2007

Ju lutemi vini re se vlerat e vargut janë të lidhura me njëra-tjetrën pa modifikim - gjatësia e vlerës së vargut që rezulton është e barabartë me shumën e gjatësisë së vlerave të vargut të lidhur. Në mënyrë që rezultati i operacionit të lidhjes të jetë një varg "i lexueshëm", nuk duhet të harroni për hapësirat pasuese dhe drejtuese në linjat e bashkuara, siç u bë, për shembull, në rreshtin "Linja Shembull".

Operacioni i lidhjes mund të bashkojë më shumë se dy vlera të vargut në të njëjtën kohë. Për shembull, shprehja e mëposhtme është e pranueshme:

"Ivanov" + "" + "Ivan" +" " + "Ivanovich"

Rezultati do të jetë vargu

Ivanov Ivan Ivanovich

Për vlerat e tipit të datës Veprimet e mbledhjes dhe zbritjes janë të vlefshme, por rregullat për përdorimin e këtyre veprimeve janë pak më komplekse sesa për numrat dhe vargjet.

Ju mund të shtoni një numër në datë, për shembull:

"02.08.2000"+2

dhe rezultati i shprehjes do të jetë një datë më e vonë se mandati i parë me një numër ditësh të barabartë me mandatin e dytë. Në këtë rast, rezultati do të jetë 08/04/2000, ose 4 gusht 2000.

"02.03.2000"-2

në këtë rast, ne do të marrim një datë më të hershme se ajo që zvogëlohet. Duhet të theksohet se me një rritje ose ulje të tillë të datave, kryhet një kalim i saktë midis muajve dhe viteve, domethënë merret parasysh numri i ditëve në muaj, vitet e brishtë etj. Në shembullin tonë, rezultati i shprehjes, natyrisht, nuk do të jetë 03/00/2000, por 07/29/2000 - 29 shkurt 2000.

"02.10.2000" - "02.08.2000"

në këtë rast, rezultati do të jetë numri i ditëve ndërmjet asaj që zvogëlohet dhe asaj që zbritet.

Siç e keni vënë re ndoshta, ndryshe nga operacionet me numra dhe vargje, operacionet e datës kanë një lloj rezultati të ndryshëm shprehjeje sesa lloji i operandëve të tij. Kjo duhet mbajtur parasysh kur shkruani formula: nëse shkruajmë një shprehje si ajo e mësipërme në një formulë për të llogaritur datën e transaksionit, me shumë mundësi do të marrim një mesazh gabimi.

"02.08.2000" + "02.10.2000"

dhe nuk do të marrim as një mesazh gabimi, por rezultati i një shprehjeje të tillë nuk ka asnjë kuptim fizik.

Për të pasur një kuptim më të përgjithshëm të shprehjeve, duhet thënë se operandët e veprimeve aritmetike mund të jenë jo vetëm numra, vargje ose data specifike, por edhe shprehje që rezultojnë në numra, vargje ose data.

Për shembull, në shprehje

"Amortizim për" + Format (Data e Punës(), "D MMMMYYY")

operandi i dytë është shprehje, rezultati i të cilit do të jetë një vlerë vargu që përfaqëson muajin me fjalë dhe vitin e datës së punës.

5.3. Konvertimi automatik i tipit

Në përgjithësi, operandët e një shprehjeje duhet të kenë të njëjtin lloj ose lloje, siç përcaktohet nga rregullat për ndërtimin e shprehjeve. Për shembull, numrat duhet të shtohen me numra, vargjet me vargje, por një datë dhe një numër mund të zbriten nga një datë.

Ndërsa shkruani shprehje, mund t'ju duhet të konvertoni llojet e të dhënave të operandëve të shprehjeve individuale sipas rregullave. Për këtë qëllim, gjuha e integruar ka funksione të krijuara posaçërisht për këtë. Le të japim një shembull të një shprehjeje tashmë të njohur për ne:

"Amortizim për " + Format(Data e Punës(), "D MMMMYYYY")

Në këtë shprehje, operandi i dytë i WorkingDate(), i cili është i tipit "date", konvertohet në llojin "string" duke përdorur funksionin Format().

Sidoqoftë, sistemi 1C: Enterprise, përpara se të vlerësojë shprehjet, "mund" të konvertojë automatikisht operandët e llojeve të ndryshme në një lloj, të udhëhequr nga rregullat e konvertimit të tipit.

Rregullat e mëposhtme të konvertimit janë përcaktuar për llojet bazë:

Numri -> Vargu

Nëse një numër nuk ka cilësime formati, atëherë paraqitja e vargut të tij është përfaqësimi i plotë me pikë fikse të numrit.

Data -> String

Një datë e konvertuar në një lloj vargu ka formën DD.MM.YY, ku YY është dy shifra të vitit, MM është përcaktimi numerik i muajit (01, ..., 12), DD është dita e muajit .

String -> Numri

Vargu konvertohet në numër për aq kohë sa të jetë e mundur. Numri që rezulton konsiderohet si rezultat i transformimit. (Për shembull, vargu "1.22 Glass" do të konvertohet në numrin 1.22). Nëse nuk ka asgjë në fillim të rreshtit që mund të interpretohet si numër, atëherë rezultati është 0.

Data -> Numri

Rezultati i këtij konvertimi është një paraqitje numerike e datës.

String -> Data

Nëse fillimi i rreshtit përmban diçka që mund të interpretohet si një paraqitje e vargut të datës në formën DD.MM.YY, ku YY është dy shifra të vitit, MM është përcaktimi numerik i muajit (01, .. ., 12), DD është muaji i ditës, do të bëhet konvertimi përkatës. Përndryshe, vlera e datës do të jetë e pavlefshme.

Numri -> Data

Bëhet një përpjekje për të marrë një pjesë të tërë të një numri dhe për ta interpretuar atë si një paraqitje numerike të një date. Nëse numri është negativ, rezultati është një datë zero.

Pra, para së gjithash, duhet ta mbani mend këtë lloji i rezultatit të një shprehjeje përcaktohet nga lloji i operandit të parë të kësaj shprehjeje. Operandët e tjerë janë hedhur në llojin e operandit të parë. Duke ditur këtë rregull, ju mund të parashikoni llojin e rezultatit të shprehjes në tërësi dhe të kontrolloni llojin e rezultatit.

Për shembull, rezultati i shprehjes

2 + "A"

do të jetë numri 2, sepse operandi i parë i shprehjes është i një lloji numerik, dhe operandi i dytë, në përputhje me rregullat e konvertimit të tipit, u bë i barabartë me 0.

Sidoqoftë, ia vlen të ndryshoni pak shprehjen, duke e shkruar kështu:

""+ 2+"A"

si rezultati i saj do të ndryshojë rrënjësisht: rezultati i shprehjes do të jetë vargu "2A".

Pse ndodhi? Më sipër folëm për konceptin e një "vargu bosh", i cili ka të gjitha vetitë e vlerës së vargut, duke përfshirë edhe llojin "string". Në shembullin tonë, vargu bosh është operandi i parë i shprehjes, dhe kur shprehja u vlerësua, të gjithë operandët e tij u konvertuan në llojin "string" sipas rregullave të konvertimit të tipit.

Një shembull më shumë. Ne theksuam më lart se një vlerë e tipit "datë" përcaktohet nga një varg karakteresh në thonjëza të vetme, dhe e njëjta sekuencë karakteresh, por në thonjëza të dyfishta, është një varg. Tani do ta ilustrojmë këtë me shembuj.

Siç kemi thënë tashmë, rezultati i shprehjes "08/02/2000"+2 do të jetë data 08/04/2000. Por duke specifikuar operandin e parë në thonjëza të dyfishta:

"02.08.2000"+2

do të marrim një rezultat krejtësisht të ndryshëm - vargun "02.08.20002".

Le të përmbledhim. Ju mund të kontrolloni llojin e rezultatit të të gjithë shprehjes duke vendosur operandin e parë në një vlerë boshe të llojit përkatës. Avantazhi i kësaj metode është se një vlerë boshe nuk e ndryshon rezultatin e shprehjes. Për shembull, duke vendosur 0 në fillim të shprehjes:

0+ "23"+45

Si rezultat do të marrim numrin 68, sepse shprehja në tërësi është e tipit "numër", dhe vargu i karakterit, në përputhje me rregullat e konvertimit të tipit, u konvertua me sukses në numrin 45.

Këtu është e përshtatshme të mbani mend për datën e zbrazët. Cili do të jetë rezultati i shprehjes "00.00.00"+ 2+"02.08.2000"? Sigurisht, data është 08/04/2000 (4 gusht 2000), sepse operandi i parë i shprehjes ishte një vlerë datë.

Përkundrazi, duke hequr datën bosh

2+"02.08.2000"

si rezultat do të marrim 2451761 - ky është numri i ditëve nga data zero deri më 2 gusht 2000, plus 2 ditë të tjera.

5.4. Operatorët e krahasimit logjik

Në 1C ka shprehje të tilla logjike për llojet bazë të të dhënave.

> Më shumë

< Меньше

<>Jo të barabartë

Këto shprehje Boolean mund të përdoren për të tre llojet bazë të të dhënave.

Në lidhje me llojin e të dhënave numerike, nuk ka probleme; krahasohet numri standard (numri i plotë ose thyesa).

Për vlerat e vargut, krahasimi ndodh me të ashtuquajturat "kodet e skanimit" të tyre (në kuptimin e 1C, një kod i tillë mund të merret duke përdorur metodën CodeCharacter()). Krahasimi bëhet karakter për personazh. Pra, nëse krahasohen vargjet me gjatësi të barabartë, atëherë kodet e karaktereve përkatëse krahasohen në mënyrë sekuenciale. Krahasimi ndodh përpara pabarazisë së parë në rresht (nëse rreshti përbëhet nga më shumë se një karakter). Nëse krahasohen vargjet me gjatësi të ndryshme, atëherë vlerat që mungojnë në operator plotësohen me karaktere të vargut bosh (jo me karakterin e hapësirës (Kodi = 32)). ato. vlera e hapësirës (CodeCym(32)) është më e madhe se vlera e vargut bosh.

Për llojet e datave, vetë data krahasohet (por është e mundur që para krahasimit, 1C ta shndërrojë datën në një numër që është i barabartë me numrin e ditëve nga Data(0)).

6. Probleme rrumbullakimi

Gjatë mbajtjes së kontabilitetit të automatizuar, përdoruesit shpesh hasin të ashtuquajturat "probleme të rrumbullakosjes" - situata kur, për shkak të rrumbullakimit të vlerave të ndryshme të llogaritura, të tilla si kostoja, çdo taksë, në faza të ndryshme të llogaritjeve, "qindarkat e varura" shfaqen në rezultatet përfundimtare .

Për shembull, kjo situatë:
Janë 16 njësi mallrash me një çmim (përfshirë TVSH-në) prej 110,50 UAH.
- kostoja totale është 110,50 * 16 = 1768 UAH.
- TVSH (me një normë prej 20%, përfshirë) është 1768 * 20 / 120 = 294,67 UAH.

Nëse tani ky produkt shitet “pjesë-pjesë” pa asnjë markup, TVSH-ja do të jetë e ndryshme:
- TVSH për njësi mallrash do të jetë 110,50 * 20 / 120 = 18,42 UAH.
- TVSH për të 16 njësitë do të jetë 18,42 * 16 = 294,72 UAH.

Diferenca në TVSH midis një faturë "grupore" dhe një shitje "copë" është 5 kopekë. Duke mos pasur vlerë të shtuar, ne ende i detyrohemi buxhetit 5 kopekë në formën e taksës mbi të.

Vini re se kur mallrat mbërritën, ne nuk mund të llogarisnim TVSH-në "për copë" - duke llogaritur shumën e taksës në koston e një njësie të mallit dhe duke shumëzuar me sasinë e mallrave. Në këtë rast, mund të ketë humbje edhe më të mëdha rrumbullakimi. Për shembull, nëse çmimi i një njësie malli është 3 kopekë, atëherë sa është e barabartë me TVSH-në?

Kur ndodhin "rezultate të tilla rrumbullakuese", duhet të mbani mend se problemi nuk është në program, jo ​​në formulat e llogaritjes, por në saktësinë dhe ashpërsinë më të madhe (në krahasim me kontabilitetin "manual") të rregullave të llogaritjes. Duke mbajtur shënime manuale, një kontabilist shpesh i lejon vetes të rregullojë rezultatin e llogaritjes duke fshehur këto "peni" në llogaritjet e ndërmjetme.

Në konfigurimet standarde 1C: Enterprise, aty ku është e mundur, situata të tilla merren parasysh dhe trajtohen në mënyrë korrekte. Për shembull, nëse kapitalizohen 3 njësi mallrash me një kosto totale prej 1 hryvnia, atëherë dy njësitë e para do të shlyhen me një kosto prej 33 kopecks, dhe e fundit - 34 kopecks. Por jo të gjitha rastet e rrumbullakimit mund të merren parasysh në algoritme, duke përfshirë shembullin e mësipërm me pesë kopekë TVSH nuk mund të përpunohet saktë në program.
Në disa raste, gabime të tilla mund të shmangen duke vendosur një çmim “të përshtatshëm” për produktin, në mënyrë që TVSH-ja të llogaritet tërësisht prej tij, pa asnjë mbetje. Por ky rregull vlen vetëm për çmimet e shitjes - nuk duhet të zgjidhni çmimet e blerjes. Në raste të tjera, përdoruesit e programit duhet të analizojnë se nga kanë ardhur "qindarkat e varura" dhe të vendosin se çfarë të bëjnë me to.

7. Kufizimet e sistemit V77

datë
Data - funksionon saktë në intervalin e datave nga 01/01/0000 deri në 31/12/9999
Data (0) korrespondon me 1721061 ditë nga data 01/01/0000
Kur përpiqeni të shkoni në data negative - 12/31/0001, sistemi nuk funksionon siç duhet, pasi funksionon nga data 0, d.m.th.: Data("01/01/0000")-1 = 01/00/00. Funksioni i formatit për data të tilla nuk funksionon fare.

Numri
numri maksimal i vlerave = 64 (64 karaktere).

Linjë
Numri maksimal i vlerave = i kufizuar nga memoria fizike e lirë (pa skedar paging), supozohet se nuk mund të ketë më shumë se 2^32-1 karaktere.

Dokumenti
Dokument - Mund të krijohen 9999 lloje dokumentesh.
Një dokument mund të ketë dhe të funksionojë saktë me jo më shumë se 9999 rreshta.
Gjatësia maksimale e kodit është 20, d.m.th. teorikisht mund të krijohen një total prej (27+33+10)^20 dokumentesh (70^20 = 7.9792266297612001e+36).
Nuk mund të ketë më në total në sistem (gjatësia e kodit ID në ditar = 9), praktikisht gjatësia e ID-së është 6 karaktere (3 për URIB) 36^6 = 2176782336 dokumente.
Numri i dokumenteve të futura me të njëjtën kohë është i kufizuar në 36^4 = 1679616

Si rregull, mësimi i çdo gjuhe programimi fillon me një shembull të shkrimit të programit të parë të thjeshtë ("Përshëndetje botë!"). Kjo bëhet për të demonstruar qartë punën me strukturat bazë sintaksore. Ne nuk do të bëjmë përjashtim nga kjo mënyrë e pranuar përgjithësisht e prezantimit të materialit kur eksplorojmë një mjedis të ri zhvillimi, dhe për këtë arsye artikulli ynë i parë duhet parë në të njëjtën dritë. Në të do të analizojmë në detaje përgjigjet e pyetjeve të mëposhtme në lidhje me programimin në platformën 1C:Enterprise 8:

  • Ku dhe me çfarë ndihme për të shkruar kodin e programit në gjuhën e integruar 1C?
  • Cilat janë modulet softuerike, cilat janë rregullat për të punuar me to?
  • Çfarë është një variabël, si të punohet me të, si dhe ku të deklarohet?
  • Cilët operatorë krahasimi, caktimi dhe kushtëzimi ekzistojnë dhe si i përdorni ato?
  • Operacionet Boolean - cilat janë ato dhe si të punohet me to?
  • Pse na duhen sythe dhe si t'i përdorim ato?

Artikulli do të jetë i dobishëm për të gjithë ata që nuk janë ende të njohur me zhvillimin në platformën 1C:Enterprise 8, por duan të mësojnë se si të programojnë në 1C.

Zbatueshmëria

Materiali është i rëndësishëm për platformën 1C:Enterprise 8, botimi 8.2. dhe 8.3.

Variablat dhe Operatorët

Në këtë artikull fillojmë të studiojmë gjuhën e integruar 1C:Enterprise 8. Kodi i ekzekutueshëm gjendet në modulet e programit.

Ka një numër mjaft të madh modulesh që janë krijuar për të trajtuar ngjarje të ndryshme.

Pra, identifikimi i përdoruesit në sistem përpunohet në një modul, dhe përpunimi i klikimit të përdoruesit në një buton të caktuar përpunohet në një tjetër krejtësisht.

Kështu, çdo modul përshkruan sjelljen e konfigurimit në një pikë të caktuar. Moduli përmban, para së gjithash, një seksion për përshkrimin e variablave. ato. ne mund të deklarojmë disa variabla në modul.

Në të ardhmen, ato mund të përdoren në procedurat dhe funksionet e këtij moduli. Nëse një ndryshore përcaktohet me fjalën kyçe Export, ajo do të jetë e disponueshme jashtë këtij moduli. Shembull i linjës së deklarimit të ndryshores:

Magazina Perem, Divizioni, Eksporti i Magazinit;

Pas deklarimit të variablave ka një seksion procedurash dhe funksionesh.

Pas tyre është një seksion i programit kryesor që do të ekzekutohet kur të aksesohet ky modul.

Për shembull, në një seksion të programit kryesor mund të inicializoni variablat, d.m.th. jepini atyre disa vlera fillestare:

Gjendja=1;
NewExpression=2;
Rezultati=3;

Një modul mund të mendohet si një kombinim i operatorëve të ndryshëm që kryejnë veprime të ndryshme që na duhen.

Ndarësi i operatorit është simboli ";" (pikëpresje). Kjo shenjë shënon fundin e deklaratës. ato. operatori mund të shkruhet si më poshtë:

Rezultati=100X200
+400
-600;

Nuk ka rëndësi se në sa rreshta ndodhet deklarata.

Sigurisht, shpesh është më e përshtatshme dhe më e qartë të vendosësh operatorin në një linjë, por ndonjëherë operatorët janë mjaft të gjatë (numri i linjave mund të arrijë në mënyrë të arsyeshme disa dhjetëra).

Pikëpresja mund të mos vendoset në deklaratën përfundimtare të një strukture të caktuar, për shembull, një procedurë. ato. kodi i mëposhtëm do të funksionojë:

Procedura CalculateValue()

Vlera fillestare = 100;
IntermediateValue = Vlera Fillestare/5;
Vlera përfundimtare = Vlera fillestare+Vlera e ndërmjetme

Fundi i procedurës

Sidoqoftë, është më mirë të përdorni një pikëpresje në deklaratën përfundimtare. Është e mundur që me kalimin e kohës ndërtimi të vazhdojë dhe deklarata përfundimtare të mos jetë më përfundimtare. Ne do të duhet të monitorojmë në mënyrë specifike këtë situatë.

Variablat janë krijuar për të ruajtur disa vlera të çdo lloji të të dhënave. Ato përdoren për ruajtjen e ndërmjetme të informacionit për përpunim.

Pothuajse në çdo modul softueri që kryen disa veprime, ka variabla të ndryshëm. Shtypja e variablave sipas vlerave në Platformën 1C: Enterprise 8 është e butë.

Për shembull, një ndryshore mund të përmbajë një vlerë të një lloji të të dhënave, dhe më pas disa rreshta më vonë - një lloj tjetër:

Krijuar = E rreme;
Krijuar = E vërtetë;
Krijuar =100;

Në dy deklaratat e para, vlera e variablave është Boolean, dhe në të tretën ajo ndryshon në një vlerë numerike. ato. shtypja varet nga vlera që i është caktuar një variabli të caktuar.
Variablat mund të përshkruhen në dy mënyra:

  • metodë e nënkuptuar (përmendja në anën e majtë të operatorit të caktimit përshkruan këtë variabël, nuk ka përshkrim paraprak të ndryshores me fjalën Variable, d.m.th. nuk ka seksion të veçantë për përshkrimin e variablave);
  • përshkrim i qartë i variablave (Variable Control Data;). Deklarimi i qartë i variablave përdoret, për shembull, nëse synohet kalimi i mëpasshëm i kësaj ndryshore në një funksion.

Variablat emërtohen duke përdorur përshkrimin klasik të identifikuesit. Identifikuesi përbëhet nga shkronja, numra dhe nënvizime. Identifikuesi duhet të fillojë ose me një shkronjë ose një nënvizim.

Në këtë rast, emri i ndryshores duhet të pasqyrojë kuptimin e kësaj ndryshore. Emrat e variablave me një shkronjë (si A, B, C) janë shembuj të këqij. Ato nuk pasqyrojnë thelbin e variablave.

Shembuj të emrave të saktë të ndryshoreve: Counter (ndryshore në rritje për një lak), Counterparty. Nëse emri i ndryshores përmban disa fjalë, atëherë çdo fjalë e re, për qartësi, duhet të fillojë me një shkronjë të madhe.

Fjalët e rezervuara si Procedura, Funksioni, Loop, EndLoop etj. nuk mund të përdoren në emrat e variablave. (këto struktura janë të theksuara me të kuqe në modulin e programit).

Fjalët e rezervuara janë operatorë gjuhësorë të integruar dhe ka një numër mjaft të vogël të tyre. Të gjitha ato janë paraqitur në Asistent sintaksor.

Duhet të theksohet se llojet e të dhënave nuk janë fjalë të rezervuara (për shembull, Array, Boolean, True, False). Sistemi do t'i pranojë saktë emrat e variablave të tillë.

Rasti nuk ka rëndësi kur shkruani kodin e programit. Për shembull, fjala Procedurë mund të shkruhet ose me shkronjë të madhe ose me shkronjë të vogël. Për më tepër, shkronjat e mëdha dhe të vogla mund të alternohen brenda një fjale.

Kjo nuk ka rëndësi për Platformën. Megjithatë, sipas rregullave të sjelljes së mirë, fillimi i një fjale duhet të shkruhet me shkronjë të madhe, dhe të gjitha shkronjat e tjera me shkronja të vogla.

Në lidhje me gjuhën. Ju mund të përdorni rusisht, anglisht ose një kombinim të dy gjuhëve. Nëse është i përshtatshëm për dikë, mund të përdorni me siguri anglishten për të shkruar kodin e programit, si dhe për të kombinuar rusishten dhe anglishten. Kjo nuk është e rëndësishme për Platformën.

Shumë emra në anglisht janë mjaft të vështira për t'u mbajtur mend. Kur përdorni një kombinim të dy gjuhëve, lexueshmëria e kodit të programit përkeqësohet.

Operacionet Boolean

Operatorët e krahasimit shpesh përdorin logjikën Boolean që kthen True ose False.

Për shembull, në një operator të kushtëzuar mund të krahasoni: Nëse Ngjarje = Shitje Atëherë algoritmi do të ndjekë një degë (d.m.th., nëse vlera është e vërtetë), nëse kushti është False, një degë tjetër e algoritmit do të ekzekutohet.

Kushtet mund të jenë mjaft komplekse, ato mund të kombinohen dhe përdoren operatorët e mëposhtëm: AND, OSE, dhe NOT. Pra, për operatorin AND:

Truth And Truth = E vërteta;
E vërtetë Dhe e rreme = E rreme;
E rreme Dhe e vertete = E rreme;
E rreme DHE E rreme = E rreme.

Për operatorin OR mjafton që njëri prej operandëve të jetë i barabartë me True, atëherë vlera e kombinimit do të jetë True. Vlera False merret vetëm kur të dy operandët janë False.

Operatori NOT thjesht e kthen vlerën aktuale (False në True, True to False).

Duke përdorur një kombinim të këtyre operatorëve, mund të ndërtoni kushte mjaft komplekse. Kur hartoni deklarata komplekse të kushtëzuara, duhet të merrni parasysh përparësitë.

Operatori NOT ka përparësinë më të lartë, i ndjekur nga operatori AND, i ndjekur nga operatori OR. Çfarëdo që është mbyllur në kllapa ka përparësinë më të lartë dhe ekzekutohet e para.

Për shembull, le të vendosim përparësitë (sekuenca e ekzekutimit) për operacionet në shprehjen e dhënë:

JO(Kushti1 OSE Kushti2) DHE Kushti3 OSE Kushti4
1.Rezultati1 = (Kushti1 OSE Kushti2);
2. Rezultati2 = NUK Rezultati1;
3. Rezultati3 = Rezultati2 DHE Kushti1;
4. Rezultati = Rezultati3 OSE Kushti4;

Ekziston një rregull konvertimi:

JO (Kushti 1 OSE Kushti 2) = JO Kushti1 DHE JO Kushti2.

Sidoqoftë, nuk duhet të përpiqeni gjithmonë të thjeshtoni shprehjen, pasi shpesh, logjikisht, një shprehje e zgjeruar është më e lehtë për t'u lexuar.

Operatori i caktimit

Operatori i caktimit nuk duhet të ngatërrohet me operatorin e barazisë, edhe pse kanë të njëjtën drejtshkrim.

Parimi i operatorit të caktimit është që vlerës së majtë (ndryshores në anën e majtë) i caktohet vlera që është në të djathtë të shenjës së barabartë. Le të shohim një shembull:

Variabla1 = Variabla2 = Variabla3;

Variablës1 i caktohet vlera e barazisë nga logjika Boolean, d.m.th. E vërtetë nëse Variable2 = Variable3, ose False ndryshe.

Gjatë testimit për pozicionin e një programuesi fillestar, një detyrë që përdoret mjaft shpesh është të ndërroni vlerat e dy variablave.

Ky problem zgjidhet duke përdorur operatorin e caktimit dhe ka dy zgjidhje.

Zgjidhja #1 duke përdorur një ndryshore të përkohshme:
TemporaryVariable = Variabla1;
Variabla1 = Variabla2;
Variabla2 = Ndryshore e Përkohshme;

Zgjidhja numër 2:
Variabla1 = Variabla1 + Variabla2;
Variabla2 = Variabla1 – Variabla2;
Variabla1 = Variabla1 – Variabla2;

Operatori i kushtëzuar

Ekziston një operator i tillë Nëse, pas së cilës është e nevojshme të përshkruhen disa kushte (gjendja në vetvete mund të jetë mjaft e madhe). Kushti pasohet nga fjala Pastaj dhe deklaratat që do të ekzekutohen.

Kjo mund të pasohet nga fjala kyçe Tjetër dhe një sërë deklaratash të tjera. Nëse ka disa kushte të ndryshme, mund të përdorni një sërë fjalë kyçe Përndryshe Nëse(shih shembullin më poshtë). I gjithë ndërtimi duhet të përfundojë me fjalën kyçe FundNëse, e ndjekur nga një pikëpresje.

Përveç kushteve të thjeshta dhe të shumëfishta, ekziston një formë e shkurtuar e operatorit të kushtëzuar: ?(Kushti, Shprehja1, Shprehja2);

Nëse kushti është i vërtetë, atëherë ai do të ekzekutohet Shprehja 1, ndryshe - Shprehja 2. Shembull i kodit: ExpensiveProduct = ?(Produkt.Çmimi>100000, E vërtetë, E gabuar);

Në praktikë, në vend të krahasimit regjistrohet me vlerën E vërtetë (Gënjeshtra) lloji:

Nëse ndryshorja = e vërtetë, atëherë
Dhe
Nëse Variable = False Atëherë

shënimet ekuivalente të përdorura në të vërtetë janë:

Nëse variable Atëherë
Dhe
Nëse JO e ndryshueshme Atëherë

Operatorët ciklik

Për çdo lloj cikli, është e nevojshme të tregohet në mënyrë eksplicite fundi i këtij cikli duke përdorur fjalën kyçe Fundi i Ciklit. Ka disa lloje ciklesh.

Loop në një banak- një cikël me një numër të caktuar përsëritjesh. Kushti për daljen nga cikli është tejkalimi i vlerës kufi. Shembull i përdorimit për llogaritjen e vlerës së A!

A = 5;
Faktorial = 1;
Për numërues = 1 me cikël
Faktorial = Faktorial * Numërues;
Cikli i Fundit;

Lak sipas kushtit– kushti i ciklit të dhënë plotësohet përderisa është i vërtetë. Shembull:

Shuma e mbetur = 1000;
Çmimi i produktit shtesë = 243;
Sasia = 0;
Ndërsa shuma e mbetur> Cikli 0
Sasia = Sasia+1;
Shuma e mbetur = Shuma e mbetur – Sasia*Çmimi i produktit shtesë;
Çmimi i produktit shtesë = Çmimi i produktit shtesë * 0.8;
Fundi i Ciklit
Sasia = Sasia-1;

Ky cikël llogarit se sa njësi të një produkti mund të blihen për një shumë të caktuar (1000 rubla) nëse, pas blerjes së çdo njësie të një produkti, çmimi i tij i mëparshëm shumëzohet me një faktor prej 0,8. Çmimi origjinal i produktit është 243 rubla.

Një shembull i një gabimi gjatë përdorimit të këtij lloji të ciklit për fillestarët është një lak i përjetshëm, kur kushti i ciklit është fillimisht i vërtetë, por brenda vetë ciklit nuk ndryshon në asnjë mënyrë.

Cikli nëpër koleksione (një emër tjetër për të gjithë).

Në Platformë ka një numër mjaft të madh koleksionesh (këto janë kontejnerë që përmbajnë elementë të një lloji të caktuar).

Ju mund të përsërisni elementët e një koleksioni duke përdorur një lloj të veçantë cikli.

Për shembull, ekziston një grup numrash, duhet të llogaritni shumën e të gjithë elementëve të grupit:

Shuma = 0;
Për çdo element nga cikli i vargjeve
Shuma=Shuma+Artikulli;
Cikli i Fundit;

Ekzistojnë operatorë të veçantë për sythe: Vazhdoni Dhe Aborti.

Nëse në një moment të ciklit ekzekutimi i operatorëve të mëtejshëm të një cikli të caktuar bëhet i pakuptimtë, atëherë operatori përdoret për t'u kthyer në fillim të ciklit dhe për të organizuar ciklin e tij të ardhshëm. Vazhdoni.

Operator Aborti lejon që cikli të përfundojë ekzekutimin edhe nëse kushti i ciklit është i vërtetë.

Kjo përfundon njohjen tonë të parë me zhvillimin në gjuhën e brendshme 1C.

Po Hello World? Nuk e kemi shkruar akoma, apo jo? Po, por asgjë nuk ju pengon ta bëni vetë, sepse... njohuritë janë të mjaftueshme. Epo, nëse nuk funksionon, atëherë mund të hidhni një sy këtu.

Forumi ukrainas 1C: gjithçka rreth 1C 8.3, 1C 8.2, 1C 8.1, 1C 8.0, 1C 7.7 _ Sistemi i përbërjes së të dhënave _ Gjuha e shprehjes së sistemit të përbërjes së të dhënave

përmbajtja
1 Gjuha e shprehjes së sistemit të përbërjes së të dhënave
2 Fjalë për fjalë
2.1 Varg
2.2 Numri
2.3 Data
2.4 Boolean
2.5 Kuptimi
3 Veprime me numra
3.1 Unary -
3.2 Unary +
3.3 Binar -
3.4 Binar+
3.5 Puna
3.6 Divizioni
3.7 Mbetja
4 Operacionet e vargut
4.1 Lidhja (Binar +)
4.2 Të ngjashme
5 Operacione krahasimi
5.1 E barabartë
5.2 Jo i barabartë
5.3 Më pak
5.4 Më shumë
5.5 Më pak se ose e barabartë me
5.6 Më e madhe ose e barabartë me
5.7 Operacioni B
5.8 Operacioni i kontrollit të pranisë së një vlere në një grup të dhënash
5.9 Operacioni i kontrollit të një vlere për NULL
5.10 Operacioni i kontrollit të një vlere për pabarazi NULL
6 Operacione logjike
6.1 Operacioni JO
6.2 Operacioni I
6.3 OSE funksionimi
7 Funksionet agregate
7.1 Shuma
7.2 Sasia
7.3 Numri i të ndryshmeve
7.4 Maksimumi
7.5 Minimumi
7.6 Mesatare
8 Operacione të tjera
8.1 Operacioni SELECT
9 Rregulla për krahasimin e dy vlerave
10 Puna me vlerë NULL
11 Prioritetet e operimit
12 Funksionet e gjuhës së shprehjes së sistemit të përbërjes së të dhënave
12.1 Llogaritni
12.2 Niveli
12.3 NumriNëRend
12.4 Numri sipas renditjes në grupim
12.5 Formati
12.6 Fillimi i periudhës
12.7 Fundi i periudhës
12.8 AddToDate
12.9 Diferenca e datës
12.10 Nënvarg
12.11 Gjatësia e rreshtit
12.12 Viti
12.13 Tremujori
12.14 Muaj
12.15 Dita e Vitit
12.16 Dita
12.17 Java
12.18 Dita e javës
Ora 12.19
12.20 minuta
12.21 E dyta
12.22 Express
12.23 Po Jo
12.24 Funksionet e moduleve të zakonshme

Gjuha e shprehjes së sistemit të përbërjes së të dhënave

Gjuha e shprehjes së sistemit të përbërjes së të dhënave është krijuar për të shkruar shprehjet e përdorura në pjesë të ndryshme të sistemit.

Shprehjet përdoren në nënsistemet e mëposhtme:

  • diagrami i paraqitjes së të dhënave - për të përshkruar fushat e llogaritura, fushat totale, shprehjet e lidhjes, etj.;
  • cilësimet e paraqitjes së të dhënave - për të përshkruar shprehjet e fushës me porosi;
  • data layout layout - për përshkrimin e shprehjeve për lidhjen e grupeve të të dhënave, përshkrimin e parametrave të paraqitjes, etj.

Literale

Shprehja mund të përmbajë fjalë për fjalë. Llojet e mëposhtme të literaleve janë të mundshme:

  • Linjë;
  • Numri;
  • Data e;
  • Boolean.

Linjë

Një varg literal shkruhet me karaktere "", për shembull:

"String fjalë për fjalë"


Nëse keni nevojë të përdorni karakterin "" brenda një vargu literal, duhet të përdorni dy karaktere të tilla.

Për shembull:

"Literal ""në thonjëza"""

Numri

Numri shkruhet pa hapësira, në format dhjetor. Pjesa e pjesshme ndahet duke përdorur simbolin ".". Për shembull:

datë

Një fjalë për fjalë datë shkruhet duke përdorur fjalë për fjalë kyçe DATETIME. Pas kësaj fjale kyçe, viti, muaji, dita, orët, minutat, sekondat renditen në kllapa, të ndara me presje. Specifikimi i kohës nuk kërkohet.

Për shembull:
DATETIME (1975, 1, 06) - 6 janar 1975
DATETIME(2006, 12, 2, 23, 56, 57) - 2 dhjetor 2006, 23 orë 56 minuta 57 sekonda, 23 orë 56 minuta 57 sekonda

Boolean

Vlerat Boolean mund të shkruhen duke përdorur fjalë për fjalë True (True), False (False).

Kuptimi

Për të specifikuar literale të llojeve të tjera (numërime të sistemit, të dhëna të paracaktuara), përdoret fjala kyçe Vlera, e ndjekur nga emri i fjalëpërfjalës në kllapa.
Vlera (Lloji i llogarisë. Aktiv)

Veprimet në numra

Unar -

Ky operacion synon të ndryshojë shenjën e një numri në shenjën e kundërt. Për shembull:
-Shitjet.Sasia

Unary +

Ky operacion nuk kryen asnjë veprim në numër. Për shembull:
+Shitjet.Sasia

Binar -

Ky operacion synon të llogarisë diferencën e dy numrave. Për shembull:
RemainsAndTurnover.InitialRemainder – RemainsAndTurnover.FinalRemainder
RemainsAndTurnover.InitialRemaining - 100
400 – 357

Binar +

Ky operacion është krijuar për të llogaritur shumën e dy numrave. Për shembull:
RemainsAndTurnover.InitialRemaining + RemainsAndTurnover.Turnover
RemainsAndTurnover.InitialRemaining + 100
400 + 357

Puna

Ky operacion është krijuar për të llogaritur prodhimin e dy numrave. Për shembull:
Nomenklatura.Çmimi * 1.2
2 * 3.14

Divizioni

Ky operacion është krijuar për të marrë rezultatin e pjesëtimit të një operand me një tjetër. Për shembull:
Nomenklatura.Çmimi / 1.2
2 / 3.14

Pjesa e mbetur e ndarjes

Ky operacion është krijuar për të marrë pjesën e mbetur kur një operand ndahet me një tjetër. Për shembull:
Nomenklatura.Çmimi% 1.2
2 % 3.14

Operacionet e vargut

Lidhja (binare +)

Ky operacion është krijuar për të lidhur dy vargje. Për shembull:
Nomenklatura.Neni + “: ”+ Nomenklatura.Emri

si

Ky operacion kontrollon nëse vargu përputhet me modelin e kaluar.

Vlera e operatorit LIKE është TRUE nëse vlera<Выражения>plotëson modelin, dhe FALSE përndryshe.

Personazhet e mëposhtëm në<Строке_шаблона>kanë një kuptim të ndryshëm nga një personazh tjetër në rresht:

  • % - përqindje: një sekuencë që përmban zero ose më shumë karaktere arbitrare;
  • _ - nënvizon: një karakter arbitrar;
  • […] - një ose më shumë karaktere në kllapa katrore: një karakter, cilido nga ato të listuara brenda kllapave katrore. Numërimi mund të përmbajë vargje, për shembull a-z, që do të thotë një karakter arbitrar i përfshirë në interval, duke përfshirë skajet e diapazonit;
  • [^...] - në kllapa katrore një ikonë mohimi e ndjekur nga një ose më shumë karaktere: çdo karakter përveç atyre të listuara pas ikonës së mohimit;

Çdo simbol tjetër nënkupton vetveten dhe nuk mbart ndonjë ngarkesë shtesë. Nëse një nga personazhet e listuar duhet të shkruhet si vetvetja, atëherë duhet të paraprihet<Спецсимвол>, e specifikuar pas fjalës kyçe SPECIAL CHARACTER (ESCAPE).

Për shembull, shabllon
“%ABV[abvg]\_abv%” KARAKTER I VEÇANTË “\”

nënkupton një nënvarg që përbëhet nga një sekuencë karakteresh: shkronja A; shkronjat B; shkronjat B; një shifër; një nga shkronjat a, b, c ose d; nënvizoj; shkronjat a; shkronjat b; letra v. Për më tepër, kjo sekuencë mund të vendoset duke filluar nga një pozicion arbitrar në linjë.

Operacionet Krahasuese

Të barabartë

Ky operacion synon të krahasojë dy operandë për barazi. Për shembull:
Sales.Counterparty = Sales.NomenclatureFurnizuesi Kryesor

Jo të barabartë

Ky operacion synon të krahasojë dy operandë për pabarazi. Për shembull:
Shitjet, Shitjet nga palët, Nomenklatura, Furnizuesi kryesor

Më pak

Ky operacion është krijuar për të kontrolluar nëse operandi i parë është më i vogël se i dyti. Për shembull:
ShitjetAktuale.Shuma

Më shumë

Ky operacion është krijuar për të kontrolluar nëse operandi i parë është më i madh se i dyti. Për shembull:
SalesCurrent.Sum > SalesPast.Sum

Më pak ose e barabartë

Ky operacion është krijuar për të kontrolluar nëse operandi i parë është më i vogël ose i barabartë me i dyti. Për shembull:
ShitjetAktuale.Shuma

Më shumë ose e barabartë

Ky operacion është krijuar për të kontrolluar nëse operandi i parë është më i madh ose i barabartë me të dytin. Për shembull:
SalesCurrent.Sasia >= SalesPast.Shuma

Operacioni B

Ky operacion kontrollon praninë e një vlere në listën e kaluar të vlerave. Rezultati i operacionit do të jetë True nëse gjendet vlera, ose False ndryshe. Për shembull:
Artikulli B (&Produkti1, &Produkti2)

Operacioni i kontrollit të pranisë së një vlere në një grup të dhënash

Operacioni kontrollon praninë e një vlere në grupin e specifikuar të të dhënave. Të dhënat e vërtetimit duhet të përmbajë një fushë. Për shembull:
Shitjet

Operacioni i kontrollit të një vlere për NULL

Ky operacion kthen True nëse vlera është NULL. Për shembull:
Shitjet.Kundërpala ËSHTË NULL

Operacioni i kontrollit të një vlere për pabarazinë NULL

Ky operacion kthen True nëse vlera nuk është NULL. Për shembull:
Shitjet. Kundërpartia NUK ËSHTË NULL

Operacionet logjike

Operacionet logjike pranojnë shprehje të tipit Boolean si operandë.

Operacioni JO

Operacioni NOT kthen True nëse operandi i tij është False dhe False nëse operandi i tij është True. Për shembull:
NOT Document.Marrës = Dokument.Dërguesi

Operacioni I

Operacioni AND kthen True nëse të dy operandët janë True, dhe False nëse njëri prej operandëve është False. Për shembull:
Dokumenti. Marrësi = Dokumenti. Dërguesi DHE Dokumenti. Marrësi = &Kundërpala

OSE operacion

Operacioni OR kthen True nëse një nga operandët e tij është True, dhe False nëse të dy operandët janë False. Për shembull:
Dokumenti. Marrësi = Dokumenti. Dërguesi OSE Dokumenti. Marrësi = &Kundërpala

Funksionet agregate

Funksionet agregate kryejnë disa veprime në një grup të dhënash.

Shuma

Funksioni agregat Sum llogarit shumën e vlerave të shprehjeve që i kalohen atij si një argument për të gjitha regjistrimet e detajeve. Për shembull:
Shuma (Shitjet. Shuma e qarkullimit)

sasi

Funksioni Count llogarit numrin e vlerave të ndryshme nga NULL. Për shembull:
Sasia (Shitjet. Kundërpartia)

Numri i të ndryshmeve

Ky funksion llogarit numrin e vlerave të dallueshme. Për shembull:
Sasia (Shitje të ndryshme. Kundërpartia)

Maksimumi

Funksioni merr vlerën maksimale. Për shembull:
Maksimumi (E mbetur. Sasia)

Minimumi

Funksioni merr vlerën minimale. Për shembull:
Minimumi (E mbetur. Sasia)

Mesatare

Funksioni merr mesataren e vlerave jo-NULL. Për shembull:
Mesatare (E mbetur. Sasia)

Operacione të tjera

Operacioni SELECT

Operacioni Select synon të zgjedhë një nga disa vlera kur plotësohen disa kushte. Për shembull:
Zgjidhni Kur Shuma > 1000 Pastaj Shuma Përndryshe 0 Fund

Rregullat për krahasimin e dy vlerave

Nëse llojet e vlerave që krahasohen janë të ndryshme nga njëra-tjetra, atëherë marrëdhëniet midis vlerave përcaktohen në bazë të përparësisë së llojeve:
NULL (më e ulëta);
Boolean;
Numri;
Data e;
Linjë;
Llojet e referencës

Marrëdhëniet ndërmjet llojeve të ndryshme të referencës përcaktohen bazuar në numrat e referencës së tabelave që korrespondojnë me një lloj të caktuar.

Nëse llojet e të dhënave janë të njëjta, atëherë vlerat krahasohen sipas rregullave të mëposhtme:
për tipin Boolean vlera TRUE është më e madhe se vlera FALSE;
lloji i numrit ka rregullat e zakonshme të krahasimit për numrat;
për llojin Date, datat e mëparshme janë më të vogla se ato të mëvonshme;
për llojin String - krahasimi i vargjeve në përputhje me karakteristikat kombëtare të përcaktuara të bazës së të dhënave;
Llojet e referencës krahasohen në bazë të vlerave të tyre (numri i rekordit, etj.).

Duke punuar me Vlerën NULL

Çdo operacion në të cilin një nga operandët është NULL do të prodhojë një rezultat NULL.

Ka përjashtime:
Operacioni AND do të kthejë NULL vetëm nëse asnjë nga operandët nuk është False;
Operacioni OR do të kthejë NULL vetëm nëse asnjë nga operandët e tij nuk është i vërtetë.

Prioritetet e operimit

Operacionet kanë prioritetet e mëposhtme (rreshti i parë ka prioritetin më të ulët):
OSE;
DHE;
JO;
B, ËSHTË NULL, NUK ËSHTË NULL;
=, <>, <=, <, >=, >;
Binare +, Binare – ;
*, /, %;
Unary +, Unary -.

Funksionet e gjuhës së shprehjes së sistemit të përbërjes së të dhënave

Llogaritni

Funksioni Calculate është krijuar për të llogaritur një shprehje në kontekstin e një grupimi të caktuar. Funksioni ka parametrat e mëposhtëm:
Shprehje. Lloji String. Përmban një shprehje të llogaritur;
Grupimi. Lloji String. Përmban emrin e grupimit në kontekstin e të cilit duhet të vlerësohet shprehja. Nëse një varg bosh përdoret si emër grupimi, llogaritja do të kryhet në kontekstin e grupimit aktual. Nëse vargu GrandTotal përdoret si emër i grupit, llogaritja do të kryhet në kontekstin e totalit të përgjithshëm. Përndryshe, llogaritja do të kryhet në kontekstin e grupit mëmë me të njëjtin emër. Për shembull:
Shuma (Sales.SumTurnover) / Llogarit ("Sum(Sales.SumTurnover)", "Total")

Në këtë shembull, rezultati do të jetë raporti i shumës për fushën "Sales.AmountTurnover" të rekordit të grupimit me shumën e së njëjtës fushë në të gjithë paraqitjen.

Niveli

Funksioni është krijuar për të marrë nivelin aktual të regjistrimit.

Shembull:
Niveli ()

NumriNorder

Merrni numrin vijues të radhës.

Shembull:
NumberByOrder()

NumberInOrderInGrouping

Rikthen numrin rendor të radhës në grupimin aktual.

Shembull:
NumberByOrderInGroup()

Formati

Merrni një varg të formatuar të vlerës së kaluar.

Vargu i formatit është vendosur në përputhje me vargun e formatit 1C: Enterprise.

Opsione:
Kuptimi;
Formatoni vargun.

Shembull:
Formati (Faturat e konsumueshme. Shuma e dokumentit, "NPV=2")

Fillimi i periudhës

Opsione:

    • Minuta;
    • Dita;
    • Nje jave;
    • Muaj;
    • tremujori;
    • Dekada;
    • Gjysëm viti.

Shembull:
Periudha e fillimit (DataKoha (2002, 10, 12, 10, 15, 34), "Muaji")

Rezultati:

01.10.2002 0:00:00

Fundi i Periudhës

Funksioni është krijuar për të nxjerrë një datë specifike nga një datë e caktuar.

Opsione:

  • Data e. Lloji Data. Data e specifikuar;
  • Lloji i periudhës. Lloji String. Përmban një nga vlerat e mëposhtme:
    • Minuta;
    • Dita;
    • Nje jave;
    • Muaj;
    • tremujori;
    • Dekada;
    • Gjysëm viti.

Shembull:
Periudha e Fundit (DataKoha (2002, 10, 12, 10, 15, 34), "Java")

Rezultati:

13.10.2002 23:59:59

AddToDate

Funksioni është krijuar për të shtuar një vlerë të caktuar në një datë.

Opsione:

  • Lloji i zmadhimit. Lloji String. Përmban një nga vlerat e mëposhtme:
    • Minuta;
    • Dita;
    • Nje jave;
    • Muaj;
    • tremujori;
    • Dekada;
    • Gjysëm viti.
Shuma - sa ju duhet për të rritur datën. Lloji Numri. Pjesa e pjesshme shpërfillet.

Shembull:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Month", 1)

Rezultati:

12.11.2002 10:15:34

Dallimi i datës

Funksioni është krijuar për të marrë diferencën midis dy datave.

Opsione:

  • Shprehje. Lloji Data. Data origjinale;
  • Shprehje. Lloji Data. Data e zbritur;
  • Lloji i ndryshimit. Lloji String. Përmban një nga vlerat e mëposhtme:
    • E dyta;
    • Minuta;
    • Dita;
    • Muaj;
    • tremujori;

Shembull:
DATEDIFERENCE(DATATIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), "DITA")

Rezultati:

Nënstring

Ky funksion është krijuar për të nxjerrë një nënvarg nga një varg.

Opsione:

  • Linjë. Lloji String. Vargu nga i cili nxirret nënvargu;
  • Pozicioni. Lloji Numri. Pozicioni i karakterit nga i cili fillon nënvargu që do të nxirret nga vargu;
  • Gjatësia. Lloji Numri. Gjatësia e nënvargut të caktuar.

Shembull:
SUBSTRING (Llogaritë. Adresa, 1, 4)

Gjatësia e linjës

Funksioni është krijuar për të përcaktuar gjatësinë e një vargu.

Parametri:
Linjë. Lloji String. Një varg gjatësia e të cilit është specifikuar.

Shembull:
Linja (Adresa e kundërpalëve)

Ky funksion është krijuar për të nxjerrë vitin nga një vlerë e tipit Date.

Parametri:
Data e. Lloji Data. Data me të cilën përcaktohet viti.

YEAR (Shpenzime. Data)

lagje

Ky funksion është krijuar për të nxjerrë numrin e tremujorit nga një vlerë e tipit Data. Numri i tremujorit normalisht varion nga 1 në 4.

Parametri
Data e. Lloji Data. Data në të cilën përcaktohet tremujori

QARTER (Shpenzime. Data)

Muaj

Ky funksion është krijuar për të nxjerrë numrin e muajit nga një vlerë e tipit Data. Numri i muajit normalisht varion nga 1 në 12.
Data e. Lloji Data. Data me të cilën përcaktohet muaji.
MUAJ (Shpenzime. Data)

Dita e Vitit

Ky funksion është krijuar për të marrë ditën e vitit nga një vlerë e tipit Date. Dita e vitit normalisht varion nga 1 në 365 (366).
Data e. Lloji Data. Data me të cilën përcaktohet dita e vitit.
DAYYEAR (Llogaria e shpenzimeve.Data)

Dita

Ky funksion është krijuar për të marrë ditën e muajit nga një vlerë e tipit Date. Dita e muajit normalisht varion nga 1 deri në 31.
Data e. Lloji Data. Data me të cilën përcaktohet dita e muajit.
DITA (Shpenzime. Data)

Nje jave

Ky funksion është krijuar për të marrë numrin e javës së vitit nga një vlerë e tipit Date. Javët e vitit numërohen duke filluar nga 1.
Data e. Lloji Data. Data në të cilën përcaktohen numrat e javës.
JAVA (Shpenzime. Data)

Ditë të javës

Ky funksion është krijuar për të marrë ditën e javës nga një vlerë e tipit Date. Dita normale e javës varion nga 1 (e hënë) deri në 7 (e diel).
Data e. Lloji Data. Data me të cilën përcaktohet dita e javës.
DITA E JAVËS (Data e faturës së shpenzimeve)

Ky funksion është krijuar për të marrë orën e ditës nga një vlerë e tipit Date. Ora e ditës varion nga 0 në 23.
Data e. Lloji Data. Data me të cilën përcaktohet ora e ditës.
HOUR (Shpenzime. Data)

Minuta

Ky funksion është krijuar për të marrë minutën e orës nga një vlerë e tipit Date. Minuta e orës varion nga 0 në 59.
Data e. Lloji Data. Data me të cilën përcaktohet minuta e orës.
MINUTE (Shpenzime. Data)

Së dyti

Ky funksion është krijuar për të marrë sekondën e një minutë nga një vlerë e tipit Date. Sekonda e një minutë varion nga 0 në 59.
Data e. Lloji Data. Data në të cilën përcaktohen sekondat e minutës.
E DYTË (Shpenzime. Data)

shprehin

Ky funksion është krijuar për të nxjerrë një lloj nga një shprehje që mund të përmbajë një lloj të përbërë. Nëse shprehja përmban një lloj tjetër nga lloji i kërkuar, NULL do të kthehet.

Opsione:
Shprehje për të kthyer;
Treguesi i llojit. Lloji String. Përmban një varg tipi. Për shembull, "Numri", "String", etj. Përveç llojeve primitive, kjo linjë mund të përmbajë emrin e tabelës. Në këtë rast, do të bëhet një përpjekje për të shprehur një referencë në tabelën e specifikuar.

Shembull:
Express(Data.Props1, "Numri(10,3)")

Është Null

Ky funksion kthen vlerën e parametrit të dytë nëse vlera e parametrit të parë është NULL.

Përndryshe, vlera e parametrit të parë do të kthehet.

Shembull:
Po NULL (Shuma (Shitjet. Shuma e qarkullimit), 0)

Funksionet e moduleve të zakonshme

Një shprehje e motorit të përbërjes së të dhënave mund të përmbajë thirrje për funksionet e moduleve të konfigurimit të përbashkët global. Asnjë sintaksë shtesë nuk kërkohet për të thirrur funksione të tilla.

Shembull:
Emri i shkurtuar (Dokumentet.Lidhja, Dokumentet.Data, Dokumentet.Numri)

Në këtë shembull, funksioni "AbbreviatedName" do të thirret nga moduli i konfigurimit të përgjithshëm.

Vini re se përdorimi i funksioneve të zakonshme të modulit lejohet vetëm nëse specifikohet parametri i duhur i procesorit të përbërjes së të dhënave.

Për më tepër, funksionet e moduleve të zakonshme nuk mund të përdoren në shprehjet e fushës me porosi.

Php?http://wiki.kint.ru/index.php/Gjuha e shprehjes së sistemit të përbërjes së të dhënave (1Cv82)#.D0.9A.D0.BE.D0.BD.D0.B5.D1.86.D0.9F. D0.B5. D1.80.D0.B8.D0.BE.D0.B4.D0.B0

Forumi ukrainas 1C: gjithçka rreth 1C 8.3, 1C 8.2, 1C 8.1, 1C 8.0, 1C 7.7
http://site

Artikujt më të mirë mbi këtë temë