itthon / Windows Leckék / Mi az 1C programozási nyelv. Szintaxis diagram a nyelvi elemek leírásához

Mi az 1C programozási nyelv. Szintaxis diagram a nyelvi elemek leírásához

Beépített programozási nyelv 1C:Enterprise- az 1C:Enterprise programcsaládban használt programozási nyelv. Ez a nyelv egy előre lefordított, magas szintű tartományspecifikus nyelv.

A nyelvi végrehajtási környezet az 1C:Enterprise szoftverplatform. A vizuális fejlesztőkörnyezet („Configurator”) az 1C:Enterprise szoftvercsomag szerves része.

Az 1C platformok nyelvi dialektusai 7 verzió (7.0, 7.5, 7.7) kisebb kivételekkel alulról felfelé kompatibilis. Az 1C:7x és 1C:8x platformok nyelvei kompatibilisek az alapvető operátorokkal, de jelentősen eltérnek az alkalmazásobjektumokkal való munkavégzésben, aminek következtében a kód átvitele 1C:7x-ről 1C:8x-ra nincs értelme.

A beépített 1C:8 nyelv szintaxisában leginkább a Visual Basic nyelvhez hasonlít.

A platform az alaposztályok rögzített készletét kínálja, amelyek az alkalmazási terület tipikus problémáinak megoldására összpontosítanak:

  • Állandó,
  • Könyvtár,
  • Dokumentum,
  • Dokumentum napló,
  • Átruházás,
  • Jelentés,
  • Kezelés
  • Számlaterv stb.

Az alaposztályok alapján tetszőleges számú generált osztály hozható létre vizuális konfigurációs eszközök segítségével (nincs lehetőség programozottan új osztályt definiálni). Csak egy explicit szintű osztályöröklődés megengedett. A származtatott osztályok objektumai általában rekordokat (vagy rekordkészleteket) képviselnek az adatbázisban. Az ilyen osztályok egy „Metaadat-fát” alkotnak. A beépített 1C programozási nyelv szempontjából az ilyen osztályokat metaadat objektumoknak nevezik.

A metaadat objektumok fő típusai: Könyvtárak, Dokumentumok, Jelentések, Feldolgozás, Jellemzőtípusok tervei, Számlatáblázatok, Számítási típusok tervei, Információs regiszterek, Felhalmozási regiszterek, Számítási regiszterek, Üzleti folyamatok, Feladatok.

Az orosz és az angol parancsszintaxis támogatott.

A beépített 1C:Enterprise nyelvű projekteket konfigurációknak nevezzük. Az ilyen konfigurációk forgalmazása (értékesítése) és megvalósítása az 1C partnervállalatok fő kereskedelmi tevékenysége.

A nyelv munkaneve – „1Sik” („odynesik”) – nagyon gyorsan eltűnt a hivatalos forrásokból. Most, amikor megemlíti ezt a nyelvet az írott dokumentumokban, írnia kell 1C programozási nyelv. A nyelvnek most nincs szóban kiejthető neve. Ezt a nyelvet azonban gyakran „beépített nyelvnek” nevezik az 1C:Enterprise-ről szóló viták kontextusában.

Tárgyorientált nyelvjárások

Számos további komponens is bővíti a fő osztályokat, ezek szabadon hozzáadhatók és módosíthatók; Használatuk nem ajánlott a fejlesztő cégnek. Ez azt jelenti, hogy az 1C és franchise-tulajdonosai visszautasítanak mindent technikai támogatás ilyen komponenseket használó konfigurációk.

Ezenkívül van egy teljesen ingyenes 2C projekt, amely nem használ az 1C vagy más gyártók saját moduljait. Ez egy „a semmiből” újraírt, szabadon terjesztett GPL licenc, egy 1C-szerű rendszer bővíthető magja, amelyben még az 1C „beépített objektumai” is, mint a könyvtárak és regiszterek, az alkalmazásprogramozó által újradefiniált osztályok.

A 2C platformnyelvet azzal a céllal tervezték, hogy maximális folytonosságot biztosítson az 1C meglévő fejlesztéseivel, és az alap 1C nyelv kiterjesztése. A megfelelő alaposztályok megírásával a 2C nyelv közelebb hozható az 1C 7.7-hez és az 1C 8.0-hoz is, bár a 2C:Platform nem tudja 100%-ban automatikusan hordozni a konfigurációkat az 1C:Enterprise egyik vagy másik verziójából.

1C.Net: Enterprise

Az 1C.Net:Enterprise használatának megkönnyítésére számos példa készült, amelyek szinte a teljes .NET-keretrendszert lefedik, beleértve a natív .NET-vezérlők 1C űrlapokba történő integrálását.

Példa program

Klasszikus példa egy szöveges karakterlánc kimenetére az 1C:Enterprise 7.7 beépített nyelven:

Jelentés("Helló, világ!");

Példa egy függvényre, amely egy szám négyzetét adja vissza:

Funkció SquareNumber (szám)

Innumber * innumber ;

EndFunction

Lásd még

  • Az RSL az RS-Balance-ba beépített programozási nyelv.

Megjegyzések

Linkek


Wikimédia Alapítvány. 2010.

Nézze meg, mi az „1C:Enterprise beépített programozási nyelv” más szótárakban:

    Beépített programozási nyelv 1C:Enterprise Nyelvosztály: procedurális, tartományspecifikus A végrehajtás típusa: előre lefordított Szerző(k): 1C Legújabb verzió: 1C:Enterprise 8.2 Adatgépelés: dinamikus gépelés Alapvető ... ... Wikipédia

    A programozási nyelv egy formális jelrendszer, amelyet írásra terveztek számítógépes programok. A programozási nyelv lexikai, szintaktikai és szemantikai szabályokat határoz meg, amelyek meghatározzák kinézet programok és akciók,... ... Wikipédia

    A nyelv olyan programozási nyelv, amelyet a legtöbb elterjedt nyelvtől eltérően nem használ kulcsszavakat, az angol szókincsből átvéve. Tartalom 1 Az angol nyelven alapuló programozási nyelvek túlsúlya ... Wikipédia

    A nem angol alapú programozási nyelvek olyan programozási nyelvek, amelyek a legtöbb elterjedt nyelvtől eltérően nem használnak az angol szókincsből vett kulcsszavakat. Tartalom 1 A szoftvernyelvek túlsúlya... Wikipédia

    A nem angol alapú programozási nyelvek olyan programozási nyelvek, amelyek a legtöbb elterjedt nyelvtől eltérően nem használnak az angol szókincsből vett kulcsszavakat. Tartalom 1 Nyelvek túlsúlya ... ... Wikipédia

    A programozási nyelv egy formális jelrendszer, amelyet programok írására terveztek. Egy program általában valamilyen algoritmust reprezentál a megvalósító számára érthető formában (például számítógép). A programozási nyelv határozza meg a halmazt... ... Wikipédia

    Ellenőrizze a semlegességet. A vitalapon kellenek részletek... Wikipédia

    - (angol Mutable type) összetett adattípus az objektum-orientált programozásban, amelynek értékei (általában az objektumok) létrehozásuk után lehetővé teszik tulajdonságaik megváltoztatását. Tartalom 1 Példák ... Wikipédia

    Nyelvosztály: procedurális, objektum-orientált A végrehajtás típusa: értelmezett Megjelenés: 1994 Szerző(k): Sergey Kubrin Fájlkiterjesztés: mac ... Wikipédia

Könyvek

  • 1C: Enterprise 7.7. Programozási órák. Önkezelési kézikönyv45, Postovalov Sergey Nikolaevich, Postovalova Anastasia Jurjevna, Leírja az 1C:Enterprise 7.7 rendszer adminisztrációját, bemutatja a könyvelést, a beépített nyelvet és a rendszer fő alapvető objektumait. Az objektumokkal végzett munka sajátosságait figyelembe veszik... Kategória: Alkalmazási szoftverek Sorozat: Önálló kezelési útmutató Kiadó: BHV-Petersburg, Gyártó:

Ha SI-ben írod
Legyen legalább háromszor béna
Azt mondják erről:
– Menő programozó!
(Fidosh dalok - "Mi a Suxxx és mi a Rulezzz")

Előszó

A cikk megírásának oka a szakmai közösség negatív hozzáállása ehhez a platformhoz és a programozókhoz.

Mint programozó, aki az 1C-t választotta, ezt a véleményt alaptalannak tartom. Az 1C platform messze nem ideális, de véleményem szerint a legjobb, és ami a legfontosabb, hazai termék!

És még inkább, nem megfelelő egy programozó képességeit a nyelv alapján megítélni, amelyen ír.

Ebben a cikkben leírom azokat az előnyöket, amelyeket magamnak találtam a programban. A cikkből szinte reklám lesz, ezért íme egy nyilatkozat:

  • Nincs közvetlen kapcsolatom az 1C céggel;
  • Ez a cikk nem megrendelésre készült, és kizárólag önkéntes alapon íródott;
  • Esetenként személyes vélemények is elhangzanak, amelyek nem feltétlenül esnek egybe...;
  • Az egész cikk, a prológus kivételével, a szerzőé, minden véletlen egybeesés véletlen;
  • Az 1C Enterprise 8.2 platformról fogunk beszélni (jelenleg a 8.3 verzió a jelenlegi, de még nem tanulmányoztam - sok munka van az 1C 8.2-n). Az elmondottak többsége azonban a 8.3-as platformra és azon túl is vonatkozik. korábbi verziók, néhány pedig a 7.7-es verzióra.
