Stručné informace o použití OLE v 1C-Enterprise.

Chcete-li spustit systém 1C-Enterprise jako server automatizace OLE z externí aplikace, provede se následující sekvence akcí:

  1. Objekt je vytvořen s identifikátorem OLE (velikost písmen není kritická):
  • V1CEnterprise.Application - klíč nezávislý na verzi;
  • V77.Application - klíč závislý na verzi;
  • V77S.Application - klíč závislý na verzi, verze SQL;
  • V77L.Application - klíč závislý na verzi, místní verze;
  • V77M.Application - klíč závislý na verzi, síťová verze.
  • Systém 1C-Enterprise se inicializuje pomocí metody Initialize().
  • Atributy a metody systému 1C-Enterprise se nazývají jako OLE Automation server.
  • 1C-Enterprise jako OLE Automation server má 4 metody:

    • Initialize() - inicializuje systém 1C-Enterprise.
    • CreateObject() – vytvoří objekt agregovaného datového typu 1C-Enterprise a vrátí na něj odkaz.
    • EvalExpr() - Výpočet výrazu systému 1C-Enterprise.
    • ExecuteBatch() – Spuštění sekvence systémových operátorů 1C-Enterprise.

    Metody:

    1. Initialize() - otevřete databázi.

    Syntaxe metody je:

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

    <Имя объекта>.RMTrade - Název proměnné a klíčové slovo RMTrade.
    <Командная строка> - příkazový řádek, ve kterém můžete zadat cestu k databázi, uživatelské jméno a heslo.
    <Пустая строка>) - buď prázdný řetězec, nebo "NO_SPLASH_SHOW" - aby se úvodní obrazovka při spouštění nezobrazovala.

    Chcete-li otevřít databázi prostřednictvím OLE, musíte vytvořit objekt s identifikátorem OLE, inicializovat databázi a zkontrolovat úspěšnost inicializace. Ve svém příkladu žádné neuvádím další možnosti, takže se otevře čtvercové okno pro výběr základny, budete vyzváni k výběru uživatele a zadání hesla.

    OtherBase=CreateObject("V77.Application"); Opened=OtherBase.Initialize(OtherBase.RMTrade,); If Open=0 Then // True=-1, False=0. Pro všechny příkazy OLE. Show("Databáze nebyla otevřena."); Vrátit se; EndIf;

    2. CreateObject() – vytvoření objektu agregovaného typu.

    Tato metoda vytvoří objekt agregovaného datového typu systému 1C-Enterprise a vrátí na něj odkaz.

    Syntaxe metody je:

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

    <ИмяАгрегатногоТипа>- řetězcový výraz, jehož hodnota obsahuje název agregovaného datového typu zadaného v konfigurátoru. Například: "Adresář. Nomenklatura", "Dokument. Faktura".

    3. EvalExpr() - vyhodnocení výrazu.

    Syntaxe metody je:

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

    <СтрокаВыражения>- řetězcový výraz napsaný ve vestavěném jazyce 1C-Enterprise.

    Výsledkem výrazu může být číslo, řetězec, datum nebo hodnota jakéhokoli agregovaného datového typu. Výsledek s nedefinovaným typem se převede na typ řetězce.

    4. ExecuteBatch() - vykoná sekvenci příkazů.

    Syntaxe metody je:

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

    <СтрокаОператоров>- řetězcový výraz, text programu ve vestavěném jazyce 1C-enterprise.

    Vrátí booleovskou hodnotu: TRUE, pokud byla sekvence příkazů úspěšná, FALSE, pokud ne. V automatizaci OLE mají TRUE a FALSE hodnoty -1 (mínus jedna) a 0, v tomto pořadí.

    Příklad: vytvoření dokumentu v jiné databázi otevřené přes OLE.

    K vykládce dochází ze zpracování. SelectDocument – ​​dokument vybraný uživatelem pro nahrání do jiné databáze.

    OtherBase=CreateObject("v77.application"); Opened=OtherBase.Initialize(OtherBase.RMTrade,); If Open=0 Then Report("Databáze nebyla otevřena."); Vrátit se; EndIf; dDoc=OtherBase.CreateObject("Dokument.Faktura"); dItem=OtherBase.CreateObject("Katalog.Nomenklatura"); 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.Varianta výpočtu daně=OtherBase.evalexpr("Konstantní.Hlavní varianta výpočtu daně"); dDoc.Currency=OtherBase.evalexpr("Constant.BaseCurrency");//rublů dDoc.Date_rate=dDoc.DateDoc; doc.AccountingType=1; dDoc.Author=OtherBase.evalexpr("gUser"); atribut dDoc.Invoice=OtherBase.evalexpr("Transfer.RecognitionInc.Inc.Purchase"); dDoc.Rate=1;//rublů dDoc.Comment=SelectDocument.Comment; SelectDocument.SelectRows(); Zatímco SelectDocument.GetString()=1 Smyčka dDoc.NewString(); ItemCode=ShortLP(SelectDocument.Item.Code); If dItem.FindByCode(ItemCode)=0 Then Report("Produkt s kódem "+ItemCode nenalezen); Vrátit se; EndIf; dItem.UseDate(dDoc.DateDoc); dDoc.Item=dItem.CurrentItem(); dDoc.Quantity=SelectDocument.Quantity; dDoc.Unit=dProduct.UnitDefault; dDocument.Price=SelectDocument.Price; dDoc.Coefficient=1; dDoc.Total=SelectDocument.Amount; dDoc.Amount=SelDocument.Amount-SelekDocument.NW; dDoc.Sazba DPH=dProdukt.Sazba DPH; dDocument.VAT=VybratDokument.VAT; dDoc.NR Rate=dProduct.NR Rate; ddDocument.NrAmount=VybratDocument.Nr; EndCycle; dDoc.SetNewNumber(OtherBase.evalexpr("Konstantní.Předčíslí čísel účetních dokladů")); Notify(""+dDoc.DocNumber); dDoc.Write();

    Tento příklad je 100% funkční. Používám ho k nahrávání dokumentů z jedné konfigurace do druhé.

    Porovnání v databázi OLE. Konstanty, výčty, prvky adresáře.

    Chcete-li porovnat hodnoty agregovaných datových typů v databázi otevřené prostřednictvím Ole, použijte standardní algoritmus používající stejné a nerovné znaky (=,<>) nefunguje. Výstup je jednoduchý. Je potřeba přejít od porovnávání agregovaných datových typů k jednoduchým datovým typům – datum, řetězec a číslo.

    Z toho plyne závěr: neporovnáváme prvky samotné, ale jejich jedinečné vlastnosti. Například pro prvky adresáře je to kód (pokud existuje) nebo název. Pro výčet se používá metoda Identifier(). Zde jsou dva příklady:

    //Porovnání atributu položky s konstantou BaseCurrency If dItem.AccountingCurrency.Code<>Other.Constant.BaseCurrency.Code Potom dItem.AccountingCurrency=Other.Constant.BaseCurrency; EndIf; //Porovnání atributu položky s výčtem If dItem.ItemType.Identifier()<>Other.Enumeration.ProductTypes.Single.Identifier() Then dProduct.ProductType=Other.Enumeration.ProductTypes.Single; EndIf;

    Parametry relace 1C 8.3- proměnná, která uchovává hodnotu požadovaného parametru po dobu trvání uživatelské relace. Ve skutečnosti se jedná o jakousi globální proměnnou vázanou na relaci aktuálního uživatele.

    Použití parametrů relace v 1C

    Parametry relace se nastavují pouze programově, v systému neexistuje univerzální rozhraní pro nastavení parametrů relace. Obvykle se nastavují při startu systému v „modulu relace“. Pokud parametr není definován, při přístupu k němu dojde k chybě.

    Příklad nastavení parametru relace 1C

    Podívejme se na typický případ použití parametrů relace – nastavení aktuálního uživatele. Vezmu příklad z přípravy na .

    Ve stromu metadat vytvořte nový parametr session - CurrentUser, přiřaďte mu typ - DirectoryLink.Individuals:

    Získejte zdarma lekce videa 267 1C:

    V modulu relace vytvoříme proceduru, která určí aktuální parametr relace:

    Kód postupu:

    Procedure SettingSessionParameters(RequiredParameters) //hledáme fyzické. tvář podle uživatelského jména CurrentUser = Adresáře. Jednotlivci. FindByName(UserName() ) ; // pokud není nalezen, vytvořte nový Pokud CurrentUser. Empty() Then NewUser = Directories. Jednotlivci. CreateElement() ; Nový uživatel. Jméno = Uživatelské jméno() ; Nový uživatel. Napsat() ; CurrentUser = Nový uživatel. Odkaz; EndIf; //parametru relace CurrentUser přiřadíme odkaz na adresář jednotlivců Parametry relace. CurrentUser = CurrentUser; EndProcedure

    1. Vyjádření problému

    V tomto článku si projdeme proces psaní jednoduchého textu externí zpracování vyplnění tabulkové části 1C 8 pro konfigurace pomocí normální aplikace. Vezměme si například následující úkol: „V konfiguraci 1C: Účetnictví 2.0 vytvořit externí zpracování plnění tabulkové části produkty dokumentu, údaje k vyplnění se převezmou z tabulkové části produkty dokument Příjem zboží a služeb". Potřebujeme tedy vyplnit zboží prodeje na základě zboží příjmu, takový úkol je v reálné praxi 1C programátora zcela běžný.

    2. Vytváření externího zpracování

    Pojďme 1C 8 v režimu Konfigurátor. Pomocí nabídky Soubor -> Nový nebo piktogramy nový dokument Vytvoř nový externí zpracování.

    V terénu název specifikujeme: „Nejjednodušší vyplňování tabulkové části“ a uložíme externí zpracování na HDD pomocí nabídky Soubor -> Uložit nebo ikonu Uložit nebo klávesovou zkratkou ctrl+s.

    Výběr pobočky Náležitosti ve stromu metadat zpracování a kliknutím na tlačítko Přidat(tlačítko se zeleným plusem) vytvořit nový atribut externího zpracování - Dokumentové účtenky, vyberte pro něj typ DocumentReference.Receipt of GoodsServices, potřebujeme tento atribut k výběru dokumentu Příjem zboží a služeb, na jehož základě bude realizace naplněna.

    Pro výběr účtenky potřebujeme samostatný formulář. Výběr pobočky formuláře a pomocí stejného tlačítka - Přidat Vytvoříme formulář pro externí zpracování. Otevře se okno návrháře formuláře, na první stránce návrháře nemusíte provádět žádné změny, stačí kliknout na tlačítko Dále.

    Na druhé stránce konstruktoru musíme vybrat rekvizity Dokumentové účtenky(aby se zobrazil na vytvořeném formuláři) a stiskněte tlačítko Připraveno.

    Poté se otevře vytvořený formulář, potřebujeme, aby na něm uživatel vybral účtenku a zavřel ji. Tedy po stisknutí tlačítka Běh formulář by se měl zavřít. Chcete-li to provést, vyberte tlačítko Běh, Klikněte na to klikněte pravým tlačítkem myši myši a vyberte položku Vlastnosti. Ve vlastnostech tlačítka, v řádku Akce vyberte akci zavřít. Tím je práce s formulářem hotová, zavřete jej.

    3. Programování

    Pustíme se do programování zpracování plnění tabulkové části. Pojďme Objektový modul externí zpracování (na spodním panelu zpracování tlačítko Akce -> Otevřít modul objektu).

    V něm musíme vytvořit exportní proceduru Inicializovat.

    Postup Inicializovat Vývozní EndProcedure

    Všimněte si, že postup Inicializovat, stejně jako všechny jeho parametry, jsou povinné pro externí zpracování vyplnění v tabulkové části, pokud jej nevytvoříte nebo pokud nezadáte všechny parametry, vaše zpracování jednoduše nebude fungovat.

    Nyní začneme psát programový kód. Nejprve si vytvořte proměnnou pro tabulkovou část dokumentu Prodej zboží a služeb které vyplníme.

    TablePart = Object[TablePartName];

    Při provádění procedury v parametru Objekt bude obsahovat objekt dokumentu, který vyplňujeme, a v parametru TablePartNameřetězec s názvem tabulkové části, kterou vyplňujeme. Tento řádek kódu tedy dostane tabulkovou část vyplněného dokumentu svým názvem.

    Potřebujeme, aby uživatel vybral dokument Příjem zboží a služeb, napíšeme tedy kód pro otevření formuláře pro výběr dokumentu. Nejprve tento formulář dostaneme do proměnné pomocí metody externího zpracování GetForm(<Форма>, <Владелец>, <КлючУникальности>) . Postačí nám vyplnit pouze první parametr této metody a předat tam řetězec s názvem našeho formuláře.

    IncomingSelectionForm = GetForm("Form" );

    Nyní otevřeme výsledný formulář pomocí modálního otevírání (dokud je formulář otevřený, všechna ostatní okna 1C jsou nedostupná), protože při tomto způsobu otevírání náš další kód v postupu Inicializovat nebude proveden, dokud uživatel nezavře formulář.

    AdmissionSelectionForm.OpenModally();

    Poté, co uživatel zavře formulář, musíme zkontrolovat, zda je atribut vyplněn Dokumentové účtenky(v případě, že nebyl vybrán žádný doklad o příjmu). Pokud po kontrole Dokumentové účtenky je prázdný, pak další zpracování nedává smysl a mělo by být přerušeno.

    Pokud NE ValueFilled(ReceiptDocument) Then Report(); Vrátit se ; EndIf;

    Pro kontrolu plnosti atributu se zde používá funkce globálního kontextu ValueFilled(<Значение>) , zkontroluje, zda se hodnota předaná v parametru liší od výchozí hodnoty stejného typu. Postup Ohlásit zobrazí zadaný text ve zprávě 1C 8. Klíčové slovo Vrátit se přeruší provádění postupu.

    Začněme psát dotaz, který vybere data tabulkové části produkty dokument Příjem zboží a služeb. Vytvoříme nový požadavek:

    Žádost = Nová žádost;

    Request.SetParameter( "Doklad o příjmu",Příjmový doklad);

    Napište text žádosti, uděláme to pomocí Požádejte konstruktéra. Ruční psaní textu požadavku se nedoporučuje, není efektivní a zabírá mnoho času. Začněme řádkem:

    Request.Text = "" ;

    Umístěte kurzor mezi znaky uvozovek, stiskněte pravé tlačítko myši a vyberte položku Požádat konstruktéra.... Poté budete vyzváni k vytvoření nového požadavku, klikněte na tlačítko „OK“. Otevře se okno konstruktoru, v jeho levé části jsou umístěny všechny dostupné databázové tabulky, potřebujeme dokument Služby příchozího zboží. Najděte jej a otevřete jej symbolem „+“, vyberte tabulkovou část produkty a přetáhněte jej do druhé části obrazovky návrháře, která se nazývá tabulky(Požadovaný stůl můžete také přesunout pomocí tlačítka „>“).

    Nyní rozšíříme tabulku, kterou jsme vybrali, o „+“ ( Příchozí zboží Služby Zboží) a přetáhněte pole potřebná pro naše vyplnění části karty do třetí části obrazovky konstruktoru, která se nazývá - pole. Nevybereme všechna dostupná pole, omezíme se na následující sadu: Nomenklatura, Množství, Cena, Částka, Sazba DPH, Částka DPH.

    Vzhledem k tomu, že potřebujeme údaje pouze jednoho příjmového dokladu (který jsme vybrali před zahájením vyplňování), pak na záložce „Podmínky“ uvalíme podmínku na odkaz dokladu pomocí parametru, který jsme předali.

    Vytvoření textu dotazu v konstruktoru je nyní dokončeno, klikněte na tlačítko „OK“. V důsledku toho máme následující text žádosti:

    Query.Text = "SELECT |FROM |WHERE ;

    Vytvořený požadavek je třeba pouze provést a uvolnit do proměnné:

    Výsledek = Request.Execute().Upload();

    V proměnné Výsledek tabulka hodnot je uložena s řádky tabulkové části produkty dokument dle našeho výběru Příjem zboží a služeb. Nyní můžete začít s vyplňováním tabulky. produkty naší implementaci. Před vyplněním údajů byste je však měli vymazat, pokud tam již nějaké řádky jsou.

    TablePart.Clear();

    S cyklem Pro každého pojďme si projít tabulku hodnot s výsledky dotazu.

    Pro každý výsledek Element Of Result Loop End Of Loop ;

    V tomto cyklu vytvoříme a vyplníme řádky tabulkové části dokumentu Prodej zboží a služeb. Vytvořit nový řádek můžeme použít proměnnou TabularPart, jehož prostřednictvím s ním můžete provádět jakoukoli akci.

    NewStringPT = TabularPart.Add();

    Vyplňte záložku vytvořeného řádku. části dat z řetězce výsledku dotazu pomocí procedury globální kontextFillPropertyValues(<Приемник>, <Источник>) .

    FillPropertyValues(NewStringPT,ResultElement);

    Námi vyplněné údaje ale nestačí, aby mohl být doklad vyřízen, je potřeba vyplnit více inventarizační účty. K tomu používáme export

    postup Vyplňte fakturyAccountingInRowTabParts z modulu objektu dokumentu Prodej zboží a služeb. Nazvěme to parametrem Objekt(je třeba poznamenat

    že můžeme jen volat vývozní procedury z modulu objektu dokumentu).

    Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True);

    Tím je programování vyplňování tabulkové části pro 1C 8 dokončeno. zpracování lze použít. Celé znění postupu Inicializovat, vypadá takto:

    Postup Inicializovat (Object, TabularPartName = Nedefinováno, Object TableField = Nedefinováno) Vývozní TablePart = Object[TablePartName]; IncomingSelectionForm = GetForm("Form" ); AdmissionSelectionForm.OpenModally(); Pokud NE ValueFilled (Příchozí dokument) Pak nahlásit ( "Není vybrán žádný doklad o příjmu"); Vrátit se ; EndIf; Žádost = Nová žádost; Request.SetParameter( "Doklad o příjmu",Příjmový doklad); Query.Text = "VYBRAT | Příjem zboží, služeb, zboží, nomenklatura, | Příjem zboží, služeb, zboží, množství, | Příjem zboží, služeb, zboží, sazba DPH, | Příjem zboží, služeb, zboží. Částka, | Příjem zboží, služeb, zboží, výše DPH, | Příjem zboží, služeb, zboží Cena| OD | Dokument.Příjem zbožíSlužby.Zboží AS Příjem zbožíSlužbyZboží| KDE | GoodsReceiptServicesGoods.Reference = &ReceiptDocument"; Výsledek = Request.Execute().Upload(); TablePart.Clear(); Pro každý prvek výsledku ze smyčky výsledků NewRowPT = TabularPart.Add(); FillPropertyValues(NewStringPT,ResultElement); Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True); EndCycle ; EndProcedure

    V další části článku se dozvíte, jak odladit zpracování vyplňování tabulkové části a jak ji propojit s dokumentem.

    4. Ladění

    Docela často potřebujete ladit kód, který píšete. Aby bylo možné odladit zpracování vyplňování tabulkové části 1C 8 vytvořit její rekvizity ReferenceToObject typ DocumentReference.Realizace zbožíSlužby

    Potřebujeme ho, abychom při ladění vybrali implementační dokument, který vyplníme. Dále je potřeba vytvořit formulář pro ladění a umístit tam vytvořené rekvizity. ReferenceToObject, proces tvorby ladícího formuláře se neliší od vytváření formuláře pro výběr účtenky, proto se jím nebudeme podrobně zabývat.

    Po vytvoření formuláře přejděte do jeho modulu. Tam najdeme automaticky vytvořený postup ButtonExecutePushing. Tento postup se provede po stisknutí tlačítka. Běh. Nazvěme z toho postup Inicializovat, který se nachází v modulu zpracování, předáme objekt dokumentu do parametrů Prodej zboží a služeb(které získáme z rekvizit ReferenceToObject) a řádek s názvem tabulkové části, která se má vyplnit (v našem případě produkty).

    Postup ButtonExecuteClick(Button) Initialize(ReferenceToObject.GetObject(), "Zboží" ); EndProcedure

    Nyní je potřeba vytvořit z vytvořeného formuláře hlavní formulář zpracování. Chcete-li to provést, vyberte jej v poli "Formulář zpracování".

    Nyní můžete nastavit bod přerušení na správné místo postupy Inicializovat nebo postupy ButtonExecutePushing ladicí formuláře a začněte zpracovávat vyplňování tabulkové části v režimu ladění 1C: Podnik.

    5. Připojení k dokumentu

    Po zapsání a odladění zpracování vyplnění by mělo být připojeno k dokumentu, ze kterého se bude spouštět. Chcete-li to provést, přejděte na stránku 1C 8 v režimu Společnost, přejděte do nabídky Servis -> Dodatečné reporty a zpracování -> Dodatečné externí zpracování tabulkových částí a přidat nový prvek adresář. S tlačítkem Nahradit soubor externího zpracování Přidáme soubor zpracování plnění námi vytvořené tabulkové části.

    Vyplňte příslušnost ke zpracování pomocí tlačítka Výběr vyberte dokument Prodej zboží a služeb

    A uvádíme, že náplň je určena pro tabulkovou část produkty.

    Stiskneme tlačítko OK a je to, v nabídce bude k dispozici zpracování plnění Vyplnit tabulková část produkty dokument Prodej zboží a služeb. Zpracování použité pro tento příklad si můžete stáhnout .

    Takže v 1C jsou adresáře. Například referenční kniha zboží (nomenklatura). Tam uvedeme seznam zboží, které naše organizace prodává.

    Pomocí takového adresáře můžeme uspořádat ceník pro zákazníky a také zprávu o prodeji pro management.

    Zboží je různé. Například produkty a chemie. Co dělat, když manažer požádá o vypracování zprávy - kolik peněz jsme vydělali na produktech a kolik na chemii?

    Snadno! odpovíme. Musíte přidat adresář Druhy zboží a v adresáři Nomenklatura přidat takový atribut. Teď, když vstoupíme nový výrobek- budete muset vybrat typ produktu.

    Dívky však s touto novinkou nejsou spokojeny - protože teď potřebují vyplnit celé další pole a už mají spoustu práce a nemají čas nic dělat. A vůbec! - říkají - máme 900 položek produktů a pouze 50 položek chemie! I blázen je jasné, že je potřeba nastavit výchozí typ produktu na produkty.

    Vynikající! - bereme na vědomí. A… co dělat?

    Konstanty 1C

    Chcete-li upravit konstanty, otevře se výchozí formulář konstant. Každé pole na takovém formuláři je jedna konstanta.

    Existují dva způsoby, jak přidat konstantní tvar:

    • Klikněte pravým tlačítkem na větev Konstanty 1C a vyberte položku nabídky Vytvořit formulář konstant
    • Přidejte formulář do větve Obecné/Obecné formuláře a v průvodci vyberte typ formuláře - Konstantní formulář.

    Formu konstant můžete zobrazit (a vybrat) následovně:

    • Zadejte vlastnosti konfigurace (klikněte pravým tlačítkem myši na horní kořenovou větev konfigurace, kterou programátoři obvykle nazývají „Head“) a použijte vlastnost Konstanty Basic Form.

    Forma konstant se liší tím, že hlavní atribut formuláře má typ "ConstantsSet". To umožňuje zapisovat konstanty 1C ne jednotlivě, ale okamžitě jako sadu.

    Mimochodem, atribut formuláře se stane „hlavním“, pokud je zadán ve vlastnosti Data ve vlastnostech formuláře.

    V programu 1C lze snadno a jednoduše přistupovat k jakékoli konstantě:

    Hodnota = Constants.DesiredConstant.Get(); //číst
    Constants.DesiredConstant.Set(Vn); //napsat

    Parametry relace 1C

    Problém je tedy vyřešen jednoduše a s elegancí – vytvoříme konstantu, do které uložíme výchozí typ produktu.

    Při vytváření nového produktu program v jazyce 1C nastaví hodnotu pole Product Type v OnOpeningForm() na hodnotu přiřazenou v konstantě. Voila!

    Nyní program funguje, ale tím nekončíme! Přesto – jsme cool programátoři, chceme, aby program nejen fungoval, ale také rychle!

    Kde jsou uloženy konstanty 1C? V databázi, ve speciální tabulce. Pokaždé, když operátor vytvoří nový produkt, nabourá se na server a přečte hodnotu konstanty 1C. Co když je 200 operátorů? Je to optimální?

    co potom dělat?

    A zde si připomínáme parametry relace 1C. Jedná se o hodnoty, jako jsou konstanty, které se vyplňují při spuštění 1C v režimu Enterprise a jsou okamžitě dostupné na klientovi. Jinými slovy jde o jakousi mezipaměť na straně klienta.

    Pokud navíc dokážeme seznam uložit do konstanty pouze do value store, tak jej již můžeme rozbalit do parametru 1C session, byť nebude dynamický – s typem FixedArray.

    Parametry relace 1C jsou také v konfiguračním okně umístěném ve větvi General / 1C session parameters.

    Nestačí přidat parametr relace 1C, protože pokud není vyplněn, program zobrazí chybu.

    Vyplnění (nastavení) parametrů relace 1C by mělo být provedeno na začátku 1C v režimu Enterprise. Klepněte pravým tlačítkem myši na horní větev konfigurace (programátoři ji nazývají "Head") a vyberte položku nabídky Open session module.

    Modul již může mít funkci SetSessionParameters(). Pokud ještě žádná není, vyberte tuto událost v odpovídajícím rozevíracím seznamu. Zde je příklad nastavení hodnoty parametru relace 1C:

    SessionParameters.RequiredParameter = Hodnota; //záznam, jednou úplně na začátku
    Hodnota = SessionParameters.RequiredParameter; //čtení, přísně po psaní.