Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Savjet
  • 1c Enterprise ugrađeni programski jezik. Petlje koje koriste logički izraz

1c Enterprise ugrađeni programski jezik. Petlje koje koriste logički izraz

Čak i ako ste prethodno proučavali druge programske jezike, na primjer, C ++, PHP, Java, vrijedi zapamtiti da 1C, iako u mnogim aspektima, još uvijek ima mnogo fundamentalnih razlika.

Najvažnija stvar u 1C je da ne morate izmišljati svoje tipove objekata. Svi su već u konfiguraciji.

Instalirajte tehnološku platformu 1C na svom računaru i otvorite novu ili postojeću bazu u konfiguratoru. Za početak, možete ga koristiti apsolutno za podučavanje programiranja.

Na lijevoj strani prozora vidjet ćete stablo konfiguracijskih objekata. To uključuje dokumente, imenike, registre, poslovne procese i još mnogo toga.

Podaci se također pohranjuju u DBMS, ali programer obično ne radi s njima direktno. Uz pomoć tehnološke platforme programer se već poziva na objekte konfiguracije ili infobaze.

U 1C, kao iu mnogim drugim programskim jezicima, upiti se vrlo često koriste. slično T-SQL jeziku. Zahtjevi se mogu pisati i na engleskom i na ruskom, između ostalog, kao i ostatak koda.

Čini se da je sve jednostavno, ali poznavanje programskog jezika često nije dovoljno za rad "na terenu". Činjenica je da su u većini organizacija koje koriste 1C instalirane standardne konfiguracije i da ih morate znati.

U planu rada za 1C programere postoje dvije glavne grane: primaoci franšize ili rade "za sebe" i rade kao programer sa punim radnim vremenom IT odjela bilo koje organizacije. Ovaj izbor zavisi samo od vaših preferencija.

Kada radite za primaoca franšize, slobodnjak ili vodite vlastiti posao, plaćanje će biti po komadu. Posla može biti puno i treba dati sve od sebe. Ne postoji ograničenje za plate, a možete zaraditi impresivnu količinu novca.

Ako odlučite da radite kao slobodnjak ili otvorite sopstveni biznis, nećete morati da „delite“ svoju zaradu ni sa kim (osim sa državom i freelance platformom, naravno). Ali u ovom slučaju bit će potrebno samostalno tražiti klijente.

Ako se ipak odlučite zaposliti u organizaciji kao programer sa punim radnim vremenom, tada nećete puno ovisiti o količini obavljenog posla. U ovom slučaju postoji određena stabilnost, ali je i granica plata ograničena.

Naravno, ove dvije metode se mogu kombinovati, radeći kao programer sa punim radnim vremenom tokom dana i freelancing uveče.

Ono što je dobro kod 1C programera je to što možda nemate tehničko obrazovanje (na primjer, ekonomista ste, računovođa itd.). Da biste potvrdili svoje znanje pred klijentima ili poslodavcem, možete dati svoje 1C certifikate.

Certifikati su različitih tipova, kako po platformi (za programere), tako i po standardnim rješenjima. Možete ih dobiti na 1C polaganjem ispita u obliku testa ili praktičnog zadatka.

Knjige na 1C

Najbolje je proučavati 1C iz knjiga koje je objavio 1C. Iz izvora, da tako kažem. Neki od njih dolaze s isporukom tipičnih konfiguracija. Možete kupiti i pojedinačne knjige.

Knjiga "1C: Programiranje za početnike" namijenjena je ljudima koji su daleko od programiranja, ali koji žele naučiti kako kreirati vlastita rješenja na 1C 8.3 od nule.

"Zdravo, 1C" prikazuje najjednostavnije, osnovne mogućnosti razvoja primijenjenih rješenja u sistemu 1C: Enterprise 8.

101 Savjeti opisuje različite načine za postizanje istih zadataka.

Praktični vodič za programera 1C Enterprise 8.3 je vrlo detaljan vodič koji opisuje tehnike razvoja na jednostavnim i razumljivim primjerima. Ova knjiga je jedna od najboljih za učenje 1C programiranja.

Ovaj vodič opisuje jezik upita od nule za one koji čak nisu ni upoznati sa SQL-om.

Ako pišete u SI
Budite barem tri puta slabiji
O ovome kažu:
"On je kul programer!"
(Fidoshnye pjesme - "Šta je Suxxx i šta je Rulezzz")

Predgovor

Razlog za pisanje ovog članka je negativan stav stručne javnosti prema ovoj platformi i programerima.

Kao programer koji je izabrao 1C, mislim da je ovo mišljenje neutemeljeno. 1C platforma je daleko od idealne, ali, po mom mišljenju, to je najbolji, i što je najvažnije, domaći proizvod!

I još više - neadekvatno je suditi o sposobnostima programera prema jeziku na kojem piše.

U ovom članku ću opisati prednosti koje sam pronašao za sebe u programu. Ispostavit će se da je članak gotovo samo reklama, pa odmah odricanje od odgovornosti:

  • Nemam direktnu vezu sa 1C;
  • Ovaj članak nije prilagođen i napisan je isključivo na dobrovoljnoj osnovi;
  • U nekim slučajevima se izražava lično mišljenje koje se možda ne poklapa...;
  • Cijeli je članak, izuzev prologa, autorov, sve slučajnosti su slučajnost;
  • Pričaćemo o platformi 1C Enterprise 8.2 (trenutno je relevantna verzija 8.3, ali je još nisam proučavao - puno posla na 1C 8.2). Međutim, većina onoga što je rečeno odnosi se i na 8.3 platformu i na ranije verzije, a nešto se odnosi i na verziju 7.7.
Pa počnimo.

o cemu pricamo?

Platforma 1C Enterprise 8 je:
  • Radi u dvije verzije - fajl i server (tri linka) - svaka ima svoje prednosti i nedostatke;
  • Nezavisni računovodstveni sistem koji se lako instalira i konfiguriše;
  • Moćan ekosistem za programere sa svim potrebnim objektima i alatima;
  • Lep ergonomski interfejs;
  • Relativno jeftino poslovno rješenje;
  • Mreža primatelja franšize, početna obuka;
  • Snažna baza razvoja i znanja akumuliranog tokom godina;
  • Ponekad problematična platforma za sistemske administratore;
  • Ne najbrže izvršavanje algoritama (iako ne i najsporije) je priznanje sadržaju informacija (u slučaju grešaka, naznačen je broj reda i njegov sadržaj);
  • Programski jezik nema klase (nasljeđivanje, enkapsulacija, polimorfizam), nema anonimnih funkcija i drugih modernih karakteristika. Ali za rješavanje većine problema to nije ni potrebno!