Tehát kezdjük.

Miről beszélünk?

Az 1C Enterprise 8 platform a következő:
  • Két változatban működik - fájl és szerver (három linkes) - mindegyiknek megvannak a maga előnyei és hátrányai;
  • Független könyvelési rendszer, amely könnyen telepíthető és konfigurálható;
  • Erőteljes ökoszisztéma programozók számára az összes szükséges tárggyal és eszközzel;
  • Szép ergonomikus felület;
  • Viszonylag olcsó megoldás üzleti célokra;
  • Franchise hálózat, alapképzés;
  • Az évek során felhalmozott fejlesztések és tudás erőteljes bázisa;
  • Időnként problémás platform a rendszergazdák számára;
  • Nem az algoritmusok leggyorsabb végrehajtása (bár nem a leglassabb) - ez tisztelgés az információtartalom előtt (hiba esetén a sorszám és annak tartalma feltüntetésre kerül);
  • A programozási nyelvben nincsenek osztályok (öröklődés, tokozás, polimorfizmus), nincsenek névtelen függvények és egyéb modern funkciók. De a legtöbb probléma megoldásához ez nem szükséges!
A könyvelés megszervezéséhez egy platform nem elég. A platform egyfajta „motor”, köztes kapcsolat a program és az adatbázis között. Az ehhez a „motorhoz” tartozó programokat konfigurációknak nevezzük. A konfiguráció leírja az adatbázis szerkezetét objektumok formájában, az eljárások szövegeit külön modulokban tárolva (sok modul van, mindegyik objektumnak és a rendszer egészének is van ilyen, és vannak még közös modulok). A platform olyan absztrakciós szintet képvisel, amelyen nincs szükség közvetlen hozzáférésre az adatbázishoz, és lehetővé teszi az elvonatkoztatást operációs rendszerés az adatbázis típusa.

Fájl és szerver adatbázis

A platform több részből áll, és működhet fájl vagy szerver verzióban.

A fájl verzióban a teljes adatbázis egy fájlban található ("1cd" kiterjesztéssel) - a platform minden számítógépre telepítve van, és közvetlenül olvas/ír az adatbázisba.

A fájl opció előnyei - alacsony árés a könnyű telepítés.

Hátrányok - az "1cd" fájlszerkezet zárva van, nem egységes rendszer, interakcióba lép az adatbázissal. Ennek eredményeként nehéz használni nagy számú felhasználóval (20+ felhasználónál próbáltam ki - működhet). Ezenkívül, ha az adatbázis mérete körülbelül 15 GB (vagy több), a dinamikus frissítések meghiúsulhatnak. Az ilyen hibák megoldása nehéz feladat, és az adatbázis-javító segédprogram nem mindig javítja hatékonyan, sőt néha meg is bénítja az adatbázist.

Van megoldás – ez mindenekelőtt napilap felállítása Tartalékmásolat Adatbázis. Ezenkívül a kézművesek nemcsak az 1cd fájlformátumot teszik közzé, hanem segédprogramokat is kifejlesztettek az ilyen fájlokkal való munkavégzéshez, és számos módszert az ilyen problémák megoldására.

A szerver verzióban az adatbázis tárolására szolgáló platform egy SQL szervert (általában MS SQL-t, de 8.2.14-től kezdődően – használhat másokat is, például Firebird PostgreSQL, IBM DB2, Oracle Database), és magát a platformot. háromszintű architektúrát használ:

A kód egy része a kliensen, egy része a szerveren fut le. Ebben az esetben csak a szerver kommunikál az adatbázissal. Ugyanakkor a 8.2-es verziótól kezdve a szabványos üzemmód mellett, amelyet „vastag kliens” módnak neveztek, két új üzemmód jelent meg - „ vékony kliens" és "webkliens"; is megjelent" kezelt űrlapok", amelynek megjelenése az elemek absztrakt fája formájában épül fel. A felügyelt űrlapok és a háromszintű architektúra programozása nehezebb, de ez lehetővé teszi szinte a teljes terhelés átvitelét a szerverre (vagyis vásárolhat egy nagy teljesítményű szervert és száz legolcsóbb irodai számítógépet).

A platform előnyei: „három link” - terheléselosztás, az adatbázis nyitottsága (hivatalosan az 1C cég elhárítja a felelősséget minden adatsérülésért, ha SQL adatbázis nem a platformjuk vagy a szerverük révén történtek változtatások, de ez kevés embert állít meg), a korlátozások hiánya.

Hátrányok - ár: külön kell vásárolnia kliens licenceket minden ügyfélszámítógéphez, külön - egy licencet az 1C szerverhez, külön licencet az SQL szerverhez, ha nem használja az ingyeneset. Ezenkívül néha nehézségek merülnek fel az adatbázis működésében. Sokkal gyorsabban megoldódnak az adatok elérhetősége és az adatbázissal való munkavégzéshez szükséges külső eszközök elérhetősége miatt. Ezenkívül ebben az esetben készítsen biztonsági másolatot az adatbázisról.

Közös előny a konfigurációs kód sokoldalúsága: néhány kivételtől eltekintve a fájladatbázishoz kifejlesztett konfiguráció szerveradatbázison is működik, és fordítva. Kivétel például a változó érték átadása a szervernek vagy a szerverről a kliensnek (a fájl verzióban ez nem okoz kivételt, de a kliens-szerver verzióban ez tilos).

Egy másik plusz: a platform telepítése nagyon egyszerű, valami ilyesmi: „Next-Next-Next-Ok”, nincs szükség finomhangolásra vagy komponensek telepítésére.

A szerververzióhoz van még néhány beállítás, de minden a telepítési párbeszédpanelen történik, és nem kell semmit megadni külön fájlokat. Az SQL szerver telepítése kissé nehézkes lehet, mert... ebben az esetben sokkal több beállítás van (és a finomhangoláshoz tanulmányozni kell további utasításokat). De ez nem vonatkozik az 1C platform problémáira. Sőt, ha például telepít egy MS SQL szervert az összes alapértelmezett beállítással, akkor az 1C képes lesz dolgozni vele.

Ez több, mint könyvelés

Ami az 1C platformot illeti, azt elsősorban számviteli programként mutatják be. Valójában ez az 1C platform legnépszerűbb felhasználási területe. De az 1C nem csak könyvelésből él!
A platformot ismerők azt mondják, hogy ez egy könyvelési (számviteli automatizálási) rendszer. Ez közelebb áll az igazsághoz - számos konfiguráció létezik, mind az 1C-től, mind a harmadik féltől származó fejlesztőktől. Némelyik csak közvetve kapcsolódik a számvitelhez, van amelyik egyáltalán nem.

Általánosságban elmondható, hogy helyesebb az 1C platformot héjként elképzelni egy adatbázis, interfész és programozás objektummodelljéhez az 1C nyelven. Az egyetlen korlátozás az, hogy minden konfigurációhoz saját adatbázis jön létre, és csak egy (azonban lehetőség van a konfiguráció részeként további csatlakozásra külső források adatok, azaz egyéb alapok).

Ökoszisztéma programozóknak

Tekintsük most az 1C nyelvet és platformot a fejlesztő szemszögéből:
Adatbázis objektum modell. Először is, nem dolgozunk közvetlenül adatbázisokkal. Nem szükséges. Kényelmünk érdekében minden adatot egymással összekapcsolt objektumok (könyvtárak, dokumentumok, információs regiszterek, felhalmozási regiszterek, ...) formájában jelenítünk meg, és a platform automatikusan „kiveszi” ezeket az adatokat az adatbázisból.
Például feltéve, hogy a „Nómenklatúra elem” változó hivatkozást tartalmaz a „Nómenklatúra” címtárelemre, a „Nómenklatúra” könyvtár a „Fő szállító” attribútummal rendelkezik, típusa „Directory.Counterparties”, a „Counterparties” könyvtár pedig „Teljes név” attribútum, majd a kód:

Nómenklatúra elem. Fő szállító. Teljes név
... arra készteti az 1C platformot, hogy belső mechanizmusok segítségével megtalálja a táblázatban a „Counterparties” könyvtárnak megfelelő rekordot a cikk „Fő szállító” mezőjéből származó azonosító alapján, és visszaadja a megfelelő mező értékeit. a „Teljes név” mezőbe a „Counterparties” könyvtár objektummodelljében.

Sok ilyen dereferencia lehet – a rendszer képes kezelni. Az egyetlen figyelmeztetés az, hogy a rendszer nem tudja, hogyan kell optimalizálni a dereferenciákat, ezért törekedni kell arra, hogy mindenféle hurkon kívülre helyezze őket.

Az adatokat leíró objektumok mellett rengeteg rendszerobjektum létezik - különféle funkciókhoz. Ezek közül kiemelek néhányat:

Értéktárak
Sor- egy objektum, amely egy adatkészletet tárol, szemben a tömbök klasszikus ötletével. Ez lehet adat különféle típusok(szám, karakterlánc, hivatkozás, egyéb objektum). Minimális funkcionalitással rendelkezik, és főleg ideiglenes konténerként használják az értékek más üzletek közötti átvitelére.

ListValues- elsősorban a felhasználói felülettel való munkavégzésre szolgáló objektum. Az adatokon kívül minden elemhez tartalmazhat egy reprezentációt, egy flag attribútumot és egy képet (ikont). Rendelkezik a “SelectElement()” és a “MarkElements()” metódusokkal is – meghívásakor a felhasználónak megjelenik egy interfész párbeszédpanel (ami kényelmes – nem kell létrehozni ezt a párbeszédablakot a konfigurációban).

SzerkezetÉs Levelezés- párosított értékek tárolása „KeyIValue”. A szerkezetben a „Kulcs” egy karakterlánc, amely követi az 1C változók elnevezésére vonatkozó szabályokat (nincs szóköz, nem kezdődik számmal, csak betűkből, számokból és aláhúzásjelből áll). Eszerint - „Kulcs” bármilyen érték. Az objektumok leggyorsabb keresése összhangban történik (gyorsabb, mint egy tömbben és egy indexelt értéktáblázatban).

Értéktáblázat- nagyon kényelmes és meglehetősen gyors objektum adatok tárolására és feldolgozására. Az értéktáblázat oszlopai a rekordok számától függetlenül hozzáadhatók és törölhetők. Ebben az esetben a sorokban lévő adatok nem vesznek el (vagy csak a törölt oszlopoknak megfelelő cellák adatai törlődnek). Ezenkívül rendelkezik a „SelectRow()” metódussal, amely meghívja a sorkiválasztó párbeszédablakot. Vannak indexek.

Értékek fája- hierarchikus adatokat reprezentáló objektum. Oszlopokat tartalmaz; az oszlopok halmaza minden szinten azonos minden rekordnál. Az oszlopok eltávolítása/hozzáadása az értékfában ugyanolyan egyszerű, mint az értéktáblázatban. Ezenkívül rendelkezik a „SelectRow()” metódussal.

Interfész objektumok és objektumok különféle adatokkal való munkavégzéshez TextDocument, SpreadsheetDocument, webböngésző, ReadFile, WriteFile, ReadZIPFile, WriteZIPFile, ReadXML, WriteXML, HTTPRequest és még sok más objektum, és a konfigurátor mindenhez beépített súgót tartalmaz. A felsorolt ​​objektumok célja a nevükből egyértelműen kiderül, és mindez azonnal elérhető a platformon.

Külön meg kell jegyezni, hogy van egy „Metaadat” objektum - amelynek segítségével programozási nyelven tanulmányozhatja az adatok szerkezetét, valamint minden hivatkozást vagy objektumot egy könyvtárhoz, dokumentumhoz, diagramhoz. számlák stb. létezik egy „Metadata()” metódus – ennek a kézikönyvnek/dokumentumnak/számlatáblázatnak/stb. az adatbázisban (milyen részletek, táblázatos részek állnak rendelkezésre, kód/szám hossza stb.). Gyakran nagyon kényelmes.

És külön meg kell említenünk az objektumokat is: „Lekérdezés”, „Lekérdezés konstruktor”, „Lekérdezéskészítő”, „Jelentéskészítő”, „Adatösszetételi séma”. Ez a család objektumkészletet valósít meg a hatékony 1C lekérdezési nyelvvel való munkavégzéshez.

Lekérdezési nyelv. Az 1C lekérdezései csak adatminta lekérésére használhatók, kényelmes kiválasztással, rendezéssel és csoportosítással. Első közelítésképpen ez a „SELECT” operátor az SQL-ből oroszra fordítva, azonban az 1C lekérdezési nyelvnek is van olyan funkciója, amely hiányzik az SQL-ből, nevezetesen:

  • Munkavégzés 1C konfigurációs objektumokkal SQL táblák helyett;
  • Munka hivatkozásokkal SQL azonosító mezők helyett;
  • Támogatás a hivatkozás megszüntetéséhez, hasonlóan ahhoz, ahogy a kódban történik;
  • Kiválasztás csoportba foglalással (könyvtárak esetén);
  • Hierarchikus összegek;
  • Ideiglenes táblák és beágyazott lekérdezések (SELECT * FROM (SELECT ...)));
  • A Query Builder egy kényelmes, objektum alapú, automatikusan optimalizáló lekérdezési szöveg a gyors olvasáshoz, amely képes a lekérdezés szövegét elemezni (lekérdezés szövegét elemezni és objektummodellt építeni belőle);
  • A jelentéskészítő a lekérdezési mechanizmus kiegészítője, amely funkciókkal bővíti az eredmények automatikus formázását, valamint magának a lekérdezésnek a rugalmas konfigurálását „Vállalati” módban (azaz a felhasználó által). Ennek eredményeként megjelent egy univerzális jelentés a szabványos 1C platformokon, amelyben a felhasználó beállíthatja, hogy milyen adatokat és milyen sorrendben akarja látni, hogy mi van a sorokban és mi az oszlopokban, és maga a jelentés generálja a kimeneti táblát. ;
  • A DCS (Data Composition System) a következő modell, amely magában foglalja az univerzális jelentés funkcióit, és kiegészíti azt néhány funkcióval az eredmények feldolgozásához.

Programozási nyelv
Szintaxis szempontjából az 1C nyelv hasonló az „orosz Pascalhoz”, de eltér a „Pascal”-tól kevésbé szigorúságban és néhány konstrukció hiányában:

  • Nincs szükség változók deklarálására - közvetlenül a modul szövegében inicializálhatja őket;
  • A változóknak nincs szigorú beírása. A rendszernek vannak értéktípusai, de a változókra nincsenek szigorú gépelési szabályok. A hivatkozást tároló változó néhány sornyi kód után már tárolhat egy számot vagy karakterláncot;
  • Változókat adhat hozzá értékekkel különböző típusok, ebben az esetben az eredmény típusa megegyezik az első változó típusával, például:
    k = „25”+1; // k = „251”, nem 26
  • A különböző típusú értékeket tartalmazó változók összehasonlíthatók egyenlőség vagy egyenlőtlenség szempontjából (de nem többre vagy kevesebbre, ez kivételt okoz) - természetesen az ilyen változók nem egyenlőek;
  • Vannak függvények és eljárások, megengedett a rekurzió használata (a rekurzió mélységének korlátozásával);
  • Függvény vagy eljárás paraméterek nélküli megadásakor továbbra is szükséges az üres zárójelek feltüntetése a végén: like this();
  • Vannak modulok: minden könyvtárban és dokumentumban több van belőlük, ezen kívül a regiszterek, jelentések és feldolgozások, valamint minden űrlap rendelkezik modulokkal, valamint a konfiguráció részeként lehetőség van közös modulok létrehozására is;
  • Nincsenek osztályok, öröklődés, tokozás, polimorfizmus;
  • Függvény nem adható át referenciaként, nincsenek névtelen függvények;
  • Nincs fordított hurok (i:=5 esetén 1 do-ig), de rekordok törlésekor valóban szükség van rá. Beérünk egy kicsit hosszabb bejegyzéssel a „Bye” cikluson keresztül.

Eszközök

  • Az 1C platform képes feltölteni és letölteni egy konfigurációt, összehasonlítani egy konfigurációt egy másik konfigurációval, és részben letölteni a változtatásokat;
  • Lehetőség van a modulszövegek kötegelt feldolgozásra történő letöltésére és visszatöltésére a konfigurációba;
  • Ha a konfiguráció támogatott (kezdetben az 1C összes konfigurációja támogatott), akkor mindig összehasonlíthat, és megnézheti, mit változtattak a külső fejlesztők vagy a helyi szakemberek;
  • Lehetőség van a teljes adatbázis feltöltésére/letöltésére is (adatokkal együtt);
  • Egy konfiguráción végzett kollektív munkához konfigurációs adattárat használnak;
  • Számos szabály létezik a szabványos konfigurációk módosítására is; van még egy dokumentum az 1C-től, amely leírja a szabványos konfigurációk (és bármely más) megváltoztatásának módszereit és szabványait.

Általános benyomás
Az 1C nyelv egyesíti a Pascal nyelvi szövegek tisztaságát a BASIC nyelvi változókkal való munka könnyelműségével. Számos jellemző tulajdonság hiányzik belőle modern nyelvek programozást, de meg tudod csinálni nélkülük is. Ezen kívül az 1C platform egy erős szemétgyűjtővel rendelkezik, pl. nincs szükség például a táblák használat utáni törlésére vagy törlésére.

Interfész 1C Enterprise 8.2

Az 1C cég kiemelt figyelmet fordított programja felületére. Először is - ez szín paletta. Ő gyönyörű! A programablak messziről is felismerhető, és sok éves munka után - nem keltenek ellenséges érzelmeket, ellenkezőleg - azt szeretném, ha minden program ugyanolyan menő lenne.
Ugyanakkor a platform stílusa nagyon szigorú, sallangok és egyéb sallangok nélkül. Ugyanakkor van nagyon hasznos funkciókat például az ablakok méretének emlékezése (a méreteket csak akkor jegyzi meg a rendszer, ha a felhasználó megváltoztatja őket, ugyanakkor az Alt+Shift+R billentyűkombinációval mindig visszaállíthatja a felhasználói beállításokat az alapértelmezett méretekre és pozíciókra ).
A 8.2-es webes kliens felület számos panaszt okoz, de úgy tűnik, hogy a 8.3-as platform egy új, újratervezett felületet, a „Taxit” hoz magával.

Árak, kereslet és kínálat, franchise

Az 1C platform „legfinomabb” előnye az ára. Ez különösen igaz most, válság idején. Hiszen az 1C teljesen a mi, hazai termékünk. És a mi fából is áruljuk. Egy külföldi gyártó ilyen megoldásai sok pénzbe kerülnek. És az 1C licencei meglehetősen ésszerűek.

Ezenkívül az 1C-nek érdekes licencpolitikája van. Magukat a licenceket és konfigurációkat egyszer kell megvásárolni. Ezzel egy időben a licenceket is megvásárolják munkahelyés a szerverre, de nem az adatbázisokra, és még csak nem is a kapcsolatokra, pl. egy licenc alatt ugyanaz a felhasználó korlátlan számú 1C munkamenetet indíthat el, tetszőleges számú adatbázissal dolgozva. Ugyanez vonatkozik a konfigurációkra is: egy konfigurációhoz egy licenc megvásárlásával egy szervezet tetszőleges számú adatbázis létrehozására használhatja fel, sőt hatóságilag engedélyezett ezen konfiguráció kódjának és objektumainak felhasználása saját konfigurációk fejlesztése során (pl. ebben az esetben a saját konfigurációik eladhatók/átruházhatók - azzal a kikötéssel, hogy használatukhoz konfigurációt kell vásárolni az 1C).

Ezt az egyszeri vásárlást követően már csak évente egyszer kell frissítésekre előfizetni és fizetni az előfizetés megújítását, az ún. ITS. Az előfizetés egyébként nagyon olcsó, nagyjából annyi, mint két klienslicenc.

Összességében mindez nagyon jövedelmezőnek tűnik.

A második „ízletes”, de nagyon finom, ráadásul meglehetősen univerzális konfigurációk jelenléte magától az 1C-től és a partnerektől.

A sokoldalúságról

A „sokoldalúság” fogalmát egy iskolai tanár határozta meg az NVP-n a gázálarcok példájával: vannak univerzálisak, amelyek sok ellen védenek. károsító tényezők, de a védettség mértéke átlagos vagy az alatti, és vannak speciális gázálarcok is, amelyek egy ütközés ellen védenek, de magas fokú védelemmel. Eddig nem találkoztam pontosabb meghatározással.
Az 1C konfigurációi pedig univerzálisak. A gyakorlatban nincs olyan feladat, ahol módosítások nélkül teljes mértékben használhatóak lennének. Ennek ellenére az 1C-nek sikerült létrehoznia egy univerzális eszközkészletet, amely lefedi a modern üzleti szektor legtöbb ágazatának igényeit.


A harmadik előny (és egyben a leggyorsabban is) a franchise-ok és képzési központok hálózata, mind a felhasználók, mind a kezdő programozók és rendszergazdák számára. Jó ötlet, de a megvalósítás minősége nagyon közepes. Azonban az elterjedtség és az agresszív marketing az egyik oka az 1C széles körű népszerűségének hazánkban (és ez az oka a negativitásnak, az irigységnek és a gyűlöletnek is).

Egy kanál kátrány

Miután az 1C-t minden színében leírtuk, igazságtalan lenne nem beszélni a hiányosságairól, de ott vannak:

Instabil kiadások- mind a platformon, mind a konfigurációkban hatalmas számú hiba és hiba található. És ez a hivatalos kiadásokban van. Mielőtt elengeded hivatalos verzió, az „Evaluation Version” kiadása folyamatban van. Vannak még Visszacsatolás hibaleírásokat benyújtani, hogy azok javításra elfogadhatók legyenek. Azonban vagy a próbaverziók nem túl népszerűek, vagy magának az 1C cégnek nincs ideje feldolgozni az összes levelet a megjelenési dátumig, de ez tény. Minden alkalommal, amikor frissít egy platformot vagy konfigurációt, a legváratlanabb „meglepetésekbe” botlhat. Az 1C-t már többször felszólították, hogy alaposabban tesztelje fejlesztéseit.

Franchise (a továbbiakban: franchise átvevő). Ideális esetben a terveknek megfelelően képzett szakemberekkel rendelkező cégeknek kellett volna lenniük, akik ismerik a konfigurációk és platformok működésének alapelveit. Ugyanezen cégeknek el kell adniuk a platformot, a konfigurációt és a támogatást, kissé „be kell fejezniük” az univerzális konfigurációkat, hogy megfeleljenek az ügyfél igényeinek (és időnként módosítaniuk kell ezeket a követelményeket), megpróbálva minimálisan módosítani a szabványos konfigurációt. Hogy ne bonyolítsuk túlságosan a jövőbeli frissítéseket. De a valóságban ennek az ellenkezője igaz.

Amikor új licenceket adnak el egy ügyfélnek, a franchise-vevők költségük 50%-át kapják (mínusz ennek az 50%-nak a 13%-a jövedelemadó). Ugyanakkor nem kell semmit sem saját maga gyártania, csak át kell adnia az 1C kulcsait a vevőnek.

Szolgáltatásnyújtáskor a franchise-vevők nem fizetnek semmit az 1C cégnek (kivéve a tagsági díjat), de ki kell fizetniük az alkalmazott fizetését. Az államnak pénzt is kell költenie adókra - a nyugdíjalapra és a jövedelemadóra.

Kiderült, hogy mind az 1C, mind a franchise-vevők számára nyereséges a licencek eladása, és veszteséges a további támogatás. Ugyanakkor ahhoz, hogy az ügyfél megvásárolhasson egy programot, először az igényeihez kell igazítania. És fizetni kell a munkáért. Itt pedig spórolás végett behoznak diákokat, szakmunkástanulókat, nem szakembereket, lehet picit fizetni, néha meg egyáltalán nem, nem is kell bejelenteni őket (nem hivatalosan fognak dolgozni) , szerencsére van mit fizetni). Az eredmény egy hatalmas számú eladás nagyon alacsony minőségben. A fejlesztések általában fontos mechanizmusokat érintenek, és megnehezítik a jövőbeni frissítéseket. De az értékesítési szakaszban sem az 1C-t, sem a franchise-t nem érdekli ez.

Megjegyzem, ez nem annyira a francia üzletemberek, mint inkább az 1C cég hibája. Az értékesítésre koncentrálva egyáltalán nem törődött a támogatással (most nem az iskolákra gondolok, hanem arra, hogy a támogatás nyújtása előnyös legyen magának a franchise cégnek és az 1C-nek is).

Technikai támogatás. Az 1C vállalat felfogása szerint a technikai támogatás a platform és a konfigurációk „frissítési” szakaszához, valamint az 1C működésének egyes mechanizmusainak és jellemzőinek leírását tartalmazó információs szakaszokhoz való hozzáférés biztosítása. Ezen kívül, ha előfizet, kap egy lemezt a megadott anyagokkal. Van egy fórum is (a népszerűekhez képest nagyon csekély). Lehetőség van arra is, hogy e-mailt küldjön az 1C cégnek - de anélkül, hogy azt remélné, hogy válaszolnak rá (vagy a robot azt válaszolja: „A levelet elküldtük a fejlesztési osztálynak.” A fejlesztés szempontjából a Yandex.Search ill. a konfigurátorba épített súgó sokkal nagyobb támogatást nyújt.

Epilógus

2008-ban váltottam az 1C-re, előtte egy saját számviteli programot fejlesztő cégben dolgoztam (Delphi 5, majd Delphi 7). Először is megismerkedtem az 1C Enterprise 7.7 platformmal, és megdöbbentett a jelentéskészítés egyszerűsége. Ugyanakkor egyértelmű volt, hogy a jelentések sokkal hosszabb ideig készültek, mint a Delphi hasonló mechanizmusaiban, de a könyvelőket ez nem különösebben aggasztja. Néhány másodperc helyett néhány percet várni nem jelent problémát. Ellenkezőleg, ott kifestheti a körmét, inni teát vagy beszélgetni utolsó hír a munka megállása nélkül. Hiszen manapság a könyvelők túlnyomó többsége nő.
A 7.7-es interfész azonban nagyon korlátozott volt, és az objektumok halmaza nagyon gyenge. Alternatívákat kerestem. Találkozott külső alkatrészek, de gyakorlati alkalmazásig nem jutottak el, mert a főnök úgy döntött, ideje váltanunk 8.1-re (igen, 8.2 még nem volt), és ezen a platformon programozóként mindent megtaláltam, ami korábban hiányzott.
Jelenleg tekintélyem van a kollégák körében, valamint a franchise-tól érkezett ügyfelek között. Valószínűleg soha többé nem lépnek kapcsolatba a franciákkal.


Általában véve nagyon elégedett vagyok az 1C Enterprise 8 platformon végzett munkával. A legtöbb könyvelési és adatbázis-probléma megoldására alkalmas.

Címkék:

  • programozási nyelvek oroszul
  • 1C
  • 1C programozás
Címkék hozzáadása

Az 1C programozási nyelv egy formális jelrendszer, amelyet számítógépes programok rögzítésére terveztek. A programozási nyelv lexikai, szintaktikai és szemantikai szabályok összességét határozza meg, amelyek meghatározzák a program megjelenését és azokat a műveleteket, amelyeket az előadó (számítógép) végrehajt az irányítása alatt.

Az 1C Enterprise 8 platform teljes funkcionalitással rendelkezik a saját megoldások fejlesztéséhez a fejlesztő számára. A fő fejlesztőeszköz az 1C 8.3 beépített programozási nyelv.

Új osztályok programozott létrehozása az 1C 8.3 nyelven tilos. Mivel az 1C Enterprise platform könyvelési feladatokra specializálódott, az osztályok összetétele előre meghatározott:

  • stb.

A szabványos osztályok alapján tetszőleges számú alosztályt hozhat létre, amelyek saját halmazokkal rendelkeznek. A menedzser modulok segítségével kis mértékben bővítheti az alosztály funkcionalitását.

Nehéz az 1C programozási nyelv?

A kérdés meglehetősen ellentmondásos és viszonylagos. Ha más nyelvekhez viszonyítva tekintjük, talán egy kicsit egyszerűbbnek tűnik. Magán a programozáson kívül azonban meg kell tanulnia a tárgykört - számvitel, termelés, adószámfejtés stb., amelyek együttesen az 1C programozási nyelvet nem olyan egyszerűvé teszik, mint amilyennek első pillantásra tűnik.

Ha komoly tapasztalattal rendelkezett más domain-orientált programozási nyelvekben, mielőtt megismerte volna az 1C-t, akkor nem lesz nehéz megértenie a 8.2 bonyolultságát, a lényeg a vágy. Mindössze egy jó oktatóanyagot kell találnia az 1C programozási nyelvről.

Az 1C nyelv orosz szintaxisa

Ebben a cikkben megvizsgáljuk az 1C programozási nyelv olyan felépítését, mint Ciklusok.

A hurkok szervezésének három módja van.

  1. Logikai kifejezést használó hurkok (végrehajtása mindaddig, amíg a logikai kifejezés igaz)
  2. Gyűjtemények között böngészni

Nézzük meg ezeket a módszereket.

Hurok egy hurokszámláló változót használva

Szintaxis:

Mert< Переменная> = < НачальноеЗначение>Által< КонечноеЗначение>CycleEndCycle;

Ezzel a ciklusszervezési módszerrel a számlálóváltozóhoz egy bizonyos kezdeti értéket rendelnek, és addig hajtják végre, amíg a számlálóváltozó értéke kisebb vagy egyenlő nem lesz a megadott végső értéknél.

Minden iterációnál a számláló értéke eggyel nő. Íme egy ilyen hurok legalapvetőbb példája:

Számláló esetén = 0-tól 1000-ig Cycle EndCycle;

Sok más programozási nyelvtől eltérően az 1C nem biztosítja a ciklus lépéseinek megadását. Ha szükséges, ezt megtehetjük úgy, hogy a hurkon belüli számlálóhoz hozzáadjuk a kívánt értéket

Számláló esetén = 0 - 1000 Ciklusszámláló = Számláló + 10 ; EndCycle ;

Logikai kifejezéseket használó hurkok

Szintaxis:

Viszlát< ЛогическоеВыражение>CycleEndCycle;

Refuse = False ; GeneratorRandom = NewRandomNumberGenerator(1) ; Hibaciklusig RandomNumber = GeneratorRank. Véletlenszám(0, 10); Ha RandomNumber > 5, akkor Failure = True; EndIf ; EndCycle ;

Vagyis a ciklus addig fut, amíg ötnél nagyobb véletlenszámot nem generálunk.

Gyűjtemények között böngészni

Az 1C programozási nyelvben van olyan dolog, mint egy gyűjtemény. Ez egy objektumon belüli elemek halmaza.

Gyűjteményként ilyen objektumokat is felvehetünk: tömböt, értéktáblázatot, kijelölést a lekérdezés eredményéből, metaadatokat stb. Ez a fogalom meglehetősen hagyományos, de a szintaktikai asszisztens minden lépésében megjelenik. Nagyon gyakran találkozunk olyan feladattal, amikor egy gyűjtemény összes elemén egymás után kell végigfutnunk, hogy végrehajthassunk rajtuk bizonyos műveleteket. Erre van egy szintaktikai szerkezet:

Az egyes< ЭлементКоллекции>Tól től< Коллекция>CycleEndCycle;

Itt <ЭлементКоллекции> egy olyan változó, amelybe a gyűjtemény elemei egymás után kerülnek. A hurkon belül pedig ennek megfelelően kerül feldolgozásra.
Példaként adok egy hurkot egy értéktáblázat sorainak bejárására. Hadd hívják TáblázatTermékekés így néz ki:

Menjünk végig ezen a táblázaton egy hurokban, és minden sorban megjelenik egy üzenet a termék nevével és árával:

Az egyes táblázatsorokhoz a táblatermékekből Ciklusnév = Táblázatsor. Név; Ár = TableRow. Ár; Üzenet = New MessageToUser; Üzenet. Szöveg = "Termék neve:"

Valójában ugyanez megtehető az első opció használatával, azaz ciklusban egy számláló segítségével:

Sorok száma = TableProducts. Mennyiség() ; Számláló esetén = 0 a sorok számával - 1 ciklus táblázat sor = táblázattermékek[ számláló] ; Név = Táblázat sor. Név; Ár = TableRow. Ár; Üzenet = New MessageToUser; Üzenet. Szöveg = "Termék neve:"+ Név + "; Ár: " + Ár; Üzenet. Jelenteni() ; EndCycle ;

De mint látjuk, a gyűjteményelemek bejárása sokkal egyszerűbb és kényelmesebb

Segédkezelők

Gyakran előfordul olyan helyzet, hogy valamitől függően meg kell szakítani egy ciklus végrehajtását, vagy tovább kell lépni a következő iterációtól.

A megszakítás a kezelő segítségével történik Elvetél. Ebben az esetben a ciklus végrehajtása megszakad, és a vezérlés átkerül a ciklust követő nyelvi konstrukcióra. Ha a következő iterációra kell lépnie, akkor az operátort kell használnia Folytatni. Ezután a vezérlés átkerül a hurok elejére. Illusztráljuk egy kis példával:

Ha számláló = 0 100-zal Ciklus Ha számláló = 0, akkor folytassa; EndIf ; Ha Számláló = 4 Akkor Megszakítás ; EndIf ; Eredmény = 1 / Számláló; Üzenet = New MessageToUser; Üzenet. Szöveg = String(Eredmény) ; Üzenet. Jelenteni() ; EndCycle ;

A nullát kihagyjuk, mert Nem lehet nullával osztani. És a ciklus összesen ötször lesz végrehajtva a változó értékeihez Számláló 0-tól 4-ig

Ha SI-ben írod
Legyen legalább háromszor béna
Azt mondják erről:
– Menő programozó!
(Fidosh dalok - "Mi a Suxxx és mi a Rulezzz")

Előszó

A cikk megírásának oka a szakmai közösség negatív hozzáállása ehhez a platformhoz és a programozókhoz.

Mint programozó, aki az 1C-t választotta, ezt a véleményt alaptalannak tartom. Az 1C platform messze nem ideális, de véleményem szerint a legjobb, és ami a legfontosabb, hazai termék!

És még inkább, nem megfelelő egy programozó képességeit a nyelv alapján megítélni, amelyen ír.

Ebben a cikkben leírom azokat az előnyöket, amelyeket magamnak találtam a programban. A cikkből szinte reklám lesz, ezért íme egy nyilatkozat:

  • Nincs közvetlen kapcsolatom az 1C céggel;
  • Ez a cikk nem megrendelésre készült, és kizárólag önkéntes alapon íródott;
  • Esetenként személyes vélemények is elhangzanak, amelyek nem feltétlenül esnek egybe...;
  • Az egész cikk, a prológus kivételével, a szerzőé, minden véletlen egybeesés véletlen;
  • Az 1C Enterprise 8.2 platformról fogunk beszélni (jelenleg a 8.3 verzió a jelenlegi, de még nem tanulmányoztam - sok munka van az 1C 8.2-n). Az elmondottak többsége azonban mind a 8.3-as platformra, mind a korábbi verziókra vonatkozik, részben pedig a 7.7-es verzióra.
Tehát kezdjük.

Miről beszélünk?

Az 1C Enterprise 8 platform a következő:
  • Két változatban működik - fájl és szerver (három linkes) - mindegyiknek megvannak a maga előnyei és hátrányai;
  • Független könyvelési rendszer, amely könnyen telepíthető és konfigurálható;
  • Erőteljes ökoszisztéma programozók számára az összes szükséges tárggyal és eszközzel;
  • Szép ergonomikus felület;
  • Viszonylag olcsó megoldás üzleti célokra;
  • Franchise hálózat, alapképzés;
  • Az évek során felhalmozott fejlesztések és tudás erőteljes bázisa;
  • Időnként problémás platform a rendszergazdák számára;
  • Nem az algoritmusok leggyorsabb végrehajtása (bár nem a leglassabb) - ez tisztelgés az információtartalom előtt (hiba esetén a sorszám és annak tartalma feltüntetésre kerül);
  • A programozási nyelvben nincsenek osztályok (öröklődés, tokozás, polimorfizmus), nincsenek névtelen függvények és egyéb modern funkciók. De a legtöbb probléma megoldásához ez nem szükséges!
A könyvelés megszervezéséhez egy platform nem elég. A platform egyfajta „motor”, köztes kapcsolat a program és az adatbázis között. Az ehhez a „motorhoz” tartozó programokat konfigurációknak nevezzük. A konfiguráció objektumok, külön modulokban tárolt eljárásszövegek formájában írja le az adatbázis felépítését (sok modul van, mindegyik objektumnak és a rendszer egészének is van ilyen, és vannak közös modulok is). A platform olyan absztrakciós szintet biztosít, amelyben nincs szükség az adatbázishoz való közvetlen hozzáférésre, és lehetővé teszi az absztrakciót az operációs rendszertől és az adatbázis típusától is.

Fájl és szerver adatbázis

A platform több részből áll, és működhet fájl vagy szerver verzióban.

A fájl verzióban a teljes adatbázis egy fájlban található ("1cd" kiterjesztéssel) - a platform minden számítógépre telepítve van, és közvetlenül olvas/ír az adatbázisba.

A fájl opció előnyei az alacsony ár és a könnyű üzembe helyezés.

Hátrányok - az „1cd” fájlszerkezet zárva van, nincs egyetlen rendszer, amely kölcsönhatásba lép az adatbázissal. Ennek eredményeként nehéz használni nagy számú felhasználóval (20+ felhasználónál próbáltam ki - működhet). Ezenkívül, ha az adatbázis mérete körülbelül 15 GB (vagy több), a dinamikus frissítések meghiúsulhatnak. Az ilyen hibák megoldása nehéz feladat, és az adatbázis-javító segédprogram nem mindig javítja hatékonyan, sőt néha meg is bénítja az adatbázist.

Van megoldás – mindenekelőtt napi adatbázis-mentés beállítása. Ezenkívül a kézművesek nemcsak az 1cd fájlformátumot teszik közzé, hanem segédprogramokat is kifejlesztettek az ilyen fájlokkal való munkavégzéshez, és számos módszert az ilyen problémák megoldására.

A szerver verzióban az adatbázis tárolására szolgáló platform egy SQL szervert (általában MS SQL-t, de 8.2.14-től kezdődően – használhat másokat is, például Firebird PostgreSQL, IBM DB2, Oracle Database), és magát a platformot. háromszintű architektúrát használ:

A kód egy része a kliensen, egy része a szerveren fut le. Ebben az esetben csak a szerver kommunikál az adatbázissal. Ugyanakkor a 8.2-es verziótól kezdve a szabványos működési mód mellett, amelyet „vastag kliens” módnak neveztek, két új üzemmód jelent meg - a „vékony kliens” és a „webkliens”; Megjelentek az „ellenőrzött formák” is, amelyek megjelenése az elemek absztrakt fája formájában épül fel. A felügyelt űrlapok és a háromszintű architektúra programozása nehezebb, de ez lehetővé teszi szinte a teljes terhelés átvitelét a szerverre (vagyis vásárolhat egy nagy teljesítményű szervert és száz legolcsóbb irodai számítógépet).

A platform előnyei: „háromszintű” - terheléselosztás, az adatbázis nyitottsága (hivatalosan az 1C elhárítja a felelősséget minden adatsérülésért, ha az SQL-adatbázist nem a platformjukon vagy szerverükön keresztül változtatták meg, de ez kevés embert állít meg), korlátozások hiánya.

Hátrányok - ár: külön kell vásárolnia kliens licenceket minden ügyfélszámítógéphez, külön - egy licencet az 1C szerverhez, külön licencet az SQL szerverhez, ha nem használja az ingyeneset. Ezenkívül néha nehézségek merülnek fel az adatbázis működésében. Sokkal gyorsabban megoldódnak az adatok elérhetősége és az adatbázissal való munkavégzéshez szükséges külső eszközök elérhetősége miatt. Ezenkívül ebben az esetben készítsen biztonsági másolatot az adatbázisról.

Közös előny a konfigurációs kód sokoldalúsága: néhány kivételtől eltekintve a fájladatbázishoz kifejlesztett konfiguráció szerveradatbázison is működik, és fordítva. Kivétel például a változó érték átadása a szervernek vagy a szerverről a kliensnek (a fájl verzióban ez nem okoz kivételt, de a kliens-szerver verzióban ez tilos).

Egy másik plusz: a platform telepítése nagyon egyszerű, valami ilyesmi: „Next-Next-Next-Ok”, nincs szükség finomhangolásra vagy komponensek telepítésére.

A szerver verzióhoz van még néhány beállítás, de minden a telepítési párbeszédpanelen történik, és nem kell semmit külön fájlba írni. Az SQL szerver telepítése kissé nehézkes lehet, mert... ebben az esetben sokkal több beállítás van (és annak finomhangolásához további utasításokat kell tanulmányoznia). De ez nem vonatkozik az 1C platform problémáira. Sőt, ha például telepít egy MS SQL szervert az összes alapértelmezett beállítással, akkor az 1C képes lesz dolgozni vele.

Ez több, mint könyvelés

Ami az 1C platformot illeti, azt elsősorban számviteli programként mutatják be. Valójában ez az 1C platform legnépszerűbb felhasználási területe. De az 1C nem csak könyvelésből él!
A platformot ismerők azt mondják, hogy ez egy könyvelési (számviteli automatizálási) rendszer. Ez közelebb áll az igazsághoz - számos konfiguráció létezik, mind az 1C-től, mind a harmadik féltől származó fejlesztőktől. Némelyik csak közvetve kapcsolódik a számvitelhez, van amelyik egyáltalán nem.

Általánosságban elmondható, hogy helyesebb az 1C platformot héjként elképzelni egy adatbázis, interfész és programozás objektummodelljéhez az 1C nyelven. Az egyetlen korlát az, hogy minden konfigurációhoz saját adatbázis jön létre, és csak egy (azonban lehetőség van külső adatforrások, azaz más adatbázisok további csatlakoztatására a konfiguráció részeként).

Ökoszisztéma programozóknak

Tekintsük most az 1C nyelvet és platformot a fejlesztő szemszögéből:
Adatbázis objektum modell. Először is, nem dolgozunk közvetlenül adatbázisokkal. Nem szükséges. Kényelmünk érdekében minden adatot egymással összekapcsolt objektumok (könyvtárak, dokumentumok, információs regiszterek, felhalmozási regiszterek, ...) formájában jelenítünk meg, és a platform automatikusan „kiveszi” ezeket az adatokat az adatbázisból.
Például feltéve, hogy a „Nómenklatúra elem” változó hivatkozást tartalmaz a „Nómenklatúra” címtárelemre, a „Nómenklatúra” könyvtár a „Fő szállító” attribútummal rendelkezik, típusa „Directory.Counterparties”, a „Counterparties” könyvtár pedig „Teljes név” attribútum, majd a kód:

Nómenklatúra elem. Fő szállító. Teljes név
... arra készteti az 1C platformot, hogy belső mechanizmusok segítségével megtalálja a táblázatban a „Counterparties” könyvtárnak megfelelő rekordot a cikk „Fő szállító” mezőjéből származó azonosító alapján, és visszaadja a megfelelő mező értékeit. a „Teljes név” mezőbe a „Counterparties” könyvtár objektummodelljében.

Sok ilyen dereferencia lehet – a rendszer képes kezelni. Az egyetlen figyelmeztetés az, hogy a rendszer nem tudja, hogyan kell optimalizálni a dereferenciákat, ezért törekedni kell arra, hogy mindenféle hurkon kívülre helyezze őket.

Az adatokat leíró objektumok mellett rengeteg rendszerobjektum létezik - különféle funkciókhoz. Ezek közül kiemelek néhányat:

Értéktárak
Sor- egy objektum, amely egy adatkészletet tárol, szemben a tömbök klasszikus ötletével. Ezek különböző típusú adatok lehetnek (szám, karakterlánc, hivatkozás, egyéb objektum). Minimális funkcionalitással rendelkezik, és főleg ideiglenes konténerként használják az értékek más üzletek közötti átvitelére.

ListValues- elsősorban a felhasználói felülettel való munkavégzésre szolgáló objektum. Az adatokon kívül minden elemhez tartalmazhat egy reprezentációt, egy flag attribútumot és egy képet (ikont). Rendelkezik a “SelectElement()” és a “MarkElements()” metódusokkal is – meghívásakor a felhasználónak megjelenik egy interfész párbeszédpanel (ami kényelmes – nem kell létrehozni ezt a párbeszédablakot a konfigurációban).

SzerkezetÉs Levelezés- párosított értékek tárolása „KeyIValue”. A szerkezetben a „Kulcs” egy karakterlánc, amely követi az 1C változók elnevezésére vonatkozó szabályokat (nincs szóköz, nem kezdődik számmal, csak betűkből, számokból és aláhúzásjelből áll). Eszerint - „Kulcs” bármilyen érték. Az objektumok leggyorsabb keresése összhangban történik (gyorsabb, mint egy tömbben és egy indexelt értéktáblázatban).

Értéktáblázat- nagyon kényelmes és meglehetősen gyors objektum adatok tárolására és feldolgozására. Az értéktáblázat oszlopai a rekordok számától függetlenül hozzáadhatók és törölhetők. Ebben az esetben a sorokban lévő adatok nem vesznek el (vagy csak a törölt oszlopoknak megfelelő cellák adatai törlődnek). Ezenkívül rendelkezik a „SelectRow()” metódussal, amely meghívja a sorkiválasztó párbeszédablakot. Vannak indexek.

Értékek fája- hierarchikus adatokat reprezentáló objektum. Oszlopokat tartalmaz; az oszlopok halmaza minden szinten azonos minden rekordnál. Az oszlopok eltávolítása/hozzáadása az értékfában ugyanolyan egyszerű, mint az értéktáblázatban. Ezenkívül rendelkezik a „SelectRow()” metódussal.

Interfész objektumok és objektumok különféle adatokkal való munkavégzéshez TextDocument, SpreadsheetDocument, webböngésző, ReadFile, WriteFile, ReadZIPFile, WriteZIPFile, ReadXML, WriteXML, HTTPRequest és még sok más objektum, és a konfigurátor mindenhez beépített súgót tartalmaz. A felsorolt ​​objektumok célja a nevükből egyértelműen kiderül, és mindez azonnal elérhető a platformon.

Külön meg kell jegyezni, hogy van egy „Metaadat” objektum - amelynek segítségével programozási nyelven tanulmányozhatja az adatok szerkezetét, valamint minden hivatkozást vagy objektumot egy könyvtárhoz, dokumentumhoz, diagramhoz. számlák stb. létezik egy „Metadata()” metódus – ennek a kézikönyvnek/dokumentumnak/számlatáblázatnak/stb. az adatbázisban (milyen részletek, táblázatos részek állnak rendelkezésre, kód/szám hossza stb.). Gyakran nagyon kényelmes.

És külön meg kell említenünk az objektumokat is: „Lekérdezés”, „Lekérdezés konstruktor”, „Lekérdezéskészítő”, „Jelentéskészítő”, „Adatösszetételi séma”. Ez a család objektumkészletet valósít meg a hatékony 1C lekérdezési nyelvvel való munkavégzéshez.

Lekérdezési nyelv. Az 1C lekérdezései csak adatminta lekérésére használhatók, kényelmes kiválasztással, rendezéssel és csoportosítással. Első közelítésképpen ez a „SELECT” operátor az SQL-ből oroszra fordítva, azonban az 1C lekérdezési nyelvnek is van olyan funkciója, amely hiányzik az SQL-ből, nevezetesen:

  • Munkavégzés 1C konfigurációs objektumokkal SQL táblák helyett;
  • Munka hivatkozásokkal SQL azonosító mezők helyett;
  • Támogatás a hivatkozás megszüntetéséhez, hasonlóan ahhoz, ahogy a kódban történik;
  • Kiválasztás csoportba foglalással (könyvtárak esetén);
  • Hierarchikus összegek;
  • Ideiglenes táblák és beágyazott lekérdezések (SELECT * FROM (SELECT ...)));
  • A Query Builder egy kényelmes, objektum alapú, automatikusan optimalizáló lekérdezési szöveg a gyors olvasáshoz, amely képes a lekérdezés szövegét elemezni (lekérdezés szövegét elemezni és objektummodellt építeni belőle);
  • A jelentéskészítő a lekérdezési mechanizmus kiegészítője, amely funkciókkal bővíti az eredmények automatikus formázását, valamint magának a lekérdezésnek a rugalmas konfigurálását „Vállalati” módban (azaz a felhasználó által). Ennek eredményeként megjelent egy univerzális jelentés a szabványos 1C platformokon, amelyben a felhasználó beállíthatja, hogy milyen adatokat és milyen sorrendben akarja látni, hogy mi van a sorokban és mi az oszlopokban, és maga a jelentés generálja a kimeneti táblát. ;
  • A DCS (Data Composition System) a következő modell, amely magában foglalja az univerzális jelentés funkcióit, és kiegészíti azt néhány funkcióval az eredmények feldolgozásához.

Programozási nyelv
Szintaxis szempontjából az 1C nyelv hasonló az „orosz Pascalhoz”, de eltér a „Pascal”-tól kevésbé szigorúságban és néhány konstrukció hiányában:

  • Nincs szükség változók deklarálására - közvetlenül a modul szövegében inicializálhatja őket;
  • A változóknak nincs szigorú beírása. A rendszernek vannak értéktípusai, de a változókra nincsenek szigorú gépelési szabályok. A hivatkozást tároló változó néhány sornyi kód után már tárolhat egy számot vagy karakterláncot;
  • Hozzáadhat változókat különböző típusú értékekkel, és az eredmény típusa megegyezik az első változó típusával, például:
    k = „25”+1; // k = „251”, nem 26
  • A különböző típusú értékeket tartalmazó változók összehasonlíthatók egyenlőség vagy egyenlőtlenség szempontjából (de nem többre vagy kevesebbre, ez kivételt okoz) - természetesen az ilyen változók nem egyenlőek;
  • Vannak függvények és eljárások, megengedett a rekurzió használata (a rekurzió mélységének korlátozásával);
  • Függvény vagy eljárás paraméterek nélküli megadásakor továbbra is szükséges az üres zárójelek feltüntetése a végén: like this();
  • Vannak modulok: minden könyvtárban és dokumentumban több van belőlük, ezen kívül a regiszterek, jelentések és feldolgozások, valamint minden űrlap rendelkezik modulokkal, valamint a konfiguráció részeként lehetőség van közös modulok létrehozására is;
  • Nincsenek osztályok, öröklődés, tokozás, polimorfizmus;
  • Függvény nem adható át referenciaként, nincsenek névtelen függvények;
  • Nincs fordított hurok (i:=5 esetén 1 do-ig), de rekordok törlésekor valóban szükség van rá. Beérünk egy kicsit hosszabb bejegyzéssel a „Bye” cikluson keresztül.

Eszközök

  • Az 1C platform képes feltölteni és letölteni egy konfigurációt, összehasonlítani egy konfigurációt egy másik konfigurációval, és részben letölteni a változtatásokat;
  • Lehetőség van a modulszövegek kötegelt feldolgozásra történő letöltésére és visszatöltésére a konfigurációba;
  • Ha a konfiguráció támogatott (kezdetben az 1C összes konfigurációja támogatott), akkor mindig összehasonlíthat, és megnézheti, mit változtattak a külső fejlesztők vagy a helyi szakemberek;
  • Lehetőség van a teljes adatbázis feltöltésére/letöltésére is (adatokkal együtt);
  • Egy konfiguráción végzett kollektív munkához konfigurációs adattárat használnak;
  • Számos szabály létezik a szabványos konfigurációk módosítására is; van még egy dokumentum az 1C-től, amely leírja a szabványos konfigurációk (és bármely más) megváltoztatásának módszereit és szabványait.

Általános benyomás
Az 1C nyelv egyesíti a Pascal nyelvi szövegek tisztaságát a BASIC nyelvi változókkal való munka könnyelműségével. Számos, a modern programozási nyelvekben rejlő funkció hiányzik belőle, de ezek nélkül is megteheti. Ezen kívül az 1C platform egy erős szemétgyűjtővel rendelkezik, pl. nincs szükség például a táblák használat utáni törlésére vagy törlésére.

Interfész 1C Enterprise 8.2

Az 1C cég kiemelt figyelmet fordított programja felületére. Először is ez a színpaletta. Ő gyönyörű! A programablak messziről is felismerhető, és sok éves munka után - nem keltenek ellenséges érzelmeket, ellenkezőleg - azt szeretném, ha minden program ugyanolyan menő lenne.
Ugyanakkor a platform stílusa nagyon szigorú, sallangok és egyéb sallangok nélkül. Ugyanakkor vannak nagyon hasznos funkciók, például az ablakok méretének emlékezése (a méreteket csak akkor jegyzi meg, ha a felhasználó megváltoztatja őket, és ezzel egyidejűleg bármikor visszaállíthatja a felhasználói beállításokat - a alapértelmezett méretek és pozíciók az Alt+Shift+R megnyomásával).
A 8.2-es webes kliens felület számos panaszt okoz, de úgy tűnik, hogy a 8.3-as platform egy új, újratervezett felületet, a „Taxit” hoz magával.

Árak, kereslet és kínálat, franchise

Az 1C platform „legfinomabb” előnye az ára. Ez különösen igaz most, válság idején. Hiszen az 1C teljesen a mi, hazai termékünk. És a mi fából is áruljuk. Egy külföldi gyártó ilyen megoldásai sok pénzbe kerülnek. És az 1C licencei meglehetősen ésszerűek.

Ezenkívül az 1C-nek érdekes licencpolitikája van. Magukat a licenceket és konfigurációkat egyszer kell megvásárolni. Ugyanakkor munkaállomásra és szerverre is vásárolnak licencet, de adatbázisra nem, és még kapcsolatokra sem, pl. egy licenc alatt ugyanaz a felhasználó korlátlan számú 1C munkamenetet indíthat el, tetszőleges számú adatbázissal dolgozva. Ugyanez vonatkozik a konfigurációkra is: egy konfigurációhoz egy licenc megvásárlásával egy szervezet tetszőleges számú adatbázis létrehozására használhatja fel, sőt hatóságilag engedélyezett ezen konfiguráció kódjának és objektumainak felhasználása saját konfigurációk fejlesztése során (pl. ebben az esetben a saját konfigurációik eladhatók/átruházhatók - azzal a kikötéssel, hogy használatukhoz konfigurációt kell vásárolni az 1C).

Ezt az egyszeri vásárlást követően már csak évente egyszer kell frissítésekre előfizetni és fizetni az előfizetés megújítását, az ún. ITS. Az előfizetés egyébként nagyon olcsó, nagyjából annyi, mint két klienslicenc.

Összességében mindez nagyon jövedelmezőnek tűnik.

A második „ízletes”, de nagyon finom, ráadásul meglehetősen univerzális konfigurációk jelenléte magától az 1C-től és a partnerektől.

A sokoldalúságról

A „sokoldalúság” fogalmát egy iskolai tanár az NVP-n a gázálarcok példáján definiálta: vannak univerzálisak, amelyek számos károsító tényező ellen védenek, de a védettség mértéke átlagos vagy az alatti, és vannak speciális gázálarcok is. amelyek egyetlen ütközés ellen védenek, de magas fokú védelemmel. Eddig nem találkoztam pontosabb meghatározással.
Az 1C konfigurációi pedig univerzálisak. A gyakorlatban nincs olyan feladat, ahol módosítások nélkül teljes mértékben használhatóak lennének. Ennek ellenére az 1C-nek sikerült létrehoznia egy univerzális eszközkészletet, amely lefedi a modern üzleti szektor legtöbb ágazatának igényeit.


A harmadik előny (és egyben a leggyorsabban is) a franchise-ok és képzési központok hálózata, mind a felhasználók, mind a kezdő programozók és rendszergazdák számára. Jó ötlet, de a megvalósítás minősége nagyon közepes. Azonban az elterjedtség és az agresszív marketing az egyik oka az 1C széles körű népszerűségének hazánkban (és ez az oka a negativitásnak, az irigységnek és a gyűlöletnek is).

Egy kanál kátrány

Miután az 1C-t minden színében leírtuk, igazságtalan lenne nem beszélni a hiányosságairól, de ott vannak:

Instabil kiadások- mind a platformon, mind a konfigurációkban hatalmas számú hiba és hiba található. És ez a hivatalos kiadásokban van. A hivatalos verzió megjelenése előtt megjelenik az „Evaluation Version”. Visszajelzés is van a hibaleírások beküldéséhez, hogy elfogadják azokat javításra. Azonban vagy a próbaverziók nem túl népszerűek, vagy magának az 1C cégnek nincs ideje feldolgozni az összes levelet a megjelenési dátumig, de ez tény. Minden alkalommal, amikor frissít egy platformot vagy konfigurációt, a legváratlanabb „meglepetésekbe” botlhat. Az 1C-t már többször felszólították, hogy alaposabban tesztelje fejlesztéseit.

Franchise (a továbbiakban: franchise átvevő). Ideális esetben a terveknek megfelelően képzett szakemberekkel rendelkező cégeknek kellett volna lenniük, akik ismerik a konfigurációk és platformok működésének alapelveit. Ugyanezen cégeknek el kell adniuk a platformot, a konfigurációt és a támogatást, kissé „be kell fejezniük” az univerzális konfigurációkat, hogy megfeleljenek az ügyfél igényeinek (és időnként módosítaniuk kell ezeket a követelményeket), megpróbálva minimálisan módosítani a szabványos konfigurációt. Hogy ne bonyolítsuk túlságosan a jövőbeli frissítéseket. De a valóságban ennek az ellenkezője igaz.

Amikor új licenceket adnak el egy ügyfélnek, a franchise-vevők költségük 50%-át kapják (mínusz ennek az 50%-nak a 13%-a jövedelemadó). Ugyanakkor nem kell semmit sem saját maga gyártania, csak át kell adnia az 1C kulcsait a vevőnek.

Szolgáltatásnyújtáskor a franchise-vevők nem fizetnek semmit az 1C cégnek (kivéve a tagsági díjat), de ki kell fizetniük az alkalmazott fizetését. Az államnak pénzt is kell költenie adókra - a nyugdíjalapra és a jövedelemadóra.

Kiderült, hogy mind az 1C, mind a franchise-vevők számára nyereséges a licencek eladása, és veszteséges a további támogatás. Ugyanakkor ahhoz, hogy az ügyfél megvásárolhasson egy programot, először az igényeihez kell igazítania. És fizetni kell a munkáért. Itt pedig spórolás végett behoznak diákokat, szakmunkástanulókat, nem szakembereket, lehet picit fizetni, néha meg egyáltalán nem, nem is kell bejelenteni őket (nem hivatalosan fognak dolgozni) , szerencsére van mit fizetni). Az eredmény egy hatalmas számú eladás nagyon alacsony minőségben. A fejlesztések általában fontos mechanizmusokat érintenek, és megnehezítik a jövőbeni frissítéseket. De az értékesítési szakaszban sem az 1C-t, sem a franchise-t nem érdekli ez.

Megjegyzem, ez nem annyira a francia üzletemberek, mint inkább az 1C cég hibája. Az értékesítésre koncentrálva egyáltalán nem törődött a támogatással (most nem az iskolákra gondolok, hanem arra, hogy a támogatás nyújtása előnyös legyen magának a franchise cégnek és az 1C-nek is).

Technikai támogatás. Az 1C vállalat felfogása szerint a technikai támogatás a platform és a konfigurációk „frissítési” szakaszához, valamint az 1C működésének egyes mechanizmusainak és jellemzőinek leírását tartalmazó információs szakaszokhoz való hozzáférés biztosítása. Ezen kívül, ha előfizet, kap egy lemezt a megadott anyagokkal. Van egy fórum is (a népszerűekhez képest nagyon csekély). Lehetőség van arra is, hogy e-mailt küldjön az 1C cégnek - de anélkül, hogy azt remélné, hogy válaszolnak rá (vagy a robot azt válaszolja: „A levelet elküldtük a fejlesztési osztálynak.” A fejlesztés szempontjából a Yandex.Search ill. a konfigurátorba épített súgó sokkal nagyobb támogatást nyújt.

Epilógus

2008-ban váltottam az 1C-re, előtte egy saját számviteli programot fejlesztő cégben dolgoztam (Delphi 5, majd Delphi 7). Először is megismerkedtem az 1C Enterprise 7.7 platformmal, és megdöbbentett a jelentéskészítés egyszerűsége. Ugyanakkor egyértelmű volt, hogy a jelentések sokkal hosszabb ideig készültek, mint a Delphi hasonló mechanizmusaiban, de a könyvelőket ez nem különösebben aggasztja. Néhány másodperc helyett néhány percet várni nem jelent problémát. Éppen ellenkezőleg, ott kifestheti a körmét, inni teát, vagy megbeszélheti a legfrissebb híreket anélkül, hogy megállna a munkában. Hiszen manapság a könyvelők túlnyomó többsége nő.
A 7.7-es interfész azonban nagyon korlátozott volt, és az objektumok halmaza nagyon gyenge. Alternatívákat kerestem. Megismerkedtem a külső alkatrészekkel, de gyakorlati használatukhoz nem jutottam el, mert... a főnök úgy döntött, ideje váltanunk 8.1-re (igen, 8.2 még nem volt), és ezen a platformon programozóként mindent megtaláltam, ami korábban hiányzott.
Jelenleg tekintélyem van a kollégák körében, valamint a franchise-tól érkezett ügyfelek között. Valószínűleg soha többé nem lépnek kapcsolatba a franciákkal.


Általában véve nagyon elégedett vagyok az 1C Enterprise 8 platformon végzett munkával. A legtöbb könyvelési és adatbázis-probléma megoldására alkalmas.

Címkék: Címkék hozzáadása