Krótka informacja na temat korzystania z OLE w 1C-Enterprise.

Aby uruchomić system 1C-Enterprise jako serwer OLE Automation z aplikacji zewnętrznej, wykonaj następującą sekwencję czynności:

  1. Tworzony jest obiekt z identyfikatorem OLE (wielkość znaków nie jest istotna):
  • V1CEnterprise.Application - klucz niezależny od wersji;
  • V77.Application - klucz zależny od wersji;
  • V77S.Application - klucz zależny od wersji, wersja SQL;
  • V77L.Application - klucz zależny od wersji, wersja lokalna;
  • V77M.Application - klucz zależny od wersji, wersja sieciowa.
  • System 1C-Enterprise jest inicjowany przy użyciu metody Inicjalizacja().
  • Atrybuty i metody systemu 1C-Enterprise nazywane są serwerem automatyzacji OLE.
  • 1C-Enterprise jako serwer OLE Automation ma 4 metody:

    • Zainicjuj() - zainicjuj system 1C-Enterprise.
    • CreateObject() - Tworzy obiekt zagregowanego typu danych 1C-Enterprise i zwraca do niego łącze.
    • EvalExpr() - Oblicz wyrażenie systemu 1C-Enterprise.
    • ExecuteBatch() - Wykonaj sekwencję operatorów w systemie 1C-Enterprise.

    Metody:

    1. Zainicjuj() - otwórz bazę danych.

    Składnia metody jest następująca:

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

    <Имя объекта>.RMTrade - nazwa zmiennej i słowo kluczowe RMTrade.
    <Командная строка> - wiersz poleceń, w którym możesz wpisać ścieżkę do bazy danych, identyfikator użytkownika i hasło.
    <Пустая строка>) — albo pusty ciąg znaków, albo „NO_SPLASH_SHOW” — aby nie wyświetlać ekranu powitalnego podczas ładowania.

    Aby otworzyć bazę danych poprzez OLE należy utworzyć obiekt z identyfikatorem OLE, zainicjalizować bazę danych i sprawdzić poprawność inicjalizacji. W moim przykładzie nie określam żadnego dodatkowe parametry, więc otworzy się kwadratowe okno wyboru bazy danych, prosząc o wybranie użytkownika i podanie hasła.

    OtherBase = CreateObject("V77.Application"); Open=OtherBase.Initialize(OtherBase.RMTrade,); Jeśli Open=0 To // True=-1, False=0. Dla wszystkich poleceń OLE. Report("Baza danych nie została otwarta."); Powrót; koniecJeśli;

    2. CreateObject() - utwórz obiekt typu agregatowego.

    Ta metoda tworzy obiekt o zagregowanym typie danych systemu 1C-Enterprise i zwraca do niego link.

    Składnia metody jest następująca:

    Utwórz obiekt (<ИмяАгрегатногоТипа>)

    <ИмяАгрегатногоТипа>- wyrażenie łańcuchowe, którego wartość zawiera nazwę typu danych zagregowanych określonych w konfiguratorze. Na przykład: „Katalog.Nomenklatura”, „Dokument.Faktura”.

    3. EvalExpr() - oceń wyrażenie.

    Składnia metody jest następująca:

    WartośćWyr(<СтрокаВыражения>)

    <СтрокаВыражения>- wyrażenie łańcuchowe zapisane we wbudowanym języku 1C-Enterprise.

    Wynikiem wyrażenia może być liczba, ciąg znaków, data lub wartość dowolnego zagregowanego typu danych. Wynik o niezdefiniowanym typie jest konwertowany na typ ciągu.

    4. ExecuteBatch() - wykonaj sekwencję instrukcji.

    Składnia metody jest następująca:

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

    <СтрокаОператоров>- wyrażenie łańcuchowe, tekst programu w wbudowanym języku przedsiębiorstwa 1C.

    Zwraca wartość logiczną: PRAWDA, jeśli sekwencja instrukcji zakończyła się pomyślnie, FAŁSZ, jeśli nie. W OLE Automation wartości PRAWDA i FAŁSZ mają odpowiednio wartości -1 (minus jeden) i 0.

    Przykład: utworzenie dokumentu w innej bazie danych otwartej poprzez OLE.

    Rozładunek następuje w wyniku przetwarzania. SelectDocument - dokument wybrany przez użytkownika w celu przesłania go do innej bazy danych.

    OtherBase = CreateObject("v77.application"); Open=OtherBase.Initialize(OtherBase.RMTrade,); Jeśli Open=0, to Report("Baza danych nie została otwarta."); Powrót; koniecJeśli; dDoc = OtherBase.CreateObject("Dokument. Faktura"); dProduct = OtherBase.CreateObject("Katalog.Nomenklatura"); dDoc.Nowy(); dDoc.DataDoc = WybierzDocument.DataDoc; dDoc.Company = OtherBase.evalexpr("Stała.MainCompany"); dDoc.Warehouse = OtherBase.evalexpr("Constant.MainWarehouse"); dDoc.PriceCategory = OtherBase.evalexpr("Constant.IncomingPriceCategory"); dDoc.Opcja obliczenia podatku = OtherBase.evalexpr("Opcja obliczenia stałego.głównego podatku"); dDoc.Currency=OtherBase.evalexpr("Constant.BaseCurrency");//rubli dDoc.Rate_Date=dDoc.DataDoc; dDoc.AccountingType=1; dDoc.Author = OtherBase.evalexpr("glUser"); dDoc.Invoice Attribute = OtherBase.evalexpr("Transfer.AcknowledgmentInvoice.Purchase"); dDoc.Course=1;//rubli dDoc.Comment=WybierzDOKUMENT.Komentarz; WybierzDokument.WybierzLinie(); Podczas gdy SelectDocument.GetLine()=1 Pętla dDoc.NewLine(); ItemCode=AbbrLP(WybierzDOKUMENT.Item.Code); Jeśli dProduct.FindByCode(ProductCode) = 0 then Report("Produkt z kodem "+ProductCode nie został znaleziony); Powrót; koniecJeśli; dItem.UseDate(dDoc.DataDoc); dDoc.Product = dProduct.CurrentItem(); dDoc.Quantity = WybierzDokument.Ilość; dDoc.Unit = dItem.Default Jednostka; dDocument.Price = WybierzDocument.Cena; dDoc.Współczynnik=1; dDocument.Total = WybierzDocument.Ilość; dDoc.Amount = SelectDocument.Amount-SelectDocument.NP; dDoc.Stawka VAT = dProdukt.Stawka VAT; dDoc.VAT=WybierzDokument.VAT; dDoc.RateNP=dProduct.RateNP; dDoc.AmountNP=WybierzDokument.NP; Koniec cyklu; dDoc.SetNewNumber(AnotherBase.evalexpr("Stały.Prefiks numerów dokumentów kontroli księgowej")); Raport(""+dDoc.DocNumber); dDoc.Write();

    Ten przykład działa w 100%. Używam go do przesyłania dokumentów z jednej konfiguracji do drugiej.

    Porównanie w bazie OLE. Stałe, wyliczenia, elementy katalogów.

    Aby porównać wartości zagregowanych typów danych w bazie danych otwieranej poprzez Ole, należy zastosować standardowy algorytm wykorzystujący znaki równości i nierówności (=,<>) nie działa. Rozwiązanie jest proste. Należy odejść od porównywania zagregowanych typów danych na rzecz prostych typów danych – daty, ciągu znaków i liczby.

    Stąd wniosek: nie porównujemy samych elementów, ale ich unikalne cechy. Na przykład w przypadku elementów katalogu jest to kod (jeśli istnieje) lub nazwa. Do wyliczenia używana jest metoda Identifier(). Oto dwa przykłady:

    //Porównanie szczegółów pozycji ze stałą bazową walutą If dProduct.AccountingCurrency.Code<>Other.Constant.BaseCurrency.Code Następnie dProduct.AccountingCurrency=Other.Constant.BaseCurrency; koniecJeśli; //Porównywanie szczegółów pozycji z wyliczeniem If dProduct.ProductType.Identifier()<>Other.Enumeration.ProductTypes.Piece.Identifier() Następnie dProduct.ProductType=Other.Enumeration.ProductTypes.Piece; koniecJeśli;

    Parametry sesji 1C 8.3— zmienna przechowująca wartość żądanego parametru przez czas trwania sesji użytkownika. Zasadniczo jest to rodzaj zmiennej globalnej powiązanej z sesją bieżącego użytkownika.

    Używanie parametrów sesji w 1C

    Parametry sesji ustawiane są wyłącznie programowo, nie ma w systemie uniwersalnego interfejsu do ustawiania parametrów sesji. Zazwyczaj ustawia się je przy uruchomieniu systemu, w „Module Sesyjnym”. Jeśli parametr nie jest zdefiniowany, przy dostępie do niego zostanie zgłoszony błąd.

    Przykład ustawienia parametru sesji 1C

    Spójrzmy na typowy przykład użycia parametrów sesji - ustawienie bieżącego użytkownika. Wezmę przykład z przygotowań do.

    W drzewie metadanych, które utworzymy nowy parametr sesja - CurrentUser, przypisz jej typ - DirectoryLink.Individuals:

    Uzyskaj 267 lekcji wideo na 1C za darmo:

    W module sesji utworzymy procedurę, w której zostanie określony aktualny parametr sesji:

    Kod procedury:

    Procedura Ustawianie parametrów sesji (parametry wymagane) // szukam fizycznego osoba według nazwy użytkownika TechUser = Katalogi. Osoby. FindByName(NazwaUżytkownika()) ; //jeśli nie zostanie znaleziony, utwórz nowy Jeśli TechUser. Puste() Następnie NewUser = Katalogi. Osoby. Utwórz element() ; Nowy użytkownik. Imię = NazwaUżytkownika() ; Nowy użytkownik. Pisać() ; Bieżący użytkownik = Nowy użytkownik. Połączyć; KoniecJeśli ; //przypisz do parametru sesji CurrentUser link do katalogu osób Parametry sesji. BieżącyUżytkownik = BieżącyUżytkownik; Koniec procedury

    1. Opis problemu

    W tym artykule przyjrzymy się procesowi pisania najprostszego przetwarzanie zewnętrzne wypełnienie części tabelarycznej 1C 8 do konfiguracji przy użyciu zwykłej aplikacji. Weźmy na przykład następujące zadanie: „W konfiguracji 1C: Rachunkowość 2.0 utwórz zewnętrzne przetwarzanie do wypełnienia sekcji tabeli Dobra dokumentu, dane do uzupełnienia pobierane są z części tabelarycznej Dobra dokument Odbiór towarów i usług" Dlatego musimy wypełnić pozycje sprzedaży na podstawie otrzymanych towarów, zadanie to jest dość powszechne w prawdziwej praktyce programisty 1C.

    2. Utwórz przetwarzanie zewnętrzne

    Chodźmy do 1C 8 w trybie Konfigurator. Korzystanie z menu Plik -> Nowy lub piktogramy nowy dokument stwórzmy nowy przetwarzanie zewnętrzne.

    W polu Nazwa wskażemy: „Najprostsze wypełnienie części tabelarycznej” i zapiszemy przetwarzanie zewnętrzne na dysk twardy korzystając z menu Plik -> Zapisz lub piktogram Ratować lub skrót klawiaturowy Ctrl+S.

    Wybór oddziału Przybory w przetwarzającym drzewie metadanych i kliknięciu przycisku Dodać(przycisk z zielonym plusem) utwórz nowy atrybut przetwarzania zewnętrznego - DokumentPotwierdzenia, wybierz dla niego typ DocumentLink Odbiór towarów i usług, potrzebujemy tego atrybutu, aby wybrać dokument Odbiór towarów i usług, na podstawie którego zostanie wypełniona realizacja.

    Aby wybrać dokument paragonowy, będziemy potrzebowali osobnego formularza. Wybór oddziału Formularze i używając tego samego przycisku - Dodać Stwórzmy zewnętrzny formularz przetwarzania. Otworzy się okno projektanta formularzy, nie musisz wprowadzać żadnych zmian na pierwszej stronie projektanta, wystarczy kliknąć przycisk Dalej.

    Na drugiej stronie projektanta musimy wybrać rekwizyty DokumentPotwierdzenia(tak aby pojawił się na utworzonym formularzu) i wciśnij przycisk Gotowy.

    Następnie otworzy się utworzony formularz, musimy wybrać na nim dokument paragonu i go zamknąć. Więc po naciśnięciu przycisku Wykonać Formularz powinien się po prostu zamknąć. Aby to zaimplementować, wybierz przycisk Wykonać, Kliknij na to kliknij prawym przyciskiem myszy myszką i wybierz element Nieruchomości. We właściwościach przycisku, w wierszu Działanie wybierz akcję - Zamknąć. To kończy pracę z formularzem, zamknijmy go.

    3. Programowanie

    Zacznijmy programować przetwarzanie wypełnienia części tabelarycznej. Chodźmy do Moduł obiektowy przetwarzanie zewnętrzne (na dolnym panelu przetwarzania znajduje się przycisk Akcje -> Otwórz moduł obiektu).

    Musimy w nim stworzyć procedurę eksportu Zainicjuj.

    Procedura Zainicjuj Eksport Koniec procedury

    zauważ to procedura Zainicjuj, jak również wszystkie jego parametry, są obowiązkowe dla zewnętrznego przetwarzania wypełnienia części tabelarycznej, jeśli go nie utworzysz lub nie określisz wszystkich parametrów, przetwarzanie po prostu nie będzie działać.

    Teraz zacznijmy pisać kod programu. Na początek utwórzmy zmienną dla części tabelarycznej dokumentu Sprzedaż towarów i usług które wypełnimy.

    Część Tabularna = Obiekt [Nazwa Części Tabularnej];

    Podczas wykonywania procedury w parametrze Obiekt będzie zawierać obiekt dokumentu, który wypełniamy oraz parametr NazwaCzęści tabelarycznej linia z nazwą części tabelarycznej, którą wypełniamy. W ten sposób ta linia kodu powoduje wypełnienie tabelarycznej części dokumentu według jej nazwy.

    Potrzebujemy, aby użytkownik wybrał dokument Odbiór towarów i usług, napiszmy więc kod otwierający formularz wyboru dokumentu. Najpierw przekształćmy ten formularz w zmienną, korzystając z metody przetwarzania zewnętrznego Pobierz formularz(<Форма>, <Владелец>, <КлючУникальности>) . Wystarczy wypełnić pierwszy parametr tej metody przekazując tam string z nazwą naszego formularza.

    ReceiptSelectionForm = GetForm("Formularz");

    Otwórzmy teraz powstały formularz za pomocą otwarcia modalnego (kiedy formularz jest otwarty, wszystkie pozostałe okna 1C są niedostępne), ponieważ przy tej metodzie otwierania nasz dalszy kod w procedurze Zainicjuj nie zostanie wykonane, dopóki użytkownik nie zamknie formularza.

    Formularz wyboru paragonu.OpenModal();

    Po zamknięciu formularza przez użytkownika musimy sprawdzić, czy dane zostały wypełnione DokumentPotwierdzenia(w przypadku braku wyboru dokumentu paragonowego). Jeżeli po sprawdzeniu DokumentPotwierdzenia jest pusty, wówczas dalsze przetwarzanie nie ma sensu i należy je przerwać.

    Jeśli NIE wypełniono wartością (dokument odbioru), następnie zgłoś (); Powrót ; KoniecJeśli ;

    Aby sprawdzić, czy szczegóły są kompletne, wykorzystywana jest tutaj funkcja kontekstu globalnego Wartość wypełniona (<Значение>) , sprawdza, czy wartość przekazana w parametrze różni się od wartości domyślnej tego samego typu. Procedura Zgłosić wyświetla określony tekst w oknie wiadomości 1C 8. Słowo kluczowe Powrót przerywa wykonanie procedury.

    Zacznijmy pisać zapytanie, które wybierze dane tabelaryczne Dobra dokument Odbiór towarów i usług. Utwórzmy nowe żądanie:

    Żądanie = Nowe żądanie;

    Żądanie.UstawParametr( „Potwierdzenia dokumentów”,Dokument odbioru);

    Napiszmy tekst żądania i zróbmy to za pomocą Konstruktor zapytań. Nie zaleca się ręcznego wpisywania tekstu żądania, jest to nieefektywne i zajmuje dużo czasu. Najpierw napiszmy linię:

    Żądanie.Text = "" ;

    Umieść kursor pomiędzy cudzysłowami, naciśnij prawy przycisk myszy i wybierz element Konstruktor zapytań.... Następnie zostaniesz poproszony o utworzenie nowego żądania, kliknij przycisk „OK”. Otworzy się okno projektanta, po lewej stronie znajdują się wszystkie dostępne tabele bazy danych, potrzebujemy dokumentu Odbiór towarów i usług. Znajdźmy go i rozwińmy za pomocą symbolu „+”, wybierzmy część tabelaryczną Dobra i przeciągnij go do drugiej części ekranu projektanta, która nazywa się Stoły(Możesz także przenieść żądaną tabelę za pomocą przycisku „>”).

    Teraz rozwińmy wybraną tabelę o „+”( Odbiór towarówUsługiTowary) i przeciągamy pola niezbędne do naszego tabelarycznego wypełnienia na trzecią część ekranu projektanta, która nazywa się - Pola. Nie będziemy zaznaczać wszystkich dostępnych pól, ograniczymy się do następującego zestawu: Nomenklatura, Ilość, Cena, Kwota, Stawka VAT, Kwota VAT.

    Ponieważ potrzebujemy danych tylko jednego dokumentu paragonowego (który wybraliśmy przed rozpoczęciem wypełniania), to w zakładce „Warunki” nałożymy warunek na powiązanie dokumentu za pomocą przekazanego przez nas parametru.

    Tworzenie tekstu żądania w projektancie zostało zakończone; kliknij przycisk „OK”. W rezultacie otrzymaliśmy następujący tekst żądania:

    Query.Text = "WYBIERZ |Z |GDZIE ;

    Utworzone zapytanie wystarczy wykonać i przesłać do zmiennej:

    Wynik = Request.Run().Upload();

    W zmiennej Wynik przechowywana jest tabela wartości z wierszami części tabelarycznej Dobra wybrany przez nas dokument Odbiór towarów i usług. Teraz możesz przystąpić do wypełniania części tabelarycznej Dobra nasza realizacja. Ale przed wypełnieniem danych należy je wyczyścić, na wypadek, gdyby były tam już jakieś linie.

    CzęśćTabeli.Wyczyść();

    Korzystanie z pętli Dla każdego Przejdźmy przez tabelę wartości z wynikami zapytania.

    Dla każdego elementu wyniku z cyklu wynikowego EndCycle ;

    W tym cyklu utworzymy i wypełnimy wiersze części tabelarycznej dokumentu Sprzedaż towarów i usług. Tworzyć Nowa linia możemy użyć zmiennej Część tabelaryczna, dzięki któremu możesz wykonać z nim dowolne akcje.

    NewRowTC = Część tabelaryczna.Dodaj();

    Wypełnijmy utworzoną linię w tabeli. części danych z ciągu wynikowego zapytania, korzystając z procedury Kontekst globalnyWypełnij wartości właściwości (<Приемник>, <Источник>) .

    FillPropertyValues(NewRowTC, ResultElement);

    Jednak dane, które wypełniliśmy, nie wystarczą, aby dokument mógł zostać przetworzony, musimy wypełnić ich więcej rachunki księgowe pozycji. W tym celu skorzystamy z eksportu

    procedura WypełnijAccountingInLineTabParts z modułu obiektu dokumentu Sprzedaż towarów i usług. Nazwijmy to za pomocą parametru Obiekt(należy zauważyć

    że możemy tylko zadzwonić eksport procedury z modułu obiektu dokumentu).

    Obiekt.FillAccountingInLineTabPart(NewRowTCH, TabularPartName, True);

    Na tym kończy się programowanie wypełnienia części tabelarycznej 1C 8 zakończony. Można zastosować przetwarzanie. Pełny tekst procedury Zainicjuj, na to wygląda:

    Procedura Zainicjuj (Obiekt, TablePartName = niezdefiniowany, ObjectTableField = niezdefiniowany) Eksport Część Tabularna = Obiekt [Nazwa Części Tabularnej]; ReceiptSelectionForm = GetForm("Formularz"); Formularz wyboru paragonu.OpenModal(); Jeśli NIE wypełniono wartością (dokument odbioru), zgłoś ( „Nie wybrano dokumentu paragonu”); Powrót ; KoniecJeśli ; Żądanie = Nowe żądanie; Żądanie.UstawParametr( „Potwierdzenia dokumentów”,Dokument odbioru); Query.Text = "WYBIERZ | Odbiór Towarów i Usług Towarów Nomenklatura, | Odbiór Towarów i Usług Towarów Ilość, | Odbiór Towarów i Usług Towarowych Stawka VAT, | Odbiór Towarów i Usług Towarów Ilość, | Odbiór Towarów i Usług Towarowych Kwota podatku VAT, | Odbiór Towarów i Usług Towarów Cena|OD | Dokument Odbiór towarów i usług Towar JAK Odbiór towarów i usług Towary|GDZIE | Odbiór GoodsServicesProducts.Link = &DocumentReceipts"; Wynik = Request.Run().Upload(); CzęśćTabeli.Wyczyść(); Dla każdego elementu wyniku z cyklu wynikowego NewRowTC = TabularPart.Add(); FillPropertyValues(NewRowTC, ResultElement); Obiekt.FillAccountingInLineTabPart(NewRowTCH, TabularPartName, True); Koniec cyklu ; Koniec procedury

    W dalszej części artykułu dowiesz się, jak debugować przetwarzanie wypełniania części tabelarycznej i jak połączyć ją z dokumentem.

    4. Debugowanie

    Dość często trzeba debugować pisany kod. Aby debugować przetwarzanie wypełniania części tabelarycznej 1C 8 stwórzmy dla niej rekwizyty Odniesienie do obiektu typ DocumentLink Sprzedaż towarów i usług

    Potrzebujemy tego, abyśmy podczas debugowania mogli wybrać dokument wdrożeniowy, który wypełnimy. Następnie musisz utworzyć formularz do debugowania i umieścić tam utworzone atrybuty Odniesienie do obiektu, proces tworzenia formularza debugowania nie różni się od tworzenia formularza wyboru dokumentu paragonu, więc nie będziemy się nad nim szczegółowo rozwodzić.

    Po utworzeniu formularza przejdźmy do jego modułu. Znajdziemy tam automatycznie utworzoną procedurę PrzyciskWykonajNaciśnij. Ta procedura jest uruchamiana po naciśnięciu przycisku Wykonać. Wywołajmy z tego procedurę Zainicjuj, który znajduje się w module przetwarzającym, przekażemy obiekt dokumentu do parametrów Sprzedaż towarów i usług(które otrzymamy z rekwizytów Odniesienie do obiektu) i linijkę z nazwą części tabelarycznej do wypełnienia (w naszym przypadku Dobra).

    Procedura PrzyciskWykonajNaciśnij (przycisk) Zainicjuj(Ref.Object.GetObject(), "Produkty"); Koniec procedury

    Teraz musisz uczynić utworzony formularz głównym formularzem przetwarzania. W tym celu należy zaznaczyć ją w polu „Formularz przetwarzania”.

    Teraz możesz ustawić punkt przerwania w we właściwym miejscu procedury Zainicjuj lub procedury PrzyciskWykonajNaciśnij debuguj formularze i uruchamiaj przetwarzanie wypełniania części tabelarycznej w trybie debugowania 1C: Przedsiębiorstwa.

    5. Połącz się z dokumentem

    Po zapisaniu i debugowaniu przetwarzania wypełniania należy je połączyć z dokumentem, z którego zostanie wykonane. Aby to zrobić, przejdźmy do 1C 8 w trybie Firma, przejdźmy do menu Serwis -> Dodatkowe raporty i obróbka -> Dodatkowa obróbka zewnętrzna części tabelarycznych i dodaj nowy element książka referencyjna. Korzystanie z przycisku Zastąp zewnętrzny plik przetwarzania Dodajmy plik, który utworzyliśmy w celu przetworzenia wypełnienia części tabelarycznej.

    Wypełnijmy akcesorium do przetwarzania za pomocą przycisku Wybór wybierz dokument Sprzedaż towarów i usług

    I wskazujemy, że wypełnienie jest przeznaczone do części tabelarycznej Dobra.

    naciśnij przycisk OK i to wszystko, w menu dostępna będzie obróbka napełniania Wypełnić część tabelaryczna Dobra dokument Sprzedaż towarów i usług. Przetwarzanie zastosowane w tym przykładzie można pobrać pod adresem .

    Tak więc w 1C są podręczniki. Na przykład katalog towarów (nomenklatura). Tam wskażemy listę towarów sprzedawanych przez naszą organizację.

    Za pomocą takiego katalogu możemy uporządkować cennik dla klientów, a także raport sprzedaży dla kadry zarządzającej.

    Produkty są różne. Na przykład produkty i chemia. Co powinniśmy zrobić, jeśli menadżer poprosi nas o sporządzenie raportu – ile zarobiliśmy na produktach, a ile na chemii?

    Łatwo! - odpowiemy. Musisz dodać katalog Rodzaje produktów i dodać następujące szczegóły w katalogu Nomenklatura. Teraz, kiedy wchodzimy nowy produkt– będziesz musiał wybrać rodzaj produktu.

    Dziewczyny nie są jednak zachwycone tą innowacją - w końcu teraz muszą wypełnić całe dodatkowe pole, a mają już dużo pracy i nie mają czasu na nic. I na ogół! – mówią – mamy 900 rodzajów produktów i tylko 50 rodzajów chemii! Nawet głupiec widzi, że domyślnym typem produktu powinny być produkty.

    Świetnie! – zauważymy. I co robić?

    Stałe 1C

    Aby edytować stałe, otwiera się domyślny formularz stałych. Każde pole w tym formularzu jest jedną stałą.

    Istnieją dwa sposoby dodania formularza stałego:

    • Kliknij prawym przyciskiem myszy gałąź Stałe 1C i wybierz element menu Utwórz formularz stały
    • Dodaj formularz do gałęzi Formularze Ogólne/Ogólne i w kreatorze wybierz typ formularza – Formularz stały.

    Możesz przeglądać (i wybierać) postać stałych w następujący sposób:

    • Wprowadź właściwości konfiguracji (kliknij prawym przyciskiem myszy górną gałąź główną konfiguracji, którą programiści zwykle nazywają „Główką”) i użyj podstawowej formy właściwości stałych.

    Formularz stałych różni się tym, że głównym atrybutem formularza jest typ „ConstantsSet”. Pozwala to na zapisanie stałych 1C nie pojedynczo, ale natychmiast jako zestaw.

    Nawiasem mówiąc, atrybut formularza staje się „podstawowy”, jeśli jest określony we właściwości Data we właściwościach formularza.

    W programie w języku 1C możesz łatwo i prosto uzyskać dostęp do dowolnej stałej:

    Wartość = Stałe.NecessaryConstant.Get(); //Czytać
    Stałe.NiezbędneConstant.Set(Wartość); //zanotować

    Parametry sesji 1C

    Zatem problem rozwiązuje się prosto i z gracją - tworzymy stałą, w której będziemy przechowywać domyślny typ produktu.

    Podczas tworzenia nowego produktu program języka 1C w OnOpenForm() ustawi wartość pola Product Type na przypisaną w stałej. Voila!

    Teraz program działa, ale na tym nie poprzestaniemy! Oczywiście - jesteśmy fajnymi programistami, zależy nam na tym, żeby program nie tylko działał, ale i działał szybko!

    Gdzie przechowywane są stałe 1C? W bazie danych, w specjalnej tabeli. Za każdym razem, gdy operator tworzy nowy produkt, włamie się do serwera i odczyta wartość stałej 1C. A co jeśli będzie 200 operatorów? Czy to jest optymalne?

    Co wtedy zrobić?

    I tutaj pamiętamy o parametrach sesji 1C. Są to wartości takie jak stałe, które są wypełniane w momencie uruchomienia 1C w trybie korporacyjnym i są natychmiast dostępne na kliencie. Innymi słowy, jest to rodzaj pamięci podręcznej po stronie klienta.

    Dodatkowo, jeśli w stałej możemy przechowywać listę tylko w magazynie wartości, to możemy ją już rozpakować do parametru sesji 1C, choć nie będzie ona dynamiczna - będzie typu FixedArray.

    Parametry sesji 1C znajdują się również w oknie konfiguracji, znajdującym się w gałęzi Parametry sesji Ogólne/1C.

    Nie wystarczy dodać parametr sesji 1C, ponieważ jeśli nie zostanie wypełniony, program wyświetli błąd.

    Wypełnianie (ustawianie) parametrów sesji 1C należy wykonać podczas uruchamiania 1C w trybie Enterprise. Kliknij prawym przyciskiem myszy górną gałąź konfiguracji (programiści nazywają ją „Głową”) i wybierz pozycję menu Otwórz moduł sesji.

    Moduł może już posiadać funkcję SettingSessionParameters(). Jeśli jeszcze takiego nie ma, wybierz to wydarzenie z odpowiedniej listy rozwijanej. Oto przykład ustawienia wartości parametru sesji 1C:

    SessionParameters.RequiredParameter = Wartość; //nagraj, raz na samym początku
    Wartość = SessionParameters.RequiredParameter; //czytanie, ściśle po napisaniu.