Za organizaciju računovodstva - jedna platforma nije dovoljna. Platforma je svojevrsni "motor", posredna veza između programa i baze podataka. Programi za ovaj "motor" se zovu konfiguracije. Konfiguracija opisuje strukturu baze podataka u obliku objekata, tekstova procedura pohranjenih u odvojenim modulima (postoji mnogo modula, ima ih svaki objekat i sistem u cjelini, a postoje i zajednički moduli). Platforma pruža nivo apstrakcije u kojem nije potreban direktan pristup bazi podataka, a takođe vam omogućava da apstrahujete od operativnog sistema i tipa baze podataka.

Datotečne i serverske baze podataka

Platforma se sastoji od nekoliko delova i može raditi u fajl ili server verziji.

U verziji datoteke, cijela baza podataka je sadržana u jednoj datoteci (sa ekstenzijom "1cd") - platforma je instalirana na svakom računaru i direktno čita/upisuje u bazu podataka.

Prednosti opcije datoteke su niska cijena i jednostavnost implementacije.

Nedostaci - struktura datoteke "1cd" je zatvorena, nema jedinstvenog sistema u interakciji sa bazom podataka. Kao rezultat toga, teško ga je koristiti sa velikim brojem korisnika (isprobano za 20+ korisnika - možete raditi). Osim toga, dinamička ažuriranja ne uspijevaju kada je veličina baze podataka približno 15 GB (ili više). Rješavanje takvih kvarova je težak zadatak, a uslužni program za popravku baze podataka ne popravlja uvijek efikasno, a ponekad čak i osakaćuje bazu podataka.

Postoji rješenje - ovo je, prije svega, postavljanje dnevne sigurnosne kopije baze podataka. Osim toga, majstori ne samo da objavljuju 1cd format datoteke, već su razvili uslužne programe za rad s takvim datotekama i niz metoda za rješavanje sličnih problema.

U serverskoj verziji platforma za pohranjivanje baze podataka koristi SQL server (obično je to MS SQL, ali počevši od 8.2.14 - možete koristiti neke druge, na primjer, Firebird PostgreSQL, IBM DB2, Oracle Database), i sama platforma koristi troslojnu arhitekturu:

Dio koda se izvršava na klijentu, dio na serveru. U ovom slučaju, samo server komunicira sa bazom podataka. Istovremeno, počevši od verzije 8.2, pored standardnog načina rada, koji je nazvan modom „debeli klijent“, postojala su dva nova načina rada – „tanki klijent“ i „web klijent“; pojavile su se i "upravljane forme", čiji je izgled izgrađen u obliku apstraktnog stabla elemenata. Programiranje za upravljane forme i troslojnu arhitekturu je teže, ali vam omogućava da prebacite skoro sve opterećenje na server (tj. možete kupiti jedan moćan server i stotinu najjeftinijih kancelarijskih računara).

Prednosti platforme: "tri-link" - distribucija opterećenja, otvorenost baze podataka (zvanično, 1C kompanija odbija odgovornost za bilo kakvo oštećenje podataka ako su promjene u SQL bazi podataka napravljene osim putem njihove platforme ili servera, ali to malo ko zaustavlja), nema ograničenja.

Protiv - cijena: morat ćete kupiti zasebno klijentske licence za svaki klijentski računar, posebno - jednu licencu za 1C server, posebnu licencu za SQL server, ako ne koristite besplatnu. Takođe, ponekad postoje poteškoće u radu baze podataka. Oni se rješavaju mnogo brže zbog dostupnosti podataka i prisutnosti vanjskih alata za rad sa bazom podataka. Osim toga, u ovom slučaju trebate napraviti sigurnosnu kopiju baze podataka.

Uobičajena prednost je svestranost konfiguracijskog koda: uz neke izuzetke, konfiguracija razvijena za bazu podataka radit će na serverskoj bazi podataka, i obrnuto. Primjer izuzetka je prijenos promjenjive vrijednosti na server ili sa servera na klijenta (u verziji datoteke to neće uzrokovati iznimke, ali u verziji klijent-server je zabranjeno).

Još jedan plus: platforma se instalira vrlo jednostavno, otprilike ovako: "Next-Next-Next-Ok", nije potrebno fino podešavanje i instalacija bilo koje komponente.

Za serversku verziju postoji još nekoliko postavki, ali sve se radi u instalacijskom dijalogu i ne zahtijeva propisivanje bilo čega u odvojenim datotekama. Instalacija SQL servera može biti donekle teška, jer u ovom slučaju postoji mnogo više postavki (a da biste ga fino podesili, morate proučiti dodatna uputstva). Ali to se ne odnosi na probleme 1C platforme. Štoviše, ako instalirate, na primjer, MS SQL server sa svim zadanim postavkama, tada će 1C moći raditi s njim.

To je više od računovodstva

Kada je u pitanju 1C platforma, ona je predstavljena, prije svega, kao program za računovodstvo. Zaista, ovo je najpopularnije područje korištenja 1C platforme. Ali 1C ne živi samo od računovodstva!
Poznavaoci platforme kažu da se radi o računovodstvenom sistemu (računovodstvena automatizacija). Ovo je bliže istini - postoji mnogo konfiguracija, kako od 1C tako i od programera trećih strana. Neki su samo posredno vezani za računovodstvo, neki uopće nisu.

Općenito, ispravnije je 1C platformu predstaviti kao ljusku za objektno modeliranje baze podataka, sučelja i programiranja u 1C jeziku. Jedino ograničenje je da se za svaku konfiguraciju kreira vlastita baza podataka, i to samo jedna (međutim, moguće je u sklopu konfiguracije dodatno povezati eksterne izvore podataka, odnosno druge baze podataka).

Ekosistem za programere

Hajde da sada razmotrimo 1C jezik i platformu sa stanovišta programera:
Objektni model baze podataka. Prvo, ne radimo direktno sa bazama podataka. Nije potrebno. Radi naše pogodnosti, svi podaci su predstavljeni u obliku međusobno povezanih objekata (direktoriji, dokumenti, registri informacija, registri akumulacije,...), a platforma te podatke automatski izvlači iz baze podataka.
Na primjer, pod uvjetom da varijabla "Element nomenklature" sadrži vezu do stavke kataloga nomenklature, katalog nomenklature ima varijablu PrimarySupplier, tipa Catalog.Contractors, a katalog izvođača ima svojstvo FullName, zatim kod:

