Rövid információ az OLE használatáról az 1C-Enterprise-ben.

Az 1C-Enterprise rendszer OLE Automation szerverként történő elindításához külső alkalmazásból a következő műveletsort kell végrehajtani:

  1. Egy objektum OLE azonosítóval jön létre (a kis- és nagybetűk nem kritikusak):
  • V1CEenterprise.Application - verziófüggetlen kulcs;
  • V77.Alkalmazás - verziófüggő kulcs;
  • V77S.Application - verziófüggő kulcs, SQL verzió;
  • V77L.Application - verziófüggő kulcs, helyi verzió;
  • V77M.Application - verziófüggő kulcs, hálózati verzió.
  • Az 1C-Enterprise rendszer inicializálása az Initialize() metódussal történik.
  • Az 1C-Enterprise rendszer attribútumait és metódusait OLE Automation szervernek hívják.
  • Az 1C-Enterprise mint OLE Automation szerver 4 módszerrel rendelkezik:

    • Initialize() - inicializálja az 1C-Enterprise rendszert.
    • CreateObject() – Létrehoz egy 1C-Enterprise összesített adattípusú objektumot, és hivatkozást ad vissza rá.
    • EvalExpr() - Az 1C-Enterprise rendszer kifejezésének kiszámítása.
    • ExecuteBatch() – 1C-Enterprise rendszeroperátorok sorozatának végrehajtása.

    Mód:

    1. Initialize() - az adatbázis megnyitása.

    A módszer szintaxisa a következő:

    Inicializál(<Имя объекта>.RMTrade,<Командная строка>, <Пустая строка>)

    <Имя объекта>.RMTrade – Változó neve és RMTrade kulcsszó.
    <Командная строка> - parancs sor, amelyben megadhatja az adatbázis elérési útját, felhasználónevét és jelszavát.
    <Пустая строка>) - vagy egy üres karakterlánc, vagy "NO_SPLASH_SHOW" -, hogy ne jelenjen meg az indítóképernyő rendszerindításkor.

    Az adatbázis OLE-n keresztüli megnyitásához létre kell hoznia egy objektumot OLE azonosítóval, inicializálnia kell az adatbázist, és ellenőriznie kell az inicializálás sikerességét. A példámban nem adok meg semmit további beállítások, így megnyílik egy négyzet alakú ablak az alap kiválasztásához, a rendszer felkéri, hogy válasszon ki egy felhasználót és adjon meg egy jelszót.

    OtherBase=CreateObject("V77.Application"); Opened=OtherBase.Initialize(OtherBase.RMTrade,); Ha Nyitott=0 Akkor // Igaz=-1, Hamis=0. Minden OLE parancshoz. Show("Az adatbázis nem lett megnyitva."); Visszatérés; EndIf;

    2. CreateObject() - hozzon létre egy összesített típusú objektumot.

    Ez a metódus létrehozza az 1C-Enterprise rendszer összesített adattípusának objektumát, és visszaadja a hivatkozást.

    A módszer szintaxisa a következő:

    CreateObject(<ИмяАгрегатногоТипа>)

    <ИмяАгрегатногоТипа>- egy karakterlánc kifejezés, amelynek értéke tartalmazza a konfigurátorban megadott összesített adattípus nevét. Például: "Könyvtár. Nómenklatúra", "Dokumentum. Számla".

    3. EvalExpr() - a kifejezés kiértékelése.

    A módszer szintaxisa a következő:

    EvalExpr(<СтрокаВыражения>)

    <СтрокаВыражения>- az 1C-Enterprise beépített nyelvén írt karakterlánc-kifejezés.

    Egy kifejezés eredménye lehet szám, karakterlánc, dátum vagy bármilyen összesített adattípus értéke. A meghatározatlan típusú eredményt a rendszer karakterlánctípussá konvertálja.

    4. ExecuteBatch() - utasítássorozat végrehajtása.

    A módszer szintaxisa a következő:

    ExecuteBatch(<СтрокаОператоров>)

    <СтрокаОператоров>- karakterlánc kifejezés, programszöveg az 1C-enterprise beépített nyelvén.

    Logikai értéket ad vissza: TRUE, ha az utasítássorozat sikeres volt, FALSE, ha nem. Az OLE Automationban az IGAZ és FALSE értéke -1 (mínusz egy), illetve 0.

    Példa: dokumentum létrehozása egy másik, OLE-n keresztül megnyitott adatbázisban.

    A kirakodás a feldolgozásból következik be. SelectDocument - a felhasználó által kiválasztott dokumentum egy másik adatbázisba való feltöltéshez.

    OtherBase=CreateObject("v77.alkalmazás"); Opened=OtherBase.Initialize(OtherBase.RMTrade,); If Open=0 Then Report("Az adatbázist nem nyitották meg."); Visszatérés; EndIf; dDoc=OtherBase.CreateObject("Dokumentum.Számla"); dItem=OtherBase.CreateObject("Katalógus.Nómenklatúra"); dDoc.New(); dDoc.DateDoc=SelectDocument.DateDoc; dDoc.Firm=OtherBase.evalexpr("Constant.MainFirm"); dDoc.Warehouse=OtherBase.evalexpr("Constant.MainWarehouse"); dDoc.PriceCategory=OtherBase.evalexpr("Constant.IncomingPriceCategory"); dDoc.Tax Calculation Variant=OtherBase.evalexpr("Állandó.Fő adószámítási változat"); dDoc.Currency=OtherBase.evalexpr("Constant.BaseCurrency");//rubles dDoc.Date_rate=dDoc.DateDoc; doc.AccountingType=1; dDoc.Author=OtherBase.evalexpr("gUser"); dDoc.Invoice attribútum=OtherBase.evalexpr("Transfer.RecognitionInc.Inc.Purchase"); dDoc.Rate=1;//rubles dDoc.Comment=SelectDocument.Comment; SelectDocument.SelectRows(); Míg SelectDocument.GetString()=1 Loop dDoc.NewString(); ItemCode=ShortLP(SelectDocument.Item.Code); Ha dItem.FindByCode(ItemCode)=0 Then Report("A "+ItemCode" kódú termék nem található); Visszatérés; EndIf; dItem.UseDate(dDoc.DateDoc); dDoc.Item=dItem.CurrentItem(); dDoc.Quantity=SelectDocument.Quantity; dDoc.Unit=dProduct.UnitDefault; dDocument.Price=SelectDocument.Price; dDoc.Együttható=1; dDoc.Total=SelectDocument.Amount; dDoc.Amount=SelDocument.Amount-SelekDocument.NW; dDoc.VAT Rate=dProduct.VAT Rate; dDocument.VAT=SelectDocument.VAT; dDoc.NR Rate=dProduct.NR Rate; ddDocument.NrAmount=SelectDocument.Nr; EndCycle; dDoc.SetNewNumber(OtherBase.evalexpr("A számviteli bizonylatszámok állandó.előtagja")); Notify(""+dDoc.DocNumber); dDoc.Write();

    Ez a példa 100%-ban működik. Dokumentumok feltöltésére használom egyik konfigurációból a másikba.

    Összehasonlítás az OLE adatbázisban. Konstansok, felsorolások, címtárelemek.

    Az Ole-n keresztül megnyitott adatbázisban lévő összesített adattípusok értékeinek összehasonlításához használja a szabványos algoritmust egyenlő- és egyenlőtlenségjelekkel (=,<>) nem működik. A kilépés egyszerű. Az összesített adattípusok összehasonlításáról át kell térni az egyszerű adattípusokra - dátum, karakterlánc és szám.

    Innen a következtetés: nem magukat az elemeket hasonlítjuk össze, hanem egyedi tulajdonságaikat. Például a címtárelemeknél ez egy kód (ha van) vagy egy név. A felsoroláshoz az Identifier() metódust használjuk. Íme két példa:

    //Az item attribútum összehasonlítása a BaseCurrency Constant If dItem.AccountingCurrency.Code értékkel<>Other.Constant.BaseCurrency.Code Ezután dItem.AccountingCurrency=Other.Constant.BaseCurrency; EndIf; //Az item attribútum összehasonlítása a felsorolással If dItem.ItemType.Identifier()<>Other.Enumeration.ProductTypes.Single.Identifier() Majd dProduct.ProductType=Other.Enumeration.ProductTypes.Single; EndIf;

    Munkamenet paraméterei 1C 8.3- olyan változó, amely a kívánt paraméter értékét tárolja a felhasználói munkamenet időtartamára. Valójában ez egyfajta globális változó, amely az aktuális felhasználó munkamenetéhez kötődik.

    Munkamenet-paraméterek használata az 1C-ben

    A munkamenet-paraméterek beállítása csak programozottan történik, a rendszerben nincs univerzális interfész a munkamenet-paraméterek beállítására. Általában a rendszer indításakor, a "Session module"-ban vannak beállítva. Ha a paraméter nincs megadva, hibaüzenet jelenik meg az elérésekor.

    Példa az 1C szekcióparaméter beállítására

    Nézzük meg a munkamenet-paraméterek tipikus használati esetét – az aktuális felhasználó beállítását. Példát veszek a felkészülésből.

    A metaadatfában hozza létre új paraméter session - CurrentUser, rendeljen hozzá egy típust - DirectoryLink.Individuals:

    Ingyenes 267 1C videóleckéket kaphat:

    A munkamenet modulban hozzunk létre egy eljárást, amely meghatározza az aktuális munkamenet paramétert:

    Eljárás kódja:

    Procedure SettingSessionParameters (szükséges paraméterek) //fizikait keresünk. arc felhasználónév alapján CurrentUser = Könyvtárak. Magánszemélyek. FindByName(Felhasználónév() ) ; // ha nem található, hozzon létre egy újat Ha CurrentUser. Empty() Majd NewUser = Könyvtárak. Magánszemélyek. CreateElement() ; Új felhasználó. Név = Felhasználónév() ; Új felhasználó. Ír() ; CurrentUser = NewUser. Link; EndIf ; //A CurrentUser session paraméterhez hozzárendel egy hivatkozást az egyének könyvtárához SessionParameters. CurrentUser = CurrentUser; Vége eljárás

    1. A probléma megfogalmazása

    Ebben a cikkben egy egyszerű írás megírásának folyamatán fogunk végigmenni külső feldolgozás táblázatos rész kitöltése ben 1C 8 normál alkalmazást használó konfigurációkhoz. Vegyük például a következő feladatot: „A konfigurációban 1C: Számvitel 2.0 hozzon létre egy külső feldolgozást a táblázatos rész kitöltéséhez Termékek dokumentumot, a táblázatos részből veszik a kitöltendő adatokat Termékek dokumentum Áruk és szolgáltatások átvétele". Így az eladási árut az átvételi áru alapján kell kitöltenünk, egy ilyen feladat az 1C programozó valós gyakorlatában elég gyakori.

    2. Külső feldolgozás létrehozása

    Menjünk-hoz 1C 8 módban Konfigurátor. A menü használata Fájl -> Új vagy piktogramok új dokumentumotújat csinálni külső feldolgozás.

    A terepen Név megadjuk: „A táblázatos rész legegyszerűbb kitöltése” és mentsük tovább a külső feldolgozást HDD menü segítségével Fájl -> Mentés vagy ikonra Megment vagy billentyűparancsot ctrl+s.

    Elágazás kiválasztása Kellékek a feldolgozási metaadatfában, és kattintson a gombra Hozzáadás(gomb zöld pluszjel) hozzon létre egy új külső feldolgozási attribútumot - Bizonylatok, válassza ki a típust hozzá DocumentReference.Receipt of GoodsServices, erre az attribútumra van szükségünk egy dokumentum kiválasztásához Áruk és szolgáltatások átvétele, amely alapján a megvalósítás kitöltésre kerül.

    Az átvételi bizonylat kiválasztásához külön nyomtatványra van szükségünk. Elágazás kiválasztása Űrlapokés ugyanazzal a gombbal - Hozzáadás Hozzon létre egy külső feldolgozási űrlapot. Megnyílik az űrlaptervező ablak, nem kell semmilyen változtatást végrehajtani a tervező első oldalán, ezért csak kattintson a gombra További.

    A konstruktor második oldalán ki kell választanunk a kellékeket Bizonylatok(hogy az megjelenjen a létrehozott űrlapon), és nyomja meg a gombot Kész.

    Ezt követően megnyílik a létrehozott űrlap, amelyen a felhasználónak ki kell választania az átvételi bizonylatot és be kell zárnia. Tehát amikor megnyomják a gombot Fuss az űrlapnak csak be kell zárnia. Ennek megvalósításához válassza ki a gombot Fuss, kattintson rá Jobb klikk egérrel, és válassza ki az elemet Tulajdonságok. A gomb tulajdonságaiban, a sorban Akció válasszon egy műveletet Bezárás. Ezzel befejezi a munkát az űrlappal, zárja be.

    3. Programozás

    Kezdjük el programozni a táblázatos rész kitöltésének feldolgozását. Menjünk-hoz Objektum modul külső feldolgozás (az alsó feldolgozó panelen a gomb Műveletek -> Objektummodul megnyitása).

    Ebben egy export eljárást kell létrehoznunk Inicializálás.

    Eljárás Inicializálás Export Vége eljárás

    vegye figyelembe, hogy eljárást Inicializálás, valamint minden paramétere kötelező a táblázatos rész kitöltésének külső feldolgozásához, ha nem hozza létre, vagy ha nem ad meg minden paramétert, a feldolgozás egyszerűen nem fog működni.

    Most pedig kezdjünk el írni programkód. Először is hozzunk létre egy változót a dokumentum táblázatos részének Áruk és szolgáltatások értékesítése amit majd kitöltünk.

    TablePart = Objektum[Táblázatrésznév];

    A paraméterben lévő eljárás végrehajtásakor Egy tárgy tartalmazza az általunk kitöltött dokumentumobjektumot és a paraméterben TablePartName egy karakterlánc a táblázatos rész nevével, amelyet kitöltünk. Így ez a kódsor a neve alapján kapja meg a kitöltött dokumentum táblázatos részét.

    A felhasználónak ki kell választania egy dokumentumot Áruk és szolgáltatások átvétele, ezért írjuk meg a dokumentumválasztó űrlap megnyitásához szükséges kódot. Először ezt az űrlapot külső feldolgozási módszerrel változóvá alakítjuk GetForm(<Форма>, <Владелец>, <КлючУникальности>) . Elegendő ennek a metódusnak csak az első paraméterét kitölteni, átadva ott egy karakterláncot az űrlapunk nevével.

    IncomingSelectionForm = GetForm("Űrlap" );

    Most nyissuk meg a kapott űrlapot modális megnyitással (amíg az űrlap nyitva van, az összes többi 1C ablak nem érhető el), mert ezzel a megnyitási móddal a további kódunk az eljárásban Inicializálás nem kerül végrehajtásra, amíg a felhasználó be nem zárja az űrlapot.

    AdmissionSelectionForm.OpenModally();

    Miután a felhasználó bezárta az űrlapot, ellenőriznünk kell, hogy az attribútum kitöltve van-e Bizonylatok(ha nem választottak ki nyugtát). Ha ellenőrzés után Bizonylatoküres, akkor a további feldolgozásnak nincs értelme, és meg kell szakítani.

    Ha NEM ValueFilled(ReceiptDocument) akkor Report(); Visszatérés ; EndIf ;

    Az attribútum teljességének ellenőrzéséhez itt a globális kontextusfüggvényt használjuk ValueFilled(<Значение>) , ellenőrzi, hogy a paraméterben átadott érték eltér-e az azonos típusú alapértelmezett értéktől. Eljárás Jelenteni megjeleníti a megadott szöveget az 1C 8 üzenetmezőben. Kulcsszó Visszatérés megszakítja az eljárás végrehajtását.

    Kezdjünk el írni egy lekérdezést, ami a táblázatos rész adatait választja ki Termékek dokumentum Áruk és szolgáltatások átvétele. Hozzunk létre egy új kérést:

    Request = Új kérés;

    Request.SetParameter( "Átvételi bizonylat",Átvételi bizonylat);

    Írjuk meg a kérés szövegét, segítségével megtesszük Konstruktor kérése. A kérés szövegének kézi írása nem javasolt, nem hatékony és sok időt vesz igénybe. Kezdjük egy sorral:

    Request.Text = "" ;

    Vigye a kurzort az idézet karakterek közé, nyomja meg a jobb egérgombot és válassza ki az elemet Kivitelező kérése.... Ezt követően a rendszer felkéri, hogy hozzon létre egy új kérést, kattintson az „OK” gombra. Megnyílik egy konstruktor ablak, melynek bal oldali részében az összes elérhető adatbázistábla megtalálható, szükségünk van egy dokumentumra Bejövő áruk szolgáltatásai. Keresse meg és nyissa meg a „+” jellel, válassza ki a táblázatos részt Termékekés húzza át a tervező képernyő második részére, amely az ún táblázatok(A kívánt táblázatot a „>” gombbal is áthelyezheti.)

    Most a kiválasztott táblázatot a „+” jellel bővítjük ( Bejövő áruk Szolgáltatások Áruk) és húzza a tabulátor-rész kitöltéséhez szükséges mezőket a konstruktor képernyő harmadik részébe, melynek neve - mezőket. Nem jelölünk ki minden elérhető mezőt, az alábbi készletre szorítkozunk: Nómenklatúra, Mennyiség, Ár, Összeg, ÁFA kulcs, ÁFA összeg.

    Mivel csak egy bizonylat adataira van szükségünk (amit a kitöltés megkezdése előtt választottunk ki), ezért a „Feltételek” fülön az általunk átadott paraméterrel feltételt szabunk a bizonylat hivatkozásra.

    A lekérdezés szövegének létrehozása a konstruktorban ezzel befejeződött, kattintson az „OK” gombra. Ennek eredményeként a következő kérés szövege van:

    Query.Text = "SELECT |FROM |WHERE ;

    A létrehozott kérést csak végre kell hajtani és ki kell tölteni egy változóba:

    Eredmény = Request.Execute().Feltöltés();

    Változóban Eredményértéktáblázatot tárolunk a táblázatos rész soraival Termékekáltalunk választott dokumentum Áruk és szolgáltatások átvétele. Most elkezdheti kitölteni a táblázatot. Termékek megvalósításunk. De mielőtt kitöltenéd az adatokat, töröld ki, hátha már van ott néhány sor.

    TablePart.Clear();

    Egy ciklussal Mindenkinek körbejárjuk az értéktáblázatot a lekérdezés eredményeivel.

    Az eredményhurok minden egyes eredményeleméhez Hurok vége ;

    Ebben a ciklusban elkészítjük és kitöltjük a dokumentum táblázatos részének sorait Áruk és szolgáltatások értékesítése. Teremt új sor változót használhatjuk TabularPart, amelyen keresztül bármilyen műveletet végrehajthat vele.

    NewStringPT = TabularPart.Add();

    Töltse ki a létrehozott sor fület. a lekérdezési eredmény karakterláncból származó adatok részeit az eljárás segítségével globális kontextusbanFillPropertyValues(<Приемник>, <Источник>) .

    FillPropertyValues(NewStringPT,ResultElement);

    De az általunk kitöltött adatok nem elegendőek, ahhoz, hogy a bizonylat elkészüljön, további kitöltések szükségesek készletnyilvántartási számlák. Ehhez az exportálást használjuk

    eljárást Fill InvoicesAccountingIn RowTabParts dokumentum objektum modulból Áruk és szolgáltatások értékesítése. Nevezzük a paraméterrel Egy tárgy(meg kell jegyezni

    hogy csak hívni tudjuk export eljárások a dokumentumobjektum modulból).

    Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True);

    Ezzel befejeződik a táblázatos rész kitöltésének programozása 1C 8 elkészült. feldolgozás használható. Az eljárás teljes szövege Inicializálás, így néz ki:

    Eljárás Inicializálás (Object, TabularPartName = meghatározatlan, Object TableField = meghatározatlan) Export TablePart = Objektum[Táblázatrésznév]; IncomingSelectionForm = GetForm("Űrlap" ); AdmissionSelectionForm.OpenModally(); Ha NINCS érték kitöltve (bejövő dokumentum), akkor jelentse ( "Nincs kiválasztva nyugtadokumentum"); Visszatérés ; EndIf ; Request = Új kérés; Request.SetParameter( "Átvételi bizonylat",Átvételi bizonylat); Query.Text = "VÁLASZTÁS | Áruk, szolgáltatások, áruk átvétele. Nómenklatúra, | Áruk, szolgáltatások, áruk átvétele. Mennyiség, | Áruk, szolgáltatások, áruk átvétele. ÁFA kulcs, | Áruk, szolgáltatások, áruk átvétele. Összeg, | Áruk, szolgáltatások, áruk átvétele. Áfa összege, | Áruk, szolgáltatások, áruk átvétele Ár| FROM | Dokumentum.Áru átvételeSzolgáltatások.Goods AS ÁruátvételSzolgáltatásokÁruk|HOL | GoodsReceiptServicesGoods.Reference = &ReceiptDocument"; Eredmény = Request.Execute().Feltöltés(); TablePart.Clear(); Minden egyes eredményelemhez az eredményhurokból NewRowPT = TabularPart.Add(); FillPropertyValues(NewStringPT,ResultElement); Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True); EndCycle ; Vége eljárás

    A cikk következő részében megtudhatja, hogyan lehet hibakeresést végezni a táblázatos rész kitöltésének feldolgozásával, és hogyan kapcsolhatja azt a dokumentumhoz.

    4. Hibakeresés

    Elég gyakran meg kell hibáztatnia az írt kódot. A táblázatos rész kitöltésének feldolgozásának hibakereséséhez 1C 8 teremtse meg kellékeit ReferenceToObject típus DocumentReference.Realization of GoodsServices

    Szükségünk van rá, hogy a hibakeresés során kiválaszthassunk egy implementációs dokumentumot, amelyet mi fogunk kitölteni. Ezután létre kell hoznia egy űrlapot a hibakereséshez, és el kell helyeznie a létrehozott kellékeket. ReferenceToObject, a hibakereső űrlap létrehozásának folyamata nem különbözik a nyugta bizonylat-kiválasztó űrlap létrehozásától, ezért nem térünk ki rá részletesen.

    Az űrlap létrehozása után lépjen a moduljához. Ott találunk egy automatikusan létrehozott eljárást ButtonExecutePushing. Ez az eljárás a gomb megnyomásakor megy végbe. Fuss. Hívjunk ki belőle egy eljárást Inicializálás, amely a feldolgozó modulban található, a dokumentum objektumot átadjuk a paramétereknek Áruk és szolgáltatások értékesítése(amit a kellékekből kapunk ReferenceToObject) és egy sor a kitöltendő táblázatos rész nevével (esetünkben Termékek).

    Eljárás ButtonExecuteClick(Button) Initialize(ReferenceToObject.GetObject(), "Áruk" ); Vége eljárás

    Most a létrehozott űrlapot kell a fő feldolgozási formává tenni. Ehhez válassza ki a "Feldolgozási űrlap" mezőben.

    Most beállíthat egy töréspontot a következő helyen jó helyen eljárások Inicializálás vagy eljárások ButtonExecutePushing hibakeresési űrlapokat, és indítsa el a táblázatos szakasz kitöltésének feldolgozását hibakeresési módban 1C: Vállalati.

    5. Csatlakozás dokumentumhoz

    A kitöltési feldolgozás megírása és hibakeresése után csatlakozni kell ahhoz a dokumentumhoz, amelyből végrehajtani fogja. Ehhez lépjen ide: 1C 8 módban Vállalat, lépjen a menübe Szerviz -> További jelentések és feldolgozás -> Táblázatos részek további külső feldolgozásaés add hozzá új elem Könyvtár. Gombbal Cserélje ki a külső feldolgozó fájlt Adjuk hozzá az általunk készített táblázatos rész kitöltésének feldolgozásának fájlját.

    Töltse ki a feldolgozási hovatartozást a gombbal Kiválasztás válasszon egy dokumentumot Áruk és szolgáltatások értékesítése

    És jelezzük, hogy a tölteléket a táblázatos részhez szánjuk Termékek.

    Megnyomjuk a gombot rendbenés ennyi, a töltés feldolgozása elérhető lesz a menüben Tölt táblázatos rész Termékek dokumentum Áruk és szolgáltatások értékesítése. A példához használt feldolgozást letöltheti a következőről: .

    Tehát az 1C-ben vannak könyvtárak. Például egy árujegyzék (nómenklatúra). Ott feltüntetjük azon áruk listáját, amelyeket szervezetünk értékesít.

    Egy ilyen címtár segítségével az ügyfelek számára árlistát, valamint a vezetőség számára értékesítési jelentést tudunk készíteni.

    Az áruk különbözőek. Például a termékek és a kémia. Mi a teendő, ha a vezető feljelentést kér – mennyi pénzt kerestünk a termékeken, és mennyit a kémián?

    Könnyen! válaszolunk. Hozzá kell adnia egy Árutípusok könyvtárat, és a Nomenklatúra könyvtárban hozzá kell adnia egy ilyen attribútumot. Most, amikor belépünk új termék- ki kell választania a termék típusát.

    A lányok azonban nem örülnek ennek az újításnak - mert most egy egész további mezőt kell kitölteniük, és már sok munkájuk van, és nincs idejük semmire. És úgy általában! - mondják - 900 termékünk van, és csak 50 kémia! Még a bolondnak is világos, hogy az alapértelmezett terméktípust termékekre kell beállítania.

    Kiváló! - megjegyezzük. És… mit kell tenni?

    Konstansok 1C

    Az állandók szerkesztéséhez megnyílik az alapértelmezett konstans űrlap. Egy ilyen űrlapon minden mező egy állandó.

    Kétféleképpen adhat hozzá állandó űrlapot:

    • Kattintson jobb gombbal az 1C konstansok ágra, és válassza ki a Konstansok létrehozása űrlap menüpontot
    • Adjon hozzá egy űrlapot az Általános/Általános űrlapok ághoz, és válassza ki az űrlaptípust a varázslóban - Állandó űrlap.

    A konstansok alakját az alábbiak szerint tekintheti meg (és választhatja ki):

    • Adja meg a konfigurációs tulajdonságokat (kattintson jobb gombbal a konfiguráció legfelső gyökérágára, amelyet a programozók általában „fejnek” neveznek), és használja a Constants Basic Form tulajdonságot.

    Az állandók formája abban különbözik, hogy az űrlap fő attribútuma "ConstantsSet" típusú. Ez lehetővé teszi, hogy az 1C konstansokat ne külön-külön, hanem azonnal halmazként írjuk le.

    Egyébként a form attribútum „main” lesz, ha az Adat tulajdonságban van megadva az űrlap tulajdonságainál.

    Egy 1C programban bármely állandó könnyen és egyszerűen elérhető:

    Érték = Constants.DesiredConstant.Get(); //olvas
    Állandók.KívántConstant.Set(Vn); //ír

    Munkamenet paraméterei 1C

    A probléma tehát egyszerűen és eleganciával megoldott - létrehozunk egy állandót, amelyben az alapértelmezett terméktípust tároljuk.

    Új termék létrehozásakor az 1C nyelvű program az OnOpeningForm() Terméktípus mező értékét a konstansban megadott értékre állítja be. Voálá!

    Most már működik a program, de nem állunk meg! Mégis - menő programozók vagyunk, azt akarjuk, hogy a program ne csak működjön, hanem gyorsan is működjön!

    Hol tárolják az 1C állandókat? Az adatbázisban, egy speciális táblázatban. Minden alkalommal, amikor az operátor új terméket hoz létre, az betör a szerverre, és beolvassa az 1C állandó értékét. Mi van, ha 200 operátor van? Optimális?

    Akkor mit kell tenni?

    És itt felidézzük az 1C munkamenet paramétereit. Ezek olyan értékek, mint a konstansok, amelyeket az 1C vállalati módban való indításakor töltenek ki, és azonnal elérhetők az ügyfélen. Más szóval, ez egyfajta gyorsítótár a kliens oldalon.

    Ráadásul ha csak az értéktárban tudjuk konstansban tárolni a listát, akkor már ki is tudjuk csomagolni az 1C session paraméterbe, igaz nem lesz dinamikus - FixedArray típussal.

    Az 1C munkamenet paraméterei az Általános / 1C szekcióparaméterek ágban található konfigurációs ablakban is megtalálhatók.

    Nem elég hozzá egy 1C session paramétert, mert ha nincs kitöltve, akkor a program hibát jelez.

    Az 1C munkamenet paramétereinek kitöltését (beállítását) az 1C kezdetén, Enterprise módban kell elvégezni. Kattintson a jobb gombbal a konfiguráció legfelső ágára (a programozók "Head"-nak hívják), és válassza ki a Munkamenet modul megnyitása menüpontot.

    Lehet, hogy a modulnak már van egy SetSessionParameters() függvénye. Ha még nincs ilyen, akkor válassza ki ezt az eseményt a megfelelő legördülő listából. Íme egy példa az 1C munkamenet paraméter értékének beállítására:

    SessionParameters.RequiredParameter = Érték; //rekord, egyszer a legelején
    Érték = SessionParameters.RequiredParameter; //olvasás, szigorúan írás után.