Sada 1C program postoji u različitim verzijama i obličjima, ljudi rade u "sedam", tj. u 1C 7.7 i u "osmici" koji su 8.0, 8.1, 8.2 i 8.3. U praksi, trenutno 99,9% korisnika 1C programa radi u 7.7, 8.2 i 8.3, kako se razlikuju?

Program 1C 7.7 je mnogima poznat po svom već prilično zastarjelom sučelju, ali ipak ima prednost u veličini baze podataka i brzini pokretanja i rada, što znači da mu je mjesto na tržištu softvera za automatizaciju računovodstva, iako sada se ovaj program više ne prodaje, ali ljudi ga koriste koriste se, a kompanija 1C i dalje podržava ovaj program, tj. za njega izlaze ažuriranja.
Ali tema članka i dalje nije o 7.7, već o razlikama između 8.2 i 8.3. (a za informaciju, razlika između 7.7 i 8.* je toliko značajna da baze za sedam neće raditi na 8.* platformi i obrnuto, tj. 7.7 i 8.* su, takoreći, potpuno različiti programi , ali 8.2 i 8.3 su vrlo slični, samo 8.3 je noviji)

1C program se sastoji od 1C platforme i 1C baza podataka, tj. 1C platforma je program koji pokreće 1C baze podataka.

Za korisnika: kada kliknemo na 1C prečicu i otvori se lista 1C baza podataka, vidimo dio 1C platforme, ili kada odaberemo bazu podataka i kliknemo na dugme „Konfigurator“, tj. uđemo u 1C konfigurator, možemo reći i da vidimo dio 1C platforme, ali kada otvorimo bazu podataka klikom na dugme „1C:Enterprise“, već vidimo bazu podataka, sa njenim postavkama, „menijima“, dugmad, slike itd. onda je to već 1C baza podataka, koja može biti različita u zavisnosti od tipa, tj. Konfiguracije 1C baze podataka
Baza podataka 1C sastoji se od konfiguracije (tj. njenih postavki) i podataka (tj. informacija u njoj).

Postoje različite 1C konfiguracije za različito računovodstvo, tj. za računovodstvo može postojati konfiguracija koja se zove „Računovodstvo preduzeća“ ili druge, za trgovinu se mogu koristiti konfiguracije kao što su „Upravljanje trgovinom“ ili „Maloprodaja“ ili druge, za računovodstvo osoblja i platni spisak, na primjer "Payroll and HR management", postoje i konfiguracije za složeno računovodstvo, na primjer za automatizaciju postrojenja.
Postoji mnogo konfiguracija, nekoliko stotina različitih konfiguracija za različito računovodstvo.

Sve ove konfiguracije mogu se kreirati da rade u 1C 7.7 ili 8.2 ili 8.3 Koje su razlike i zašto se piše o konfiguracijama ako su 8.2 i 8.3 pa čak i 7.7 platforme? Hajde da to sada shvatimo.

Svaka platforma ima različite mogućnosti za kreiranje konfiguracija, a što je verzija platforme viša, to više funkcionalnosti i mogućnosti ima ova platforma.
Ako nam je potrebna 1C baza podataka s konfiguracijom, recimo “Enterprise Accounting”, s verzijom izdanja, na primjer, “3.0.60.44” i pokušamo pronaći informacije o njoj, tada ćemo to saznati za ovu konfiguraciju i ovo izdanje da bismo radili, trebat će nam platforma ne niža od 8.3, više Štaviše, ne niža od 8.3.10.2466, to znači da nam platforma 8.2 više neće odgovarati!

Postoji mnogo konfiguracija za 1C 8.* platformu, ali se mogu podijeliti u 2 podtipa: konfiguracije (1) sa „običnim obrascima“ i (2) sa „upravljanim obrascima“
"Obični" znači isto što su bili i prije, na primjer, slično 1C 7.7, a "Upravljani" su moderniji oblici, ljepši, kojima je lakše upravljati prilikom kreiranja.

Kako mogu znati da li postoje redovni ili upravljani obrasci u mojoj 1C bazi podataka?

Ako na vrhu programa vidite liniju „menija“ sa imenima kao što su „File“, „Edit“ ili „Operations“, „Service“, „Windows“, „Help“, i što je najvažnije, možete kliknite na njih i dolje „ispašće“ » podmeni sa izborom podstavki, što znači da imate konfiguraciju sa redovnim obrascima.

Ako nemate takve „menije“ na vrhu, ali postoje linkovi na vrhu ili lijevo ili u drugim dijelovima programa, na web stranicu, tj. pokažete na njih i odmah postanu podvučeni, mogu imati nazive kao što su “Glavni” ili “Prodaja”, “Nabavka”, “Administracija” ili “Istraživački podaci i administracija” ili druge slične veze ili slike, a kada kliknete na njima nemaju listu podmenija „ispadaju“, već se otvara informacija ili poseban prozor u centru programa, što znači da imate konfiguraciju sa „upravljanim formama“, obično su lepšeg i modernijeg izgleda. Ako znate da imate „Taxi“ interfejs, onda su ovo precizno upravljani obrasci.

Ranije, kada još nije postojala platforma 8.3 a postojao je samo 8.2 i regularni obrasci, tada su se tek počele razvijati konfiguracije na upravljanim obrascima, pojavila se platforma 8.3, a malo kasnije mnogi su počeli povezivati ​​platformu 8.3 sa upravljanim formama, i platforma 8.2 sa običnim. Tako je koncept postao jači od nekoga 1C 8.2 (tj. 1C baza sa konfiguracijom na regularnim obrascima), i neko 1C 8.3 (tj. 1C baza podataka sa konfiguracijom na upravljanim obrascima).
Zapravo, platforma 8.3 je novija od 8.2, što znači da može raditi sa svim konfiguracijama za 1C 8.*, ALI! Ako imate platformu 8.3, a konfiguraciona baza je zasnovana na regularnim obrascima, onda mogu reći da imate 1C 8.2 i to je važno razumjeti!

Također je važno shvatiti da možda imate platformu 8.2 i konfiguraciju zasnovanu na upravljanim obrascima, a onda mogu reći da imate 1C 8.3! Za mnoge je to brže, praktičnije i poznatije.
One. Većini ljudi nije važno koju platformu imaju i ako imaju bazu sa regularnim formama, onda je to 1C 8.2! ako sa upravljanim - onda 8.3!

Na osnovu ove činjenice i utvrđenog mišljenja, na našoj web stranici možete pronaći obradu 8.2 ili 8.3. To ne znači da je za obradu bitno koju platformu imate, već da je ona, obrada će raditi ili u bazi podataka sa redovnim obrascima ili samo sa upravljanim obrascima, a postoje i univerzalni tretmani, njihovo ime će reći (8.2 i 8.3) ili (8.2/8.3) ili (8.2-8.3) ili (8.*)

Ispod su primjeri nekih popularnih 1C konfiguracija na regularnim obrascima, tj. pod nazivom 1C 8.2:
— Računovodstvo preduzeća 2.0.*.*
— Upravljanje trgovinom 10.3.*.*
— Maloprodaja 1.1.*.*
— Plaća i upravljanje kadrovima 2.5.*.*

Sada primjeri nekih popularnih 1C konfiguracija na upravljanim obrascima, tj. oni se zovu 1C 8.3:
— Računovodstvo preduzeća 3.0.*.*
— Upravljanje trgovinom 11.*.*.*
— Maloprodaja 2.*.*.*
— Plaća i upravljanje kadrovima 3.*.*.*
— Menadžment naše kompanije 1.6.*.*

Kratka verzija cijelog članka ili odgovor na pitanje: koji 1C 8.2 ili 8.3 imam?

Ako imate 1C bazu podataka, nakon što je otvorite, na vrhu se nalazi linija „menija“ sa nazivima na primer „Datoteka“, „Uredi“ ili „Operacije“, „Usluga“, „Windows“, „Pomoć “, a kada pritisnete dolje, pojavit će se podmeni sa izborom podstavki, tada se takva baza podataka zove 1C 8.2 i za nju mogu biti prikladne samo one obrade, izvještaji, ekstenzije koje u nazivu imaju “8.2”, i one obrade koje imaju "8.3" u svom nazivu neće biti prikladne.

Ako ne postoji takva linija u „menijima“, ali postoje linkovi, kada pređete mišem preko kojih su ovi linkovi odmah podvučeni, oni mogu imati nazive Glavni“ ili „Menadžer“ ili „Prodaja“, „Kupovina“, „Administracija ” ili „Podaci istraživanja i administracija” ili druge slične veze ili čak slike. To znači da je ovo 1C 8.3 baza i za to mogu biti prikladne samo one obrade, izvještaji, ekstenzije koje u nazivu imaju “8.3”, a one obrade koje imaju “8.2” u svom nazivu nisu prikladne.

Izuzetak je univerzalna obrada, u čijim nazivima izvještaji uključuju i 8.2 i 8.3, tj. naslov će reći (8.2 i 8.3) ili (8.2/8.3) ili (8.2-8.3) ili (8.*)

Uvjeti u upitima se primjenjuju kada je potrebno odabrati ne sve zapise iz tabele 1C infobaze, već samo one koji ispunjavaju jedan ili više kriterija odabira.

Uvjeti u 1C upitima mogu se postaviti na različite načine ovisno o karakteristikama samog upita i izvora podataka.

ključna riječ "GDJE"

Ključna riječ GDJE koristi se u 1C upitima kada se uvjet primjenjuje na zapise odabrane iz baze podataka. U ovom slučaju, filtriranje zapisa se dešava u fazi njihovog odabira iz tabele infobaze.

Na primjer, postoji sto Plaćanja, koji sadrži spisak zaposlenih i isplata koje su im izvršene.

Ako trebate odabrati uplate u iznosu od najmanje 10.000, tada će zahtjev izgledati ovako

Zahtjev. Tekst= „IZABIR
| Plaćanja.Zaposleni,
| Plaćanja
|OD
| Plaćanja
|WHERE
| Plaća >=10000"

Rezultat upita bit će sljedeća tabela.

ključna riječ "IMATI"

Ključna riječ HAVING u 1C upitima se koristi kada je potrebno izabrati između već odabranih zapisa. Na primjer, ova ključna riječ se koristi kada trebate filtrirati grupisane zapise kao rezultat upita.

Vratimo se na primjer o kojem smo gore govorili. Recimo da treba da izaberete iz tabele Plaćanja zaposlenih koji su ukupno primili više od 20.000 Da biste to učinili, prvo morate uneti grupisanje po polju Zaposleni, izračunajte zbir po polju Plata za svakog zaposlenog, a zatim iz primljene evidencije izabrati one koje ispunjavaju uslov.

Tekst zahtjeva će izgledati ovako.

Zahtjev. Tekst= „IZABIR
| Plaćanja.Zaposleni,
| AMOUNT(Plaćanja.Plaća) AS Plaća
|OD
| Plaćanja
|GROUP BY
| Plaćanja.Zaposleni
|HAVING
| IZNOS (Plaćanja. Plaća) > 20000"

Rezultat izvršenja ovog zahtjeva će biti ovakav.

Ovaj primjer jasno pokazuje razliku između ključnih riječi GDJE I HAVING. Ako smo upotrijebili riječ GDJE umjesto HAVING, tada bi se prvo birali zapisi sa platom većom od 20.000, a zatim bi se iz njih obračunavao iznos za svakog zaposlenog. Kao rezultat toga, dobili bismo prazan rezultat upita, jer nijedan zaposlenik nije primio više od 20.000 u jednoj uplati.

Uvjeti odabira u virtualnim registarskim tablicama

Svi registri u sistemu 1C:Enterprise imaju virtuelne tabele: registri akumulacije, registri informacija, računovodstveni registri. Možete postaviti uslove za virtuelne tabele na dva načina:

  1. kroz parametre virtuelne tabele;
  2. preko odjeljaka zahtjeva GDJE ili HAVING.

Razlike između sekcija GDJE I HAVING već smo pogledali. Da biste razumeli kako se uslovi u ovim odeljcima zahteva razlikuju od uslova u parametrima virtuelne tabele, morate razumeti šta virtualne registarske tablice u 1C. Njihova bitna karakteristika je da ne postoje u bazi podataka. Ovo je alat koji nam pruža platforma 1C:Enterprise za optimizaciju konfiguracije.

Dakle, ako je uvjet specificiran u parametrima virtualne tablice, onda se primjenjuje u fazi njenog formiranja iz zapisa u stvarnoj tablici registra. I ako u sekcijama GDJE ili HAVING, zatim - na zapise već formirane virtuelne tabele.

Pogledajmo primjer. Data je tabela periodičnog registra informacija Kursevi valuta.

Morate odabrati valute za najniži datum čija je stopa manja od 30 rubalja.

Upit sa uslovom u parametrima virtuelne tabele će izgledati ovako:

U ovom slučaju dobićemo jedan unos: Dollar 28.3 od 02.01.2007. Ovo će biti pravo rješenje problema.

Ako stavimo uslov u sekciju GDJE, tada će rezultat upita biti prazan, jer će se prvo napraviti rez od prvih za svaku valutu (kao rezultat ćemo dobiti dva zapisa od 01.01.2007. Dollar 30.25 I Euro 40.5), a zatim će iz njih biti odabrani zapisi koji zadovoljavaju uslov. Ali oba primljena zapisa podliježu Pa< 30 ne zadovoljavaju.

1C jezik upita je jedna od glavnih razlika između verzija 7.7 i 8. Jedna od najvažnijih tačaka u učenju 1C programiranja je jezik upita. U 1C 8.3 upiti su najmoćniji i najučinkovitiji alat za dobivanje podataka. Jezik upita vam omogućava da dobijete informacije iz baze podataka na prikladan način.

Sama sintaksa u velikoj mjeri podsjeća na klasični T-SQL, osim što u 1C, koristeći jezik upita, možete primati podatke samo pomoću konstrukcije Select. Jezik također podržava složenije konstrukcije, na primjer, (zahtjev unutar zahtjeva). Upiti u 1C 8 mogu se pisati i ćirilicom i latinicom.

U ovom članku pokušat ću govoriti o glavnim ključnim riječima u 1C jeziku upita:

  • izabrati
  • dozvoljeno
  • razne
  • express
  • prvo
  • za promjenu
  • značenje
  • tip vrijednosti (i REFERENCE operator)
  • izbor
  • group by
  • vlasništvo
  • ISNULL
  • Da NULL
  • priključci - desni, levi, unutrašnji, puni.

Kao i neke male trikove 1C jezika, pomoću kojih možete optimalno konstruirati tekst zahtjeva.

Za otklanjanje grešaka u upitima u sistemu 1C 8.2 obezbeđen je poseban alat - konzola za upite. Možete vidjeti opis i preuzeti ga koristeći link -.

Pogledajmo najvažnije i najzanimljivije operatore 1C jezika upita.

SELECT

U jeziku upita 1C Enterprise 8, svaki upit počinje ključnom riječi ODABIRATI. U 1C jeziku ne postoje konstrukcije UPDATE, DELETE, CREATE TABLE, INSERT, ove manipulacije se izvode u objektnoj tehnologiji. Njegova svrha je samo čitanje podataka.

Na primjer:

ODABIRATI
Current Directory.Name
OD
Imenik.Nomenklatura AS Trenutni imenik

Upit će vratiti tabelu s nazivima stavki.

Blizu strukture ODABIRATI možete pronaći ključne riječi ZA PROMJENU, DOZVOLJENO, VARIOUS, PRVO

DOZVOLJENO— bira samo zapise iz tabele na koje trenutni korisnik ima prava.

VARIOUS— znači da rezultat neće sadržavati duple linije.

IZBOR (SLUČAJ)

Programeri vrlo često potcjenjuju ovaj dizajn. Primjer njegove upotrebe:

Current Directory.Name,

WHEN Current Directory.Service THEN

"Usluga"

KRAJ KAKO PREGLEDATI Nomenklaturu

Imenik.Nomenklatura AS Trenutni imenik

Primjer će vratiti tekstualnu vrijednost u polju “Tip stavke” – “Proizvod” ili “Usluga”.

GDJE

Dizajn 1C jezika upita, koji vam omogućava da nametnete odabir na primljene podatke. Imajte na umu da sistem prima sve podatke sa servera, a tek onda se bira na osnovu ovog parametra.

ODABIRATI
Imenik.Naziv
OD
Trenutni imenik.Nomenklatura AS Trenutni imenik
WHERE CurrentDirectory.Service = TRUE

U primjeru biramo zapise za koje je vrijednost atributa “Service” postavljena na “True”. U ovom primjeru mogli bismo proći sa sljedećim uvjetom:

"GDJE JE SERVIS"

U suštini, biramo redove u kojima je izraz nakon ključne riječi jednak "True".

Možete koristiti direktne uslove u izrazima:

WHERE Šifra = "005215"

Koristeći operator “VALUE()” u uvjetima, koristite pristup unaprijed definiranim elementima i nabrajanjima u 1C zahtjevu:

WHERE Vrsta stavke = Vrijednost(Enumeracija.Vrste predmeta.Proizvod)

Vremenske vrijednosti se mogu specificirati na sljedeći način:

GDJE Datum prijema > DATETIME(2012,01,01):

Najčešće su uslovi navedeni kao parametri koji se prosleđuju zahtevu:

Nabavite 267 video lekcija na 1C besplatno:

WHERE NomenclatureGroup= &NomenclatureGroup

Uslov se može nametnuti tipu atributa ako je kompozitnog tipa:

Ako trebate ograničiti odabir sa liste vrijednosti ili niza, možete učiniti sljedeće:

GDJE je Registar akumulacije B (&Lista dokumenata za odabir).

Stanje takođe može biti složeno, a sastoji se od nekoliko uslova:

GDJE Datum prijema > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGrupa A NE usluga

GROUP BY

Dizajn 1C 8.2 jezika upita koji se koristi za grupisanje rezultata.

Na primjer:

ODABIRATI
Prijem robe i usluga Robe.
SUM(Prijem robeUslugeRobe.Količina) AS količina,
SUM(Prijem robeUslugeRobe.Iznos) KAO iznos
OD
Dokument prijema robe i usluga KAKO Prijem robe i usluga

GROUP BY
Prijem robeUslugeRobe.Robe

Ovaj zahtjev će sumirati sve primitke po iznosu i količini po artiklima.

Osim ključne riječi SUMA Možete koristiti druge agregatne funkcije: KOLIČINA, BROJ RAZLIČITIH, MAKSIMALNO, MINIMUM, PROSJEČNO.

HAVING

Dizajn koji se često zaboravlja, ali je vrlo važan i koristan. Omogućava vam da odredite odabir u obliku agregatne funkcije, što se ne može učiniti u dizajnu GDJE.

Primjer korištenja HAVING-a u 1C zahtjevu:

ODABIRATI
Prijem robe i usluga Robe.
SUM(Prijem robeUslugeRobe.Količina) AS količina,
SUM(Prijem robeUslugeRobe.Iznos) KAO iznos
OD
Dokument prijema robe i usluga KAKO Prijem robe i usluga

GROUP BY
Prijem robe i usluga robe

SUM(Prijem robeUslugeRobe.Količina) > 5

Tako ćemo odabrati broj pristiglih proizvoda više od 5 komada.

ZNAČENJE()

Na primjer:

WHERE Bank = Vrijednost (Directory.Banks.EmptyLink)

WHERE Vrsta nomenklature = Vrijednost(Imenik.Vrste nomenklature.Proizvod)

WHERE Vrsta stavke = Vrijednost (Enumeration.Tipovi stavki.Usluga)

TYPE na zahtjev

Tip podataka se može provjeriti korištenjem funkcija TYPE() i VALUETYPE() ili korištenjem logičkog REFERENCE operatora.

EXPRESS()

Operator Express u 1C upitima koristi se za pretvaranje tipova podataka.

sintaksa: EXPRESS(<Выражение>KAKO<Тип значения>)

Koristeći ga, možete konvertirati vrijednosti niza u datum ili referentne vrijednosti u nizove podataka i tako dalje.

U praktičnim primenama, Express() operator se vrlo često koristi za konvertovanje polja neograničene dužine, jer polja neograničene dužine ne mogu da se biraju, grupišu itd. Ako se takva polja ne konvertuju, dobićete grešku Ne možete porediti polja neograničene dužine i polja nekompatibilnih tipova.

ODABIRATI
Kontakt informacije.Objekat,
EXPRESS(ContactInfo.View AS ROW(150)) KAO Pogled
OD
Registar informacija KAKO Kontakt informacije

GROUP BY
EXPRESS(ContactInfo.Representation AS ROW(150)),
ContactInformation.Object

ISNULL (ISNULL)

Prilično korisna funkcija 1C jezika upita koja provjerava vrijednost u zapisu i da li je jednaka NULL, To vam omogućava da ga zamijenite svojom vrijednošću. Najčešće se koristi pri dobijanju virtuelnih tabela stanja i prometa radi sakrivanja NULL i stavite čistu 0 (nula).

ISNULL(Predmjesečni porezi. Primijenjena FSS beneficija, 0)

Takva funkcija 1C jezika upita ISNULL vratit će nulu ako nema vrijednosti, što će izbjeći grešku.

PRIDRUŽITE SE

Postoje 4 vrste veza: LIJEVO, PRAVO, KOMPLETAN, UNUTRAŠNJI.

LIJEVI i DESNI PRIKLJUČAK

Spojevi se koriste za povezivanje dvije tabele na osnovu specifičnog uslova. Feature when LEFT JOIN je da uzimamo prvu specificiranu tabelu u celini i uslovno vežemo drugu tabelu. Polja druge tabele koja ne mogu biti vezana uslovom se popunjavaju vrednošću NULL.

Primjer lijevog pridruživanja u 1C zahtjevu:

Vratiće celu tabelu i popuniti polje “Banka” samo na onim mestima gde je ispunjen uslov “Counterparties.Name = Banks.Name”. Ako uslov nije ispunjen, polje Banka će biti postavljeno na NULL.

DESNI JOIN na jeziku 1C 8.3 apsolutno slicno LIJEVA veza, sa izuzetkom jedne razlike: u PRAVO PRIKLJUČIVANJA"Glavna" tabela je druga, a ne prva.

FULL CONNECTION

FULL CONNECTION razlikuje se od lijevog i desnog po tome što prikazuje sve zapise iz dvije tabele i povezuje samo one koje može povezati po uslovu.

Na primjer:

FULL CONNECTION
Imenik.Banke KAKO Banke

BY

Jezik upita će u potpunosti vratiti obje tabele samo ako je ispunjen uslov za spajanje zapisa. Za razliku od lijevog/desnog spajanja, moguće je da se NULL pojavi u dva polja.

INNER JOIN

INNER JOIN razlikuje se od punog po tome što prikazuje samo one zapise koji se mogu povezati prema datom uslovu.

Na primjer:

OD
Imenik Counterparties AS Klijenti

INNER JOIN
Imenik.Banke KAKO Banke

BY
Clients.Name = Banks.Name

Ovaj upit će vratiti samo redove u kojima banka i druga strana imaju isto ime.

Zaključak

Ovo je samo mali dio sintakse iz 1C 8 jezika upita u budućnosti ću pokušati detaljnije razmotriti neke točke, pokazati i još mnogo toga!

U ovom članku želimo o svemu razgovarati s vama Funkcije 1C jezika upita, i konstrukcije jezika upita. Koja je razlika između funkcije i dizajna? Funkcija se poziva sa zagradama i mogućim parametrima u njima, a konstrukcija se piše bez zagrada. Bez sumnje sve strukture i funkcije 1C jezika upita učiniti proces prikupljanja podataka fleksibilnim i multifunkcionalnim. Ove funkcije i konstrukcije primjenjuju se na polja zahtjeva, a neke se primjenjuju i na uvjete.

1C funkcije jezika upita

Jer jasan opis Funkcije 1C jezika upita je mnogo rjeđi od opisa struktura, odlučili smo da počnemo gledati funkcije. Sada pogledajmo svaki posebno, opisujući njegovu svrhu, sintaksu i primjer upotrebe, dakle:

1. Funkcija DATUM VRIJEME- ova funkcija kreira konstantno polje tipa "Datum".

sintaksa: DATUM VRIJEME(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Primjer upotrebe:

2. DATUM DIFFERENCE funkcija- vraća razliku između dva datuma u jednoj od dimenzija (godina, mjesec, dan, sat, minuta, sekunda). Mjerenje se prenosi kao parametar.

sintaksa: DATUM RAZLIKA(<Дата1>, <Дата2>, <Тип>)

Primjer upotrebe:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | KAO Količina dana";

3. Funkcija VALUE- postavlja konstantno polje sa unapred definisanim zapisom iz baze podataka, takođe možete dobiti praznu vezu bilo koje vrste;

Sintaksa: VALUE(<Имя>)

Primjer upotrebe:

Request.Text = "SELECT //predefinirani element | VALUE(Directory.Currencies.Dollar) AS Dollar, //prazna veza | VALUE(Document.Prijem robe i usluga.EmptyLink) AS Potvrda, //transfer vrijednost | VALUE(Transfer . Pravni pojedinac) AS Pojedinac, //predefinirani račun VALUE(Kontni plan. Samoobračunski materijal) AS Account_10" ;

4. SELECT funkcija- pred nama je analog konstrukcije IF, koji se koristi u kodu, samo se ovaj koristi u 1C upitima.

sintaksa: IZBOR KADA<Выражение>ONDA<Выражение>U suprotnom<Выражение>KRAJ

Primjer upotrebe:

Request.Text = //ako je iznos veći od 7500, tada bi trebao postojati popust od 300 rubalja, //pa ako se uvjet aktivira onda funkcija //vraća Sum - 300 //u suprotnom zahtjev će vratiti jednostavno Sum "ODABIR | ODABIR | KADA TCReceipts.Iznos > 7500 | ONDA TCReceipts.Iznos - 300 | ELSE TCReceipts.Iznos | KRAJ KAO Iznos sa popustom | FROM |

5. EXPRESS funkcija- omogućava vam da izrazite konstantno polje sa određenim tipom.

sintaksa: EXPRESS(Ime polja AS Ime vrste)

Primjer upotrebe:

Query.Text = "IZABIR RAZNO | Sales.Registrar.Broj, | SELECT | KADA Sales.Registrar VEŽE dokument.Potrošni materijal | THEN EXPRESS(Sales.Registrar AS Document.Consumable) | ELSE SELECT | WHEN Sales.Registrar VEŽE dokument.dokument | THEN EXPRESS(Sales.Registrar AS Document.Implementation) |. KRAJ AS Broj |.

Postoji li druga opcija za korištenje funkcije EXPRESS u poljima mješovitih tipova, gdje se pojavljuju? Najjednostavniji primjer je “Registar” za bilo koji registar. Pa zašto bismo mogli da kvalifikujemo tip u registratoru? Razmotrimo situaciju kada iz registratora odaberemo polje "Broj", iz koje tabele će se odabrati broj? Tačan odgovor svih! Stoga, da bi naš upit brzo funkcionirao, trebali bismo specificirati eksplicitni tip koristeći funkciju EXPRESS

Primjer upotrebe:

Query.Text = "SELECT | EXPRESS(Nomenklatura.Komentar AS Linija(300)) KAO Komentar, | EXPRESS(Nomenklatura.Zbroj AS Broj(15,2)) AS Zbroj |FROM | Imenik.Nomenklatura AS Nomenklatura";

6. ISNULL funkcija(alternativno pravopis ISNULL) - ako je polje tipa NULL, tada se zamjenjuje drugim parametrom funkcije.

sintaksa: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Primjer upotrebe:

Također imajte na umu da je preporučljivo UVIJEK zamijeniti tip NULL nekom vrijednošću, jer poređenje s tipom NULL uvijek vraća FALSE čak i ako usporedite NULL sa NULL. Najčešće se NULL vrijednosti formiraju kao rezultat spajanja tablica (sve vrste spajanja osim internih).

Query.Text = //Odaberi cijelu stavku i njena stanja //ako nema stanja u nekoj stavci, tada će postojati polje //NULL koje će biti zamijenjeno vrijednošću 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Remainings.Nomenclature AS Br. |.

7. Funkcija REPRESENTATION- omogućava vam da dobijete prikaz polja zahtjeva.

sintaksa: PERFORMANSE(<НаименованиеПоля>)

Primjer upotrebe:

Query.Text = "SELECT | REPRESENTATION(FreeRemainingRemains.Nomenclature) AS Nomenklatura, | REPRESENTATION(FreeRemainingRemaining.Warehouse) AS Warehouse, | FreeRemainingRemaining.InStockRemaining |FROM.AccumulationRemainRemainRemain.FROM.RemainingRemainRemainRegister

Konstrukcije u 1C jeziku upita

Gore smo razgovarali s vama Funkcije 1C jezika upita, sada je vrijeme za razmatranje konstrukcije u 1C jeziku upita, nisu ništa manje važni i korisni, hajde da počnemo.

1. Građevinski LINK- je logički operator za provjeru referentnog tipa. Najčešće se susreće prilikom provjere polja složenog tipa u odnosu na određeni tip. sintaksa: VEZA<Имя таблицы>

Primjer upotrebe:

Request.Text = //ako je tip vrijednosti zapisivača dokument Prijem, //onda će upit vratiti "Prijem robe", u suprotnom "Prodaja robe" "SELECT | SELECT | WHEN Remainings.Registrar LINK Dokument.Prijem robe i Usluge |. "Potrošnja" |. |.

2. Design BETWEEN- ovaj operator provjerava da li je vrijednost unutar navedenog raspona.

sintaksa: IZMEĐU<Выражение>I<Выражение>

Primjer upotrebe:

Request.Text = //dobijemo cijelu nomenklaturu čiji je kod u rasponu od 1 do 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code IZMEĐU 1 I 100" ;

3. HIJERARHIJA konstrukcije B i B- provjeriti da li je vrijednost u prenesenoj listi (nizovi, tablice vrijednosti itd. mogu se prenijeti kao lista). Operator IN HIERARCHY vam omogućava da vidite hijerarhiju (primjer korištenja kontnog plana).

sintaksa: IN(<СписокЗначений>), U HIJERARHIJI(<СписокЗначений>)

Primjer upotrebe:

Request.Text = //odaberite sve podračune računa "ODABIR | Samonosivi. Veza KAO račun | FROM | Kontni plan. Samonosivi AS Samonosivi | GDJE | Samonosivi. Veza U HIJERARHIJSKOJ VRIJEDNOSTI (Grafikon Računi za samostalnu upotrebu.

4. Dizajn SLIČAN- Ova funkcija nam omogućava da uporedimo string sa uzorkom niza.

sintaksa: LIKE "<ТекстШаблона>"

Opcije uzorka redova:

% - niz koji sadrži bilo koji broj proizvoljnih znakova.

Jedan proizvoljan karakter.

[...] - bilo koji pojedinačni znak ili niz znakova naveden u uglastim zagradama. Nabrajanje može specificirati opsege, na primjer a-z, što znači proizvoljan znak uključen u raspon, uključujući krajeve raspona.

[^...] - bilo koji pojedinačni znak ili niz znakova naveden u uglastim zagradama osim onih navedenih iza znaka negacije.

Primjer upotrebe:

Query.Text = //pronađi cijelu nomenklaturu koja sadrži korijen TABUR i počinje //s malim ili velikim slovom t "SELECT | Nomenclature. Link | FROM | Directory. Nomenklatura KAO Nomenklatura | WHERE | Proizvodi. Naziv LIKE "" [Tt ]abur%""" ;

5. Dizajn DOZVOLJEN- ovaj operater vam omogućava da odaberete samo one zapise iz baze podataka za koje pozivalac ima dozvolu čitanja. Ova prava su konfigurisana na nivou zapisa (RLS).

sintaksa: ALOWED se piše iza ključne riječi SELECT

Primjer upotrebe:

Request.Text = "ODABIR DOZVOLJENO | Counterparts. Link | FROM | Directory. Counterparties AS Counterparts";

6. Dizajn VARIOUS- omogućava vam da odaberete zapise u kojima nema dupliranih zapisa.

sintaksa: VARIOUS se piše iza ključne riječi SELECT

Primjer upotrebe:

Request.Text = //odabire zapise na koje čitač ima prava "IZABIR RAZLIČITIH | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

Također, konstrukcija VARIOUS se može koristiti sa operatorom ALLOWED i drugim operatorima.

Primjer upotrebe:

Request.Text = //odabire različite zapise na koje čitalac ima prava "IZABIR DOZVOLJENO RAZLIČITIH | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties";

7. Dizajn FIRST- bira broj zapisa navedenih u parametru iz rezultata upita.

Sintaksa: FIRST<число>

Primjer upotrebe:

Request.Text = //odaberite prva 4 CCD broja iz direktorijuma "IZABIR PRVI 4 | CCD brojevi. Veza | IZ | Direktorijuma. CCD brojevi KAO CCD brojevi";

8. Dizajn ZA PROMJENU- omogućava zaključavanje tabele, radi samo u transakcijama (relevantno samo za automatska zaključavanja).

sintaksa: ZA PROMJENU<НаименованиеТаблицы>

Primjer upotrebe:

Query.Text = "SELECT | Slobodni ostaci ostataka. Nomenklatura, | besplatni ostaci ostataka. Skladište, | besplatni ostaci ostataka. Ostalo na zalihama | FROM | Registar akumulacija. Slobodni ostaci. Ostaci KAO slobodni ostaci ostataka. Registar akumulacija | Registar akumulacija | . Slobodni ostaci.

9. Dizajn ORDER BY- organizira podatke po određenom polju. Ako je polje veza, onda prilikom postavljanja zastavice AUTO ORDER Sortiranje će se desiti prema predstavljanju veze ako je zastavica isključena, onda se veze sortiraju prema starješini adrese veze u memoriji.

sintaksa: SORT BY<НаименованиеПоля>AUTO ORDER

Primjer upotrebe:

Query.Text = "SELECT | Besplatni preostaci. Nomenklatura AS Nomenklatura, | Slobodni ostaci Ostaci. Skladište AS skladište, | Slobodni ostaci Ostaci. Na zalihama Preostalo | FROM | Registrirajte akumulacije. Slobodni ostaci. Preostali KAO slobodni preostali ORDER Preostaje | |. Nomenklatura |. AUTO READING";

10. Dizajn GROUP BY- koristi se za grupisanje nizova upita prema određenim poljima. Numerička polja se moraju koristiti sa bilo kojom agregatnom funkcijom.

sintaksa: GROUP BY<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Primjer upotrebe:

Query.text = "Odaberite | ProductInwarehouses.nomenClature kao nomenklatura, | Proizvodi, | suma (robaInWarehouses.instock) Kao što je upisi | od | prenosećih usluga | | grupna od strane | Proizvodi - proizvodeInwarehouses.nomenClature, | Treasures.Sware";

11. Dizajn HAVING- omogućava vam da primijenite agregatnu funkciju na uvjet odabira podataka, slično konstrukciji WHERE.

sintaksa: HAVING<агрегатная функция с условием>

Primjer upotrebe:

Query.Text = //odabira grupisane zapise u kojima je polje InStock veće od 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) KAO INSTOCK |FROM | RegisterAccumulations.ItemsSInSi | GROUP BY | ProductsInWarehouses.Nomenclature |.DOSTUPNO |.

12. Građevinski INDEX BY- koristi se za indeksiranje polja upita. Upit sa indeksiranjem traje duže da se završi, ali ubrzava pretragu kroz indeksirana polja. Može se koristiti samo u virtualnim tablicama.

sintaksa: INDEX BY<Поле1, ... , ПолеN>

Primjer upotrebe:

Query.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

13. Dizajn WHERE- omogućava vam da nametnete uslov na bilo koja polja za odabir. Rezultat će uključivati ​​samo zapise koji zadovoljavaju uslov.

sintaksa: GDJE<Условие1 ОператорЛогСоединения УсловиеN>

Primjer upotrebe:

Query.Text = //svi zapisi sa CompensationRemaining su odabrani<>0 i //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |FROM.Registar Compensation.Remains |FROM RPORemains |WHERE |CompensationRPORemaining.CompensationRemaining<>0 | I CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. REZULTATI dizajna... OPŠTE- koristi se za izračunavanje ukupnih iznosa u dizajnu su navedena polja po kojima će se ukupni iznosi izračunati i agregatne funkcije primijeniti na ukupna polja. Kada se koriste zbrojevi za svako polje nakon konstrukcije TOTAL, podaci se grupišu. Postoji opcioni GENERAL konstrukt, njegova upotreba takođe obezbeđuje dodatno grupisanje. U nastavku ćete vidjeti primjer rezultata zahtjeva.

sintaksa: REZULTATI<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>BY<ОБЩИЕ> <Поле1, ... , ПолеN>

Primjer upotrebe:

Request.Text = "IZABIR | Izračuni. Ugovor sa drugom stranom. Vrsta ugovora AS Vrsta ugovora, | Izračuni. Ugovor sa drugom stranom AS Ugovor, | Izračuni. Druga strana, | Izračuni. Iznos međusobne namirnice kao Stanje | IZ. Registar akumulacija. Izračunavanje sa drugim stranama | UKUPNO |. |OPĆE |

Na slici su prikazane grupe koje su formirane tokom izvršenja zahteva, gornja se odnosi na OPŠTI deo, a druga na polje Vrsta ugovora sa drugom stranom.



Puna sintaksa (kliknite za proširenje)

Uslovni operator "Ako".

Opis:

Operater Ako kontroliše izvršavanje programa na osnovu rezultata jednog ili više logičkih izraza. Operator može sadržavati bilo koji broj grupa operatora na čelu sa konstrukcijama InačeAko - Onda.

sintaksa:

Opcije:

If Ključna riječ koja započinje strukturu izraza uvjetnog izvršenja.<Логическое выражение> Boolean izraz. Zatim slijede Operateri Onda se izvršavaju ako je rezultat logičkog izraza vrijednost Istinito. // Operatori Izvršni operator ili niz takvih operatora.ElseIf Boolean izraz koji slijedi ključnu riječ InačeAko, izračunava se samo kada su uslovi u Ako i sve prethodne InačeAko ispostavilo se da su jednaki Lazi. Operateri koji prate konstrukciju InačeAko - Onda, se izvršavaju ako je rezultat logičkog izraza u datom InačeAko jednaki Istinito. Ostalo Operatori koji slijede ključnu riječ Inače, se izvršavaju ako su rezultati logičkih izraza u konstrukciji Ako i svi prethodni dizajni InačeAko ispostavilo se da su jednaki Lazi. EndIf Ključna riječ koja završava strukturu izraza uvjetnog izvršenja.

Ternarni uslovni operator

Opis:

Omogućava vam da procijenite jedan od dva navedena izraza ovisno o rezultatu procjene logičkog izraza.

sintaksa:

? (< Логическое выражение> , < Выражение 1 > , < Выражение 2 > )

Opcije:

Povratna vrijednost:

Rezultat evaluacije jednog od rezultirajućih izraza.

&OnClient procedura Izvrši kod (komanda) /// Kako sastaviti If operator za 1s 8.3, 8.2 Ako je 1 > 0 Onda // Tačno // blok naredbi Prijaviti( "Računar će izvršiti sve naredbe u ovom bloku.") ; Prijaviti( "Jedan preko nule.") ; EndIf ; Ako 1< 0 Тогда // Ложь Сообщить("Jedan manje od nule.") ; Inače prijavi( "Ova grana uslovnog operatora (#A) će raditi.") ; Prijaviti( "Jedan preko nule.") ; EndIf ; Ako 1< 0 Тогда // Ложь Сообщить("Jedan manje od nule.") ; ElseIf 1 = 0 Onda // Lažni izvještaj( "Jedan je nula.") ; Inače prijavi( "Ova grana uslovnog operatora (#B) će raditi.") ; Prijaviti( "Jedan preko nule.") ; EndIf ; /// Kako konstruisati ternarni operator? u 1s 8.3, 8.2 Tekst = ? (1 > 2, "Jedan je više od dva.", "Jedan nije više od dva.") ; Izvještaj (tekst) ; // će ispisati "Jedan nije više od dva." Kraj procedure /// Preuzmite i pokrenite ove primjere na svom računalu

Zatvori