ItemNomenclature.PrimarySupplier.Full
... će dovesti do činjenice da 1C platforma, koristeći interne mehanizme, pronađe unos u tablici koji odgovara direktoriju "Izvođači" po identifikatoru iz polja "Glavni dobavljač" stavke artikla i vraća vrijednost polje koje odgovara polju "FullName" u objektnom modelu direktorija "Contractors".

Takvih dereferenciranja može biti mnogo - sistem će se nositi. Jedino upozorenje je da sistem ne zna kako da optimizuje dereferenciranje, tako da biste trebali nastojati da ih izbacite iz svih mogućih petlji.

Pored objekata koji opisuju podatke, postoji ogroman broj sistemskih objekata - za širok spektar funkcija. Istaknut ću neke od njih:

Prodavnice vrijednosti
Niz- objekat koji pohranjuje skup podataka, za razliku od klasičnog predstavljanja nizova. To mogu biti podaci različitih tipova (broj, niz, referenca, drugi objekt). Ima minimalnu funkcionalnost i uglavnom se koristi kao privremeni kontejner za prijenos vrijednosti između drugih skladišta.

Lista vrijednosti- objekat, uglavnom za rad sa korisničkim interfejsom. Osim podataka, za svaki element može sadržavati i pogled, znak zastavice i sliku (piktogram). Takođe ima metode "SelectElement ()" i "MarkElements ()" - kada se pozovu, korisniku se prikazuje dijalog interfejsa (što je zgodno - nema potrebe za kreiranjem ovog dijaloga u konfiguraciji).

Struktura i Udobnost- skladišta uparenih vrijednosti "Ključ i vrijednost". U strukturi "Ključ", ovo je niz koji poštuje pravila za imenovanje varijabli u 1C (bez razmaka, ne počinje cifrom, sastoji se samo od slova, brojeva i donje crte). Prema - "Ključ" je bilo koja vrijednost. Najbrže traženje objekata je uparivanje (brže nego u nizu i indeksiranoj tablici vrijednosti).

Tabela vrijednosti- veoma zgodan i prilično brz objekat za skladištenje i obradu podataka. Kolone u tabeli vrednosti mogu se dodavati i uklanjati, bez obzira na broj unosa. U ovom slučaju, podaci u redovima se ne gube (ili se brišu samo podaci iz ćelija koje odgovaraju izbrisanim kolonama). Također, ima metodu "SelectRow ()" koja poziva dijalog za odabir reda. Postoje indeksi.

Stablo vrijednosti- objekt koji predstavlja hijerarhijske podatke. Sadrži kolone, skup kolona je isti za sve zapise na svim nivoima. Uklanjanje/dodavanje kolona u stablo vrijednosti jednako je jednostavno kao i u tablici vrijednosti. Takođe, ima metodu "SelectRow ()".

Objekti interfejsa i objekti za rad sa raznim podacima TextDocument, SpreadsheetDocument, Web Browser, FileReader, FileWriter, ZIPFile Reading, ZIPFileWrite, XMLReader, XMLWriter, HTTPRequest i mnogi drugi objekti, od kojih svi imaju ugrađenu pomoć za sve. Namjena navedenih objekata se vidi iz njihovih naziva i sve je to odmah dostupno na platformi.

Posebno treba napomenuti da postoji objekat "Metapodaci" - pomoću kojeg možete proučavati strukturu podataka u programskom jeziku, kao i za svaki link ili objekat za priručnik, dokument, kontni plan itd. postoji metoda "Metapodaci ()" - pruža opis ovog priručnika / dokumenta / kontnog plana / itd. u bazi podataka (koji detalji, tabelarni delovi su dostupni, dužina koda/broja, itd.). Često je vrlo zgodno.

I još jednom posebno treba spomenuti objekte: "Query", "QueryConstructor", "QueryBuilder", "ReportBuilder", "DataCompositionSchema". Ova porodica implementira skup objekata za rad sa moćnim 1C jezikom upita.

Jezik upita. Upiti u 1C se koriste samo za dobijanje uzorka podataka sa pogodnim odabirom, sortiranjem, grupisanjem. Kao prva aproksimacija, ovo je izraz "SELECT" iz SQL-a preveden na ruski, međutim, u 1C jeziku upita postoji i funkcionalnost koja nedostaje u SQL-u, naime:

  • Rad sa 1C konfiguracijskim objektima umjesto SQL tabela;
  • Rad sa vezama umjesto s poljima SQL identifikatora;
  • Podrška za dereferenciranje, slično kao što se radi u kodu;
  • Odabir po ulasku u grupu (za literaturu);
  • Hijerarhijski zbrojevi;
  • Privremene tabele i ugniježđeni upiti (SELECT * FROM (SELECT…)));
  • Konstruktor upita - zgodan, baziran na objektima, automatski optimizira tekst upita za brzo čitanje, koji može raščlaniti tekst upita (parsirati tekst upita i izgraditi objektni model od njega);
  • Report Builder je dodatak preko motora upita, koji je dodao funkcionalnost automatske prezentacije rezultata, kao i fleksibilnu konfiguraciju samog upita u "Enterprise" modu (tj. od strane korisnika). Kao rezultat toga, pojavio se univerzalni izvještaj u standardnim 1C platformama, u kojem korisnik može konfigurirati koje podatke i kojim redoslijedom želi vidjeti što je u redovima, što je u stupcima, a sam izvještaj generira izlaznu tablicu;
  • ACS (Data Composition System) je sljedeći model koji je ugradio funkcionalnost univerzalnog izvještaja i dopunio ga nekim funkcijama za obradu rezultata.

Programski jezik
U pogledu sintakse, 1C jezik je sličan "ruskom Pascalu", ali se razlikuje od "Pascala" po manje strogosti i odsustvu nekih konstrukcija:

  • Nema potrebe za deklarisanjem promenljivih - možete inicijalizovati direktno u tekstu modula;
  • Ne postoji kruto kucanje varijabli. Sistem ima tipove vrijednosti, ali ne postoje stroga pravila kucanja za varijable. Varijabla koja je pohranila vezu već može pohraniti broj ili niz u nekoliko redova koda;
  • Možete dodati varijable s vrijednostima različitih tipova, a tip rezultata će biti isti kao i tip prve varijable, na primjer:
    k = “25” +1; // k = “251”, a ne 26
  • Varijable sa vrijednostima različitih tipova mogu se usporediti za jednakost ili nejednakost (ali ne više ili manje, to će uzrokovati izuzetak) - naravno, takve varijable nisu jednake;
  • Postoje funkcije i procedure, dozvoljeno je koristiti rekurziju (sa ograničenom dubinom rekurzije);
  • Kada specificirate funkciju ili proceduru bez parametara - svejedno, obavezno naznačite prazne zagrade na kraju: here_so ();
  • Postoje moduli: svaki priručnik i dokument ima nekoliko njih, pored toga, registri, izvještaji i moduli za obradu i svaki obrazac ima module, a kao dio konfiguracije moguće je kreirati zajedničke module;
  • Nema klasa, nasljeđivanja, enkapsulacije, polimorfizma;
  • Funkcija se ne može proslijediti kao referenca, nema anonimnih funkcija;
  • Ne postoji obrnuta petlja (za i: = 5 do 1 do), ali je zaista potrebna prilikom brisanja zapisa. Prolazimo sa malo dužim snimanjem kroz ciklus "Bye".

Alati

  • 1C platforma ima mogućnost istovaranja i učitavanja konfiguracije, upoređivanja konfiguracije s drugom konfiguracijom i djelimično učitavanja promjena;
  • Moguće je izbaciti tekstove modula za grupnu obradu i učitati ih nazad u konfiguraciju;
  • Ako je konfiguracija na podršci (sve konfiguracije iz 1C su inicijalno podržane), tada uvijek možete usporediti i vidjeti što su promijenili programeri treće strane ili lokalni stručnjaci;
  • Također je moguće isprazniti/učitati cijelu bazu podataka (zajedno sa podacima);
  • Za kolektivni rad na jednoj konfiguraciji koristi se spremište konfiguracija;
  • Postoje i brojna pravila za izmjene standardnih konfiguracija, čak postoji i dokument iz 1C koji opisuje metode i standarde za promjenu tipičnih konfiguracija (i bilo koje druge).

Opšti utisak
1C jezik kombinuje jasnoću tekstova Pascal jezika sa neozbiljnošću rada sa varijablama BASIC jezika. Nedostaje niz funkcija svojstvenih modernim programskim jezicima, ali je sasvim moguće bez njih. Osim toga, 1C platforma ima moćan sakupljač smeća, tj. nema potrebe, na primjer, brisati tabele nakon upotrebe ili ih brisati.

Interfejs 1C Enterprise 8.2

1C je posebnu pažnju posvetio interfejsu svog programa. Prije svega, to je paleta boja. Ona je predivna! Prozori programa su prepoznatljivi čak i izdaleka, dok za dugi niz godina rada - ne izazivaju neprijateljska osjećanja, naprotiv - želim da svi programi budu jednako kul.
Istovremeno, stil platforme je vrlo strog, bez ukrasa i drugih ukrasa. Istovremeno, postoje vrlo korisne funkcije, na primjer, pamćenje veličina prozora (veličine se pamte samo kada ih korisnik promijeni, a istovremeno možete uvijek resetirati korisničke postavke - na zadane veličine i pozicije pritiskom na Alt + Shift + R).
8.2 Web klijentski interfejs izaziva brojne pritužbe, ali čini se da platforma 8.3 sa sobom donosi novi redizajnirani interfejs - Taxi.

Cijene, ponuda i potražnja, franšizing

Najukusniji plus 1C platforme je njegova cijena. Ovo je posebno tačno sada, tokom krize. Uostalom, 1C je potpuno naš, domaći proizvod. I prodaje se za naše drvene. Takva rješenja stranog proizvođača koštat će puno novca. I licence za 1C su sasvim prihvatljive.

Osim toga, 1C ima zanimljivu politiku licenciranja. Same licence i konfiguracije se kupuju jednom. Istovremeno se kupuju licence za radno mjesto i za server, ali ne i za baze podataka, pa čak ni za veze, tj. pod jednom licencom, isti korisnik može pokrenuti neograničen broj 1C sesija, radeći sa bilo kojim brojem baza podataka. Isto važi i za konfiguracije: kupovinom jedne licence za konfiguraciju, organizacija može da je koristi za kreiranje bilo kog broja baza podataka, štaviše, zvanično je dozvoljeno korišćenje delova koda i objekata ove konfiguracije prilikom razvoja sopstvenih konfiguracija (dok vlastite konfiguracije se mogu prodati / prenijeti - pod uslovom da ih koristite, morate kupiti konfiguraciju od 1C).

Nakon ove jednokratne kupovine potrebno je samo pretplatiti se na ažuriranja i platiti jednom godišnje za obnovu pretplate, tzv. ITS. Inače, pretplata je vrlo jeftina, kao dvije klijentske licence.

Općenito, sve to izgleda vrlo isplativo.

Drugi "ukusni", ali već s muhom u masti, plus, je prisustvo prilično univerzalnih konfiguracija od samog 1C i od partnera.

O svestranosti

Koncept "univerzalnosti" definisao je jedan školski nastavnik na CWP-u na primjeru gas maski: postoje univerzalne koje štite od mnogih štetnih faktora, ali je stepen zaštite prosječan ili ispod prosjeka, a postoje i specijalizovane gas maske. koji štite od jednog udara, ali sa visokim stepenom zaštite. Do sada nisam naišao na precizniju definiciju.
A konfiguracije iz 1C su univerzalne. Praktično, ne postoje zadaci u kojima bi se mogli u potpunosti koristiti bez modifikacija. Ipak, 1C je uspio stvoriti univerzalni skup alata koji pokriva potrebe većine grana modernog poslovanja.


Treći plus (i to uz to) je mreža primatelja franšize i centara za obuku, kako za korisnike tako i za programere i administratore početnike. Dobra ideja, ali osrednji kvalitet implementacije. Ipak, rasprostranjenost i agresivan marketing jedan je od razloga široke popularnosti 1C u našoj zemlji (a to je i razlog negativnosti, zavisti i mržnje).

Kašika katrana

Obojivši 1C u sve boje, bilo bi nepravedno ne reći o njegovim nedostacima, a oni zaista jesu:

Nestabilna izdanja- kako na platformi tako iu konfiguracijama, postoji veliki broj grešaka i propusta. I to je u službenim izdanjima. Prije objavljivanja službene verzije, izdaje se "Familiarization Version". Postoji i povratna informacija za slanje opisa grešaka kako bi se mogli prihvatiti na ispravku. Međutim, ili verzije za upoznavanje nisu baš popularne, ili sama kompanija 1C nema vremena da obradi sva pisma do datuma izlaska, ali to je činjenica. Svaki put kada ažurirate platformu ili konfiguraciju, možete naići na najneočekivanija "iznenađenja". Od kompanije 1C je već više puta traženo da detaljnije testira svoj razvoj.

Primalac franšize (u daljem tekstu - franšiza)... U idealnom slučaju, prema ideji, to bi trebalo da budu firme sa kvalifikovanim stručnjacima koji poznaju osnovne principe konfiguracija i platformi. Te iste firme bi morale prodati platformu, konfiguraciju i podršku, malo "doraditi" univerzalne konfiguracije prema zahtjevima klijenta (i ponekad - prilagoditi ove zahtjeve), pokušavajući što manje modificirati standardnu ​​konfiguraciju. Kako ne bi komplicirali previše budućih ažuriranja. U stvarnosti je suprotno.

Kada se nove licence prodaju klijentu, franci dobijaju 50% njihove vrijednosti (minus porez na dohodak 13% od ovih 50%). U isto vrijeme, ne morate ništa sami proizvoditi, samo trebate prenijeti ključeve od 1C kupcu.

Prilikom pružanja usluga franšize ne plaćaju ništa kompaniji 1C (osim članarine), ali trebaju platiti platu zaposlenika. Također morate potrošiti na poreze državi - FIU i porez na dohodak.

Ispostavilo se da su i 1C i franci isplativi za prodaju licenci i neprofitabilni za dalju podršku. Istovremeno, da bi klijent mogao kupiti program, on mora u početku biti prilagođen njegovim zahtjevima. I morate platiti za rad. A ovdje se radi uštede privlače studenti, đaci i nespecijalisti kojima možete malo platiti, a ponekad i ne platiti nikako, ne mogu se čak ni prijaviti kod države (radiće nezvanično, jer ima za šta platiti). Rezultat je ogroman broj prodaja vrlo niske kvalitete. Poboljšanja imaju tendenciju da utiču na važne mehanizme i komplikuju buduća ažuriranja. Ali u fazi prodaje, ni 1C ni primatelj franšize nisu zainteresirani za ovo.

Imajte na umu da za to nisu krivi toliko poslovni ljudi iz franšiza koliko 1C. Fokusirajući se na prodaju, uopće nije vodila računa o podršci (ne govorim sada o školama, već o tome da bi i primaocu franšize i 1C trebalo biti isplativo da pružaju podršku).

Tehnička podrška. U razumijevanju 1C-a, tehnička podrška je pružanje pristupa odjeljku "ažuriranje" za platformu i konfiguracije, kao i odeljcima informacija koji sadrže opis nekih mehanizama i karakteristika rada 1C. Osim toga, prilikom pretplate, isporučuje se disk sa navedenim materijalima. Postoji i forum (veoma oskudan u poređenju sa narodnim). Takođe je moguće poslati e-mail na 1C - ali čak i ne nadajući se da će na njih biti odgovoreno (ili će robot odgovoriti "Pismo je poslato razvojnom odjelu." Što se tiče razvoja, Yandex.Poisk i pomoć ugrađena u konfigurator pruža mnogo više podrške.

Epilog

Prešao sam na 1C 2008. godine, a pre toga sam radio u kompaniji koja je razvijala sopstveni računovodstveni program (Delphi 5, pa Delphi 7). Prvo sam se upoznao sa platformom 1C Enterprise 7.7 i bio sam zadivljen jednostavnošću izrade izvještaja u njoj. Istovremeno, bilo je jasno da se izveštaji generišu mnogo duže nego u sličnim mehanizmima na Delphiju, ali računovođe to nije posebno zanimalo. Sačekajte nekoliko minuta umjesto nekoliko sekundi nije problem. Naprotiv, tamo možete lakirati nokte, popiti čaj ili razgovarati o najnovijim vijestima bez prekida s posla. Uostalom, ogromna većina računovođa danas su žene.
Međutim, 7.7 sučelje je bilo prilično ograničeno, a skup objekata prilično rijedak. Tražio sam alternative. Upoznao sam vanjske komponente, ali one nisu došle u praktičnu upotrebu, jer šef je odlučio da je vrijeme da pređemo na 8.1 (da, 8.2 još nije bilo), a na ovoj platformi sam kao programer pronašao sve što mi je ranije nedostajalo.
Trenutno imam autoritet među kolegama, kao i klijentima koji su mi dolazili iz franši. Vjerovatno više nikada neće stupiti u kontakt s francima.


Generalno, prilično sam zadovoljan radom na platformi 1C Enterprise 8. Pogodan je za rješavanje većine računovodstvenih zadataka i zadataka korištenjem baze podataka.

Tagovi:

  • programski jezici na ruskom
  • 1C
  • 1C programiranje
Dodaj oznake

U pravilu, učenje bilo kojeg programskog jezika počinje primjerom pisanja prvog najjednostavnijeg programa (“Zdravo svijete!”). Ovo se radi kako bi se jasno pokazalo kako se radi sa osnovnim sintaksičkim konstrukcijama. Nećemo praviti izuzetak od ovog opšteprihvaćenog načina predstavljanja materijala kada istražujemo novo razvojno okruženje, pa stoga i naš prvi članak treba posmatrati u istom duhu. U njemu ćemo detaljno analizirati odgovore na sljedeća pitanja u vezi sa programiranjem na platformi 1C: Enterprise 8:

  • Gdje i uz koju pomoć napisati programski kod na ugrađenom 1C jeziku?
  • Šta su softverski moduli, koja su pravila za rad sa njima?
  • Šta je varijabla, kako raditi s njom, kako i gdje je deklarisati?
  • Koji operatori poređenja, dodjele i uvjetni operatori postoje i kako ih primjenjujete?
  • Booleove operacije - šta su to i kako s njima raditi?
  • Zašto su petlje i kako ih koristiti?

Članak će biti koristan svima onima koji još nisu upoznati s razvojem na platformi 1C: Enterprise 8, ali žele naučiti kako programirati na 1C.

Primjenjivost

Materijal je relevantan za platformu 1C: Enterprise 8, izdanje 8.2. i 8.3.

Varijable i operatori

U ovom članku počinjemo proučavati ugrađeni jezik 1C: Enterprise 8. Izvršni kod se nalazi u programskim modulima.

Postoji veliki broj modula koji su dizajnirani za rukovanje raznim događajima.

Dakle, prijava korisnika na sistem se obrađuje u jednom modulu, a obrada korisnikovog klika na određeno dugme u potpuno drugom.

Dakle, svaki modul opisuje ponašanje konfiguracije u određenoj tački. Modul sadrži, prije svega, dio koji opisuje varijable. One. možemo deklarisati neke varijable u modulu.

Kasnije se mogu koristiti u procedurama i funkcijama ovog modula. Ako je varijabla definirana ključnom riječi Export, tada će biti dostupna izvan ovog modula. Primjer linije deklaracije varijable:

Promjena skladišta, odjeljenja, izvoza skladištara;

Nakon deklaracije varijabli, postoji dio procedura i funkcija.

Iza njih je dio glavnog programa, koji će se izvršavati u trenutku pristupa ovom modulu.

Na primjer, u dijelu glavnog programa možete inicijalizirati varijable, tj. dodijelite im neke početne vrijednosti:

Stanje = 1;
NewExpression = 2;
Rezultat = 3;

Modul se može zamisliti kao kombinacija različitih operatora koji izvode različite akcije koje su nam potrebne.

Operator separator je znak ";" (tačka-zarez). Ovaj znak je kraj izjave. One. operator se može napisati na sljedeći način:

Rezultat = 100X200
+400
-600;

Nije bitno na koliko linija je operater.

Naravno, češće je zgodnije i jasnije smjestiti operatora u jednu liniju, ali ponekad su operatori prilično dugački (broj linija može razumno doseći nekoliko desetina).

Tačka i zarez se može izostaviti u završnoj izjavi date konstrukcije, na primjer, procedure. One. sljedeći kod će raditi:

Procedura CalculateValues ​​()

Početna vrijednost = 100;
IntermediateValue = Početna vrijednost / 5;
Ukupna vrijednost = Početna vrijednost + Međuvrijednost

Kraj procedure

Međutim, bolje je koristiti tačku i zarez u naredbi na kraju. Moguće je da će vremenom gradnja biti nastavljena, a konačna izjava više neće biti konačna. Morat ćemo posebno pratiti ovu situaciju.

Varijable su dizajnirane da pohranjuju neke vrijednosti bilo kojeg tipa podataka. Koriste se za posredno skladištenje informacija za obradu.

U gotovo svakom programskom modulu koji izvodi neku radnju, postoje različite varijable. Tipkanje varijabli po vrijednostima u Platformi 1C: Enterprise 8 je meko.

Na primjer, varijabla može sadržavati vrijednost jednog tipa podataka, a nekoliko redova kasnije - drugog tipa:

Created = False;
Created = Tačno;
Kreirano = 100;

U prva dva operatora vrijednost varijabli je Boolean, au trećem se mijenja u numeričku vrijednost. One. kucanje zavisi od vrednosti koja je dodeljena datoj varijabli.
Varijable se mogu opisati na dva načina:

  • implicitni način (pominjanje na lijevoj strani operatora dodjeljivanja opisuje datu varijablu, ne postoji preliminarni opis varijable sa riječju Var, odnosno ne postoji poseban odjeljak za opisivanje varijabli);
  • eksplicitan opis varijabli (Variable ControlData;). Eksplicitna deklaracija varijabli se koristi, na primjer, ako se očekuje naknadni prijenos ove varijable u funkciju.

Za nazive varijabli koristi se klasični opis identifikatora. Identifikator se sastoji od slova, brojeva i donjih crta. Identifikator mora početi slovom ili donjom crtom.

U ovom slučaju, ime varijable treba da odražava značenje ove varijable. Imena varijabli od jednog slova (poput A, B, C) su loš primjer. One ne odražavaju prirodu varijabli.

Primjeri ispravnih imena varijabli: Brojač (povećavajuća varijabla za petlju), Counterparty. Ako ime varijable sadrži nekoliko riječi, onda bi svaka nova riječ, radi jasnoće, trebala početi velikim slovom.

Rezervirane riječi kao što su procedura, funkcija, petlja, kraj petlje, itd. ne mogu se koristiti u nazivima varijabli. (ove konstrukcije su označene crvenom bojom u programskom modulu).

Rezervirane riječi su ugrađeni operatori jezika i ima ih dosta. Svi su predstavljeni u Syntax Assistant.

Treba napomenuti da tipovi podataka nisu rezervirane riječi (na primjer, niz, logički, istinit, netačan). Sistem će ispravno prihvatiti takva imena varijabli.

Za pisanje programskog koda, velika i mala slova nisu bitna. Na primjer, riječ Procedura može biti napisana i velikim i malim slovima. Štaviše, velika i mala slova mogu se izmjenjivati ​​unutar riječi.

Platformi to nije bitno. Ipak, prema pravilima dobre forme, početak riječi mora biti napisan velikim, a sva ostala slova malim slovima.

O jeziku. Možete koristiti i ruski i engleski i kombinaciju dva jezika. Ako je nekome zgodno, možete sigurno koristiti engleski za pisanje programskog koda, kao i kombinirati ruski i engleski. Ovo nije važno za Platformu.

Mnoga imena na engleskom je teško zapamtiti. Kada se koristi kombinacija dva jezika, čitljivost programskog koda se pogoršava.

Bulove operacije

Operatori poređenja često koriste Booleovu logiku koja vraća True ili False.

Na primjer, u uslovnom operatoru možete uporediti: Ako je Događaj = Prodaja Tada će algoritam slijediti jednu granu (tj., ako je vrijednost Tačna), druga grana algoritma se izvršava pod uslovom False.

Uslovi mogu biti prilično složeni, mogu se kombinovati, a primjenjuju se sljedeći operatori: I, ILI i NE. Dakle, za AND operator:

Istina I Istina = Istina;
Tačno i Netačno = Netačno;
Laži i Istina = Laži;
Laži I Laži = Laži.

Za operator OR dovoljno je da je jedan od operanada Tačan, tada će vrijednost kombinacije biti Tačna. Vrijednost je False samo kada su oba operanda False.

Operator NE invertuje jednostavno trenutnu vrijednost (False to True, True to False).

Koristeći kombinaciju ovih operatora, možete izgraditi prilično složene uslove. Kada konstruišete složene uslovne izjave, razmotrite prioritet.

Operator NOT ima najveći prioritet, nakon čega slijedi operator AND, a zatim operator OR. Ono što je u zagradama ima najveći prioritet i prvo se izvršava.

Na primjer, odredimo prioritet (redoslijed izvršenja) za operacije u gornjem izrazu:

NE (Uslov1 ILI Uslov2) I Uslov3 ILI Uslov4
1.Rezultat1 = (Uslov1 ILI Uslov2);
2. Rezultat2 = NIJE Rezultat1;
3. Rezultat3 = Rezultat2 I Stanje1;
4. Rezultat = Rezultat3 ILI Stanje4;

Postoji pravilo konverzije:

NOT (Uslov1 ILI Uslov2) = NIJE Uslov1 I NE Uslov2.

Međutim, ne treba uvijek težiti pojednostavljenju izraza, jer je često, logično, prošireni izraz lakši za čitanje.

Operator dodjele

Operator dodjeljivanja ne treba miješati sa jednakošću, iako imaju isti pravopis.

Princip operatora dodjeljivanja je takav da se lijevoj vrijednosti (varijable na lijevoj strani) dodjeljuje vrijednost koja je desno od znaka jednakosti. Pogledajmo primjer:

Varijabla1 = Varijabla2 = Varijabla3;

Varijabli1 se dodjeljuje vrijednost jednakosti iz Bulove logike, tj. Tačno ako je Varijabla2 = Varijabla3, ili False u suprotnom.

Prilikom testiranja za poziciju programera početnika, često se koristi zadatak: zamijeniti vrijednosti dvije varijable na mjestima.

Ovaj problem se rješava pomoću operatora dodjeljivanja i ima dva rješenja.

Rješenje #1 korištenjem privremene varijable:
PrivremenaVarijabla = Varijabla1;
Varijabla1 = Varijabla2;
Varijabla2 = PrivremenaVarijabla;

Rješenje #2:
Varijabla1 = Varijabla1 + Varijabla2;
Varijabla2 = Varijabla1 - Varijabla2;
Varijabla1 = Varijabla1 - Varijabla2;

Uslovni operator

Postoji takav operator If, nakon kojeg je potrebno opisati neki uslov (sam uslov može biti prilično velik). Nakon uslova slijedi riječ Then i izvršeni operatori.

Ovo može biti praćeno ključnom riječi Else i nizom drugih operatora. Ako postoji nekoliko različitih uslova, možete koristiti niz ključnih riječi Inače, ako(vidi primjer ispod). Cijela konstrukcija mora završiti ključnom riječi End If nakon čega slijedi tačka i zarez.

Pored jednostavnih i višestrukih uslova, postoji i skraćeni oblik uslovnog operatora:? (Uslov, Izraz1, Izraz2);

Ako je uslov tačan, onda Izraz1, inače - Izraz2... Primjer koda: DearProduct =? (Product.Price> 100000, Tačno, False);

U praksi, umjesto poređenja beleži vrednost Tačno (Lazi) tip:

Ako je varijabla = istina, onda
i
Ako je varijabla = netačno onda

zapravo se koriste ekvivalentni zapisi:

Ako je varijabilno onda
i
Ako NIJE Varijabilno onda

Cyclic Operators

Za bilo koju vrstu ciklusa, potrebno je eksplicitno naznačiti kraj ovog ciklusa pomoću ključne riječi Kraj ciklusa... Postoji nekoliko vrsta petlji.

Cycle over counter- ciklus sa fiksnim brojem ponavljanja. Uslov za izlazak iz ciklusa je prekoračenje granične vrijednosti. Primjer upotrebe za izračunavanje vrijednosti A!

A = 5;
Faktorski = 1;
Za brojač = 1 po ciklusu
Faktorski = Faktorski * Brojač;
Kraj ciklusa;

Uslovna petlja- se izvršava sve dok je uslov datog ciklusa tačan. primjer:

Preostali iznos = 1000;
Dodatna cijena proizvoda = 243;
Količina = 0;
Dok je RemainderSum> 0 ciklus
Količina = Količina + 1;
Stanje iznosa = Stanje iznosa - Količina * Dodatna cijena proizvoda;
Dodatna cijena proizvoda = Dodatna cijena proizvoda * 0,8;
Kraj ciklusa
Količina = Količina-1;

Ovaj ciklus izračunava koliko jedinica proizvoda se može kupiti za dati iznos (1000 rubalja) ako se nakon kupovine svake jedinice proizvoda njegova prethodna cijena pomnoži sa faktorom 0,8. Originalna cijena proizvoda je 243 rubalja.

Primjer greške pri korištenju ove vrste petlje za početnike je vječna petlja, kada je inicijalno uvjet petlje tačan, ali se unutar same petlje ne mijenja ni na koji način.

Prođite kroz kolekcije (drugi naziv za svaku).

Platforma ima prilično veliki broj kolekcija (to su kontejneri koji sadrže elemente određenog tipa).

Elemente kolekcije možete preći pomoću posebne vrste petlje.

Na primjer, postoji niz brojeva, morate izračunati zbir svih elemenata niza:

Iznos = 0;
Za svaku stavku iz petlje niza
Zbir = Zbir + Element;
Kraj ciklusa;

Postoje posebni operatori za petlje: Nastavi i Prekini.

Ako u nekom trenutku ciklusa izvršenje daljih operatora ove iteracije postane besmisleno, tada da bi se vratili na početak ciklusa i organizirali njegovu sljedeću iteraciju, operator Nastavi.

Operater Prekini omogućava vam da prekinete izvođenje petlje, čak i ako je uvjet petlje istinit.

Ovo završava naše prvo upoznavanje sa razvojem internog 1C jezika.

Šta je sa Hello World? Još ga nismo napisali, zar ne? Da, ali ništa te ne sprečava da to uradiš sam, jer znanja je VEĆ dovoljno. Pa, ako ne uspije, onda možete zaviriti ovdje.

U ovom članku ćemo razmotriti takvu konstrukciju programskog jezika 1C kao Ciklusi.

Postoje tri načina za organiziranje petlji.

  1. Petlje koje koriste logički izraz (izvršavaju se sve dok je logički izraz istinit)
  2. Petlja kroz kolekcije

Pogledajmo svaku od ovih metoda.

Petlje koristeći varijablu - brojač petlji

sintaksa:

Za< Переменная> = < НачальноеЗначение>By< КонечноеЗначение>Kraj ciklusa;

Ovom metodom organizovanja petlji, promenljivoj brojača se dodeljuje početna vrednost i ona se izvršava sve dok vrednost varijable brojača ne bude manja ili jednaka navedenoj konačnoj vrednosti.

Sa svakom iteracijom, brojač se povećava za jedan. Evo najosnovnijeg primjera takve petlje:

Za brojač = 0 do kraja ciklusa od 1000;

Za razliku od mnogih drugih programskih jezika, 1C ne pruža mogućnost specificiranja koraka u petlji. Ako je potrebno, to se može učiniti dodavanjem željene vrijednosti brojaču unutar petlje.

Za Brojač = 0 Do 1000 Brojač ciklusa = Brojač + 10; Kraj ciklusa;

Petlje koje koriste logički izraz

sintaksa:

Do< ЛогическоеВыражение>Kraj ciklusa;

Odbijanje = Netačno; GeneratorCh = Novi generator slučajnih brojeva (1); Dok NE dođe do kvara Nasumični broj ciklusa = RTC generator. Slučajni broj (0, 10); Ako je slučajni broj> 5 onda je neuspjeh = istina; EndIf; Kraj ciklusa;

To jest, petlja će se izvoditi sve dok se ne generiše slučajni broj veći od pet.

Petlja kroz kolekcije

U programskom jeziku 1C postoji koncept kao kolekcija. To je kolekcija elemenata sadržanih u objektu.

Na kolekciju možemo upućivati ​​objekte kao što su: niz, tablica vrijednosti, izbor iz rezultata upita, metapodaci, itd. Ovaj koncept je prilično proizvoljan, ali se nalazi u sintaksnom pomoćniku na svakom koraku. Vrlo čest zadatak je kada trebamo sekvencijalno iterirati sve elemente kolekcije da bismo izvršili neku radnju na njima. Za to postoji sintaktička konstrukcija:

Za sve< ЭлементКоллекции>Od< Коллекция>Kraj ciklusa;

Evo <ЭлементКоллекции> Je varijabla u koju se sekvencijalno postavljaju elementi iz kolekcije. I unutar petlje se postupa u skladu s tim.
Kao primjer, dat ću petlju kroz redove tablice vrijednosti. Neka se zove TableProducts i izgleda ovako:

Idemo oko ove tabele u petlji i za svaki red ćemo prikazati poruku s nazivom i cijenom proizvoda:

Za svaki TableRow From TableProducts Ime petlje = TableRow. Ime; Cijena = TableRow. Cijena; Poruka = ​​Nova poruka korisniku; Poruka. Tekst = "Naziv proizvoda:"

Zapravo, isto se može učiniti pomoću prve opcije, odnosno u petlji pomoću brojača:

Broj redova = Stavke tabele. Količina() ; Za brojač = 0 prema broju redova - 1 ciklus TablicaRow = TableProducts [Counter]; Ime = TableRow. Ime; Cijena = TableRow. Cijena; Poruka = ​​Nova poruka korisniku; Poruka. Tekst = "Naziv proizvoda:"+ Naziv + "; Cijena:" + Cijena; Poruka. Prijaviti() ; Kraj ciklusa;

Ali kao što vidite, mnogo je lakše i praktičnije koristiti prelazak elemenata kolekcije.

Pomoćni operateri

Često postoji situacija kada je, u zavisnosti od nekog, potrebno prekinuti izvođenje petlje, ili preći sa sledeće iteracije.

Prekid se vrši uz pomoć operatera Prekini... U ovom slučaju, izvođenje petlje se prekida i kontrola se prenosi na jezičku konstrukciju koja slijedi petlju. Ako trebate prijeći na sljedeću iteraciju, morate koristiti operator Nastavi... Tada se kontrola prenosi na početak ciklusa. Ilustrirajmo malim primjerom:

Za brojač = 0 do 100 ciklusa Ako je brojač = 0 onda nastavi; EndIf; Ako je Counter = 4 Onda Prekini; EndIf; Rezultat = 1 / Brojač; Poruka = ​​Nova poruka korisniku; Poruka. Tekst = String (Rezultat); Poruka. Prijaviti() ; Kraj ciklusa;

Preskačemo nulu, jer Ne možete dijeliti sa nulom. A ukupno, petlja će se izvršiti pet puta, za vrijednosti varijable Counter od 0 do 4

Programski jezik 1C je formalni sistem znakova dizajniran za pisanje kompjuterskih programa. Programski jezik definiše skup leksičkih, sintaksičkih i semantičkih pravila koja određuju izgled programa i radnje koje će izvršilac (računar) obavljati pod njegovom kontrolom.

Platforma 1C Enterprise 8 ima punu funkcionalnost za razvoj vlastitih rješenja za programera. Glavni razvojni alat je ugrađeni programski jezik 1C 8.3.

Kreiranje novih klasa programski na jeziku 1C 8.3 je zabranjeno. Budući da je 1C Enterprise platforma specijalizirana za računovodstvene zadatke, sastav klasa je unaprijed određen:

  • itd.

Na osnovu tipičnih klasa, možete kreirati bilo koji broj podklasa koje imaju svoje skupove. Uz pomoć menadžerskih modula, možete malo proširiti funkcionalnost podklase.

Da li je 1C programski jezik komplikovan?

Pitanje je prilično kontroverzno i ​​relativno. Kada se posmatra u odnosu na druge jezike, može izgledati malo jednostavnije. Međutim, pored samog programiranja, morat ćete proučiti i predmetnu oblast - računovodstvo, proizvodnju, porezno računovodstvo itd., što čini da programski jezik 1C u cjelini nije tako jednostavan kao što se na prvi pogled čini.

Ako ste prije upoznavanja sa 1C imali solidno iskustvo u drugim programskim jezicima specifičnim za domenu, neće vam biti teško razumjeti zamršenosti 8.2, glavna stvar je želja. Sve što trebate je pronaći dobar vodič o 1C programskom jeziku.

Ruska sintaksa 1C jezika

Top srodni članci