Okna.  Wirusy.  Laptopy.  Internet.  Biuro.  Narzędzia.  Kierowcy

Edytor formularzy służy do tworzenia i edytowania formularzy obiektów rozwiązań aplikacyjnych. Kształty obiektów są wykorzystywane przez system do wizualnego wyświetlania danych obiektów podczas pracy użytkownika.

Dowolna forma reprezentuje kombinację trzech komponentów:

  • dialog formularza - okno, które zostanie wyświetlone na ekranie;
  • moduł formularza - program w języku wbudowanym odpowiedzialny za pracę z kontrolkami formularzy i przetwarzaniem zdarzeń;
  • szczegóły formularza - zbiór obiektów należących do formularza, których dane wykorzystuje w swojej pracy.

Edytor formularzy sam umożliwia edycję okna formularza, jego szczegółów oraz wywołuje edytor tekstu i modułu w celu edycji modułu formularza.

Okno edytora formularzy zawiera trzy zakładki umożliwiające edycję wszystkich trzech elementów formularza.

Edytowanie okna formularza

Edytor formularzy umożliwia programiście pełne wykorzystanie szerokiej gamy możliwości okna dialogowego. Wymieńmy główne:

Panele, strony, zakładki

Edytor okien dialogowych umożliwia programiście umieszczenie w formularzu specjalnych elementów sterujących, które pomagają nadać formularzowi własny, rozpoznawalny styl, sprawić, że dostęp do danych będzie prosty i przejrzysty, a także zmieścić dużą ilość informacji na ograniczonym obszarze.

Edytor umożliwia umieszczenie na formularzu kilku paneli, z których każdy może zawierać kilka stron. Przykładowo formularz dokumentu może zawierać panel składający się z dwóch stron: Produkty i Dodatkowe:

Deweloper ma możliwość ustawienia trybu, w którym strony będą się przewijać w obrębie panelu, lub wykorzystania zakładek do przełączania się pomiędzy stronami. Edytor umożliwia zdefiniowanie dużej liczby różnych opcji lokalizacji i wyświetlania zakładek:

Na przykład zakładki można umieścić poziomo na górze:

Możesz też ustawić zakładki po lewej stronie pionowo:

Sterownica

Edytor umożliwia umieszczenie na formularzu dużej liczby różnych kontrolek. Kontrole można umieszczać przeciągając lub korzystając ze specjalnego okna dialogowego wstawiania kontrolek, które pozwala jednocześnie ustawić żądane właściwości wybranej kontrolki:

W przypadku, gdy formularz zawiera dużą liczbę kontrolek, programista może skorzystać z trybu wyświetlania kontrolek na liście, co pozwala szybko przejść do żądanej kontroli:

Edytor umożliwia określenie kolejności, w jakiej użytkownik będzie pomijał kontrolki formularza podczas wprowadzania i edycji danych. Istnieje możliwość ustawienia automatycznej kolejności przechodzenia lub ręcznego ustawienia kolejności przechodzenia w specjalnej liście kontrolek lub klikając myszką bezpośrednio na formularzu:

Siatka, wyrównanie

Edytor formularzy ma ogromne możliwości kontrolowania rozmieszczenia elementów na formularzu. W szczególności obsługuje układ siatki, w którym krawędzie i rozmiary kontrolek są dopasowane do siatki układu znajdującej się na formularzu. Deweloper ma możliwość zmiany nachylenia siatki znakującej i w ten sposób uzyskania bardziej precyzyjnej lokalizacji elementów sterujących:

Edytor obsługuje również użycie linii wyrównania, które służą do ułatwienia wyrównania i względnego położenia kontrolek formularza. Na przykład na poniższej ilustracji linie wyrównania służą do rozmieszczania elementów sterujących na stronie Więcej:

Programista ma możliwość umieszczenia na stronie wymaganej liczby linii wyrównujących poziomych lub pionowych, a także zastosowania niewidocznych linii wyrównujących. Edytor automatycznie tworzy niewidoczne linie wyrównania po wyrównaniu dwóch lub więcej kontrolek wzdłuż którejkolwiek z granic. Na przykład, jeśli dwa pola o tym samym rozmiarze zostały wyrównane do lewej strony, wzdłuż prawych krawędzi tych pól zostanie utworzona niewidoczna linia wyrównania.

Wyrównanie elementów sterujących można również wykonać za pomocą specjalnych znaczników wskazujących pożądany kierunek ruchu elementów sterujących. Znaczniki pojawiają się, gdy dwie kontrolki znajdują się blisko siebie.

Niebieskie uchwyty wyrównywania wskazują pożądany kierunek ruchu kontrolki, aby wyrównać ją z jedną z granic sąsiedniego kontrolki:

Czerwone uchwyty wyrównania wskazują żądany kierunek przesunięcia kontrolki, gdy nakłada się ona na inną kontrolkę:

Warto dodać, że edytor wspiera operacje wyrównywania, zmiany rozmiaru i porządkowania grupy kontrolek:

Wiązania

Edytor formularzy umożliwia dostosowanie zachowania kontrolek znajdujących się w formularzu tak, aby przy zmianie rozmiaru formularza zapewniony był naturalny odbiór informacji: jedna część elementów pozostaje na miejscu, druga porusza się wraz z granice formy, a trzecia część zmienia swój rozmiar zgodnie ze zmianą rozmiaru formy.

Aby określić takie zachowanie elementów formularza, programista może opisać wiązania - zależność położenia brzegów kontrolek od położenia brzegów formularza. Krawędź kontrolki można przyciągnąć do krawędzi lub środka formularza albo do krawędzi lub środka innej kontrolki.

Edytor obsługuje szeroką gamę różnych typów powiązań i może wyświetlać je graficznie:

Separatory

Separatory to specjalne elementy sterujące, które umożliwiają redystrybucję obszaru formularza bez zmiany jego rozmiaru. W trybie 1C:Enterprise separator ma możliwość „chwycenia” myszą i przesuwania go w obrębie formularza w jego granicach, biorąc pod uwagę możliwość lokalizacji innych elementów sterujących i orientację separatora:

Kiedy przesuniesz separator, wszystkie kontrolki powiązane z separatorem zmienią rozmiar lub zostaną przesunięte zgodnie z ustawionymi zakotwiczeniami:

ActiveX

Edytor pozwala na umieszczenie na formularzu kontrolek ActiveX, które programista może konfigurować, a następnie zarządzać za pomocą wbudowanego języka:

Edycja modułu formularza

Aby edytować moduł formularza, konfigurator wywołuje edytor tekstów i modułów. Edytor ten zapewnia programiście szeroką gamę opcji tworzenia i modyfikowania tekstu modułu.

Edycja szczegółów formularza

Edycja szczegółów formularza odbywa się na liście, która umożliwia tworzenie nowych szczegółów, zmianę istniejących danych oraz usuwanie zbędnych szczegółów:

Jeżeli formularz posiada główny atrybut określający zachowanie formularza odmiennego od standardowego, jest on wyróżniony pogrubioną czcionką. Programista może umieścić kursor na żądanym atrybucie i za pomocą polecenia menu od razu przejść do okna formularza, do elementu sterującego odpowiadającego wybranemu atrybutowi.

Dodatkowe informacje

Z obsługą edytora formularzy możesz zapoznać się w czasie rzeczywistym. W tym celu możesz pobrać film demonstracyjny „Przykład opracowania mini-systemu handlowego”, który pokazuje proces tworzenia mini-systemu handlowego za pomocą tego edytora do tworzenia formularzy dokumentów „Faktura paragonu”, „Faktura wydatków” i raportu formularze „Analiza sprzedaży” i „Analiza sprzedaży według okresu”.

1.Preambuła.

Zaistniała potrzeba zorganizowania księgowości dla dwóch organizacji w jednym systemie bezpieczeństwa informacji. Sytuacja nie jest wyjątkowa, ale tak się złożyło, że nasz bardzo nietypowy dysk USB 250 gigabajtów działał dość wolno, dlatego zamiast RLS postanowiliśmy spróbować separacji danych. Co to jest, opisano na przykład lub. W skrócie, jeżeli RLS dodaje warunki do zapytań SQL, to separatorem danych jest dodatkowa kolumna w tabelach na poziomie DBMS, dzięki czemu mechanizm separatora powinien działać szybciej niż RLS.

Zatem do bazy danych, w której prowadzono ewidencję dla LLC nr 1, konieczne jest przeniesienie informacji z oddzielnej bazy danych LLC nr 2 i zorganizowanie wspólnej pracy. Tak jak na zdjęciu:

Zwykli śmiertelnicy pracują tylko z własną spółką z oo, a główny księgowy czasami przegląda dane dla dwóch podmiotów prawnych. W trybie dostępu do obu spółek LLC można jedynie odczytać dane, zatem główny księgowy powinien mieć możliwość interaktywnego przełączania pomiędzy trybami „czytaj wszystko”/„zapis tylko dla jednej organizacji” i wybierania LLC (czyli ustawiania wartości wspólnych szczegółów) w celu przeprowadzenia na przykład kalkulacji kosztów.

2. Wdrożenie

Platforma 8.2.19.90, bez trybu zgodności. DBMS – standard MSSQL Server 2008 R2.

Stworzyliśmy ogólny atrybut OrganisationSeparator typu „number”, zgodziliśmy się z propozycją stworzenia parametrów sesji, uzupełniliśmy kompozycję szczegółów (obejmujących kilka katalogów, wszystkie dokumenty, rejestry akumulacyjne, księgowe i kalkulacyjne). Separacja danych - „Niezależne i wspólne”. Wartość parametru sesji ustawiana jest ze standardowych ustawień użytkownika w procedurze SettingSessionParameters w module sesji:

Organizacja = UserManagement.GetDefaultValue(chCurrentUser,"PrimaryOrganization");
SessionParameters.OrganizationSeparatorValue = Organizacja.SeparatorValue;

W interfejsie głównego księgowego powstał formularz z możliwością przełączania się pomiędzy organizacjami oraz włączania/wyłączania trybu separacji:

Gdy separacja jest wyłączona, gdy SessionParameters.OrganizationSeparatorUsage = False, platforma odmawia zapisu dokumentów, powodując awarię z błędami typu „Błąd SDBL: oczekiwano wyrażenia (pos=12)”, więc nie można zezwolić użytkownikowi na pisanie dokumentów w tej opcji. Dla bezpieczeństwa utworzyliśmy subskrypcje zdarzenia „Przed nagraniem” dla obiektów, które są częścią atrybutu ogólnego:

IfSessionParameters.OrganizationSeparatorUsage = False Zatem
#Jeśli klient to
Warning("Nie można pisać, ponieważ udostępnianie danych jest wyłączone!");
#KoniecJeśli
Odmówić = Prawda;
koniecJeśli;

Nasz plan działania był następujący: przygotować konfigurację odbiornika IS nr 1, ustawić wartości atrybutu ogólnego = 1, załadować dane z IS nr 2, po załadowaniu, dla wszystkich obiektów z pustym (równym 0 ) wartość separatora, ustaw OrganisationSeparator = 2.

Konfiguracja została przygotowana, pojawiło się pytanie: jak szybko i bez ryzyka, że ​​liczby w bilansie polecą? Niemożliwe jest napisanie separatora oddzielnie od obiektu przy użyciu modelu obiektowego 1C, więc musiałem naruszyć umowę licencyjną, aby wyjść i napisać zapytanie dla MS SQL. Ponieważ w atrybucie ogólnym znajduje się wiele obiektów, a w tabeli dla tych obiektów jest jeszcze więcej tabel, napisaliśmy przetwarzanie generujące zapytanie dla SQL (dla każdego obiektu metadanych zawartego w separatorze napisaliśmy „update” + nazwa_DB + ".dbo._" + Nazwa tabeli + "zestaw _" + FieldGeneralAttributes + "= 1";)

Wprowadziliśmy wartość, przenieśliśmy część danych z IS nr 2 i rozpoczęliśmy testy.

Wynik był rozczarowujący. Po pierwsze problemy z rejestrem księgowym. Gdy separacja jest włączona, analityk nie jest widoczny:

Wynika to z faktu, że rejestr księgowy na poziomie SZBD przechowywany jest w postaci kilku tabel i nie we wszystkich tabelach była wpisana wartość atrybutu ogólnego (w celu obejrzenia struktury zastosowano przetwarzanie).


OK, wprowadźmy wartość separatora za pomocą MS SQL i zobaczymy statystyki. Raporty już nie działają. Okazuje się, że są problemy z zapytaniami do wirtualnych tabel rejestru księgowego „Obrót” i „ObrótDtKt”:

(Fld27033 to tylko ogólny atrybut w tabeli rejestru księgowego)

Separator jest zainstalowany we wszystkich tabelach, jest to widoczne na poziomie DBMS, nie jest jasne, jaki może być błąd. Wdrażamy standardowy pusty SCP, dokonujemy opisanych powyżej zmian konfiguracyjnych, wprowadzamy kilka dokumentów (w tej opcji platforma sama wpisuje wartość separatora we wszystkich tabelach rejestru księgowego), ale błędy się powielają. Jest źle, ale pomijamy rejestry księgowe z ogólnych szczegółów i kontynuujemy testowanie.

Ponadto okazuje się, że mechanizm przemieszczenia rejestrów obliczeniowych przestał działać. Nie rozdzielaliśmy planów na rodzaje obliczeń, staramy się szukać problemu w tabelach rejestru obliczeń i w przeliczeniach. Sprawdzamy, wpisujemy wartość głównych szczegółów, robimy T&I – bezskutecznie.

Po drodze diagnozujemy problem przy zapisie informacji z formularza wykazowego do niezależnych rejestrów. W takim przypadku dane są rejestrowane i można je zobaczyć po ponownym uruchomieniu. Problem jest również odtwarzany na bazie testowej:


Nie było możliwości „naprawienia” rejestrów informacyjnych manipulacją SQL (we wszystkich tabelach ustawiona jest wartość separatora), więc po prostu wykluczyliśmy je z ogólnych atrybutów. Po kilkudniowych eksperymentach próby przywrócenia funkcjonalności wywłaszczania również okazują się nieskuteczne.

W tym momencie decydujemy się na wyłączenie separacji danych i użycie RLS. Po ustawieniu partycji na „nie używaj” napotykamy błędy „Microsoft OLE DB Provider forSQL Server: CREATE UNIQUE INDEX zostało zakończone, ponieważ znaleziono zduplikowany klucz dla indeksu...”. Oznacza to, że powrót do stanu sprzed podziału nie jest taki łatwy. Problem z indeksami tabel przeliczeniowych, ustawieniami przechowywania sum i innymi. Faktem jest, że tabele przechowują identyczne wiersze, różniące się jedynie wartością atrybutu ogólnego. Po usunięciu wspólnego atrybutu pojawiają się nieunikalne rekordy. Będziesz musiał usunąć niepotrzebne rekordy bezpośrednio w MS SQL, coś takiego (dla tabeli konwersji):

Użyj bazy;
ZMIEŃ TABELĘ_CRgPrzelicz1399
DODAJ identyfikator INT IDENTITY(1,1);
IŚĆ
USUŃ Z_CRgRecalc1399
GDZIE identyfikator< (SELECT MAX(id)
Z _CRgRecalc1399 JAK T1
GDZIE _CRgRecalc1399._RecorderTRef = T1._RecorderTRef i
_CRgRecalc1399.[_RecorderRRef] = T1.[_RecorderRRef] i
_CRgRecalc1399.[_CalcKindRRef] = T1.[_CalcKindRRef] i
_CRgRecalc1399.[_Fld1400RRef] = T1.[_Fld1400RRef] i
_CRgRecalc1399.[_Fld1401RRef] = T1.[_Fld1401RRef] i
_CRgRecalc1399.[_Fld1402RRef] = T1.[_Fld1402RRef]
);
IŚĆ
ZMIEŃ TABELĘ_CRgPrzelicz1399
USUŃ Identyfikator KOLUMNY;

I dopiero po wyczyszczeniu kilkudziesięciu tabel można wyłączyć separację danych. Po wyłączeniu separacji nie ma żadnych problemów.

3. Wnioski.

Pojawił się promyk nadziei, że problemy zostaną rozwiązane w wersji 8.3. Nie byliśmy zbyt leniwi, sprawdziliśmy to na 8.3.4.482 (z wyłączonym trybem zgodności). Przyjrzeliśmy się prawie standardowej jednostce sterującej, ze zmianami w konfiguracji jedynie w celu uzyskania ogólnych szczegółów. Na tej bazie testowej włączono separację przed wprowadzeniem informacji, tj. platforma musiała poprawnie wpisać wartość separatora do wszystkich tabel; sama nie zapisała niczego bezpośrednio do MS SQL.

Wynik:

    Powtarza się problem z zapytaniami do wirtualnych tabel „Turnover” i „TurnoverDtKt”.

    Powtarza się problem represji.

    Powtarza się problem zapisu do niezależnych rejestrów informacyjnych.

    Problem z wyłączeniem separacji jest taki, że nie da się jej pozbyć jednym kliknięciem!

Tym samym nie byliśmy w stanie zastąpić RLS nowym mechanizmem. Mechanizm ten najwyraźniej został pomyślany z myślą o usługach chmurowych i w przypadku korzystania z udostępnionych danych „samodzielnie” być może podział się sprawdzi, ale potrzebujemy wspólnych danych podstawowych. Musimy tylko poczekać, aż 1C naprawi błędy, a jeszcze lepiej, wdroży standardowy mechanizm rozdzielania według organizacji w standardowych konfiguracjach.

Element separatora 1C jest potrzebny w celu redystrybucji obszarów formularza tak, jak jest to w danym momencie wygodne dla użytkownika. Prawie każdy użytkownik systemu Windows ma możliwość stosowania ograniczników. Załóżmy, że utworzyłeś prosty formularz z dwoma kontrolkami.

Tradycyjnie pozycje z dowolnej listy mogą znajdować się po lewej stronie. Odpowiednio po prawej stronie znajdują się szczegółowe informacje na temat tych samych punktów. Jeśli lewa lista składa się z krótkich tytułów, logiczne jest ograniczenie tej kolumny do minimum. Odpowiednio w tym przypadku zwiększy się czytelność prawej strony. I odwrotnie, jeśli po lewej stronie znajdują się długie nazwy, kolumnę należy rozwinąć. Dzielniki pozwalają użytkownikowi dowolnie dostosować kształt, po prostu przeciągając granicę myszą.

Ta metoda kontroli jest używana podczas edycji tabel w programach Word i Excel. Tworząc formularz, możesz utworzyć zarówno pionowy, jak i poziomy element formularza, czyli separator. Ogólnie rzecz biorąc, najkorzystniej jest tworzyć formularze, które wizualnie mieszczą się na ekranie.

Separator 8.2, 8.3 (formularze zarządzane)

Nie można dodać separatora w zarządzanym formularzu 1c; jest on dodawany automatycznie przez program przed/po polu tabeli

Czego dowiesz się z tego artykułu?

  • W artykule omówiono cel stosowania trybu separacji sum
  • Analizie poddano zachowanie systemu 1C:Enterprise 8 podczas równoległej pracy dużej liczby użytkowników.
  • Pokazuje wady trybu podziału sum
  • Podano zalecenia dotyczące prawidłowego stosowania podziału sum rejestrowych

Platforma 1C:Enterprise 8 zawiera możliwości i mechanizmy, których działanie nie każdy w pełni rozumie i jak z nich efektywnie korzystać. Jest to tryb separacji sum.

Mechanizm separacji sum pełni bardzo ważną i użyteczną funkcję: jest używany umożliwia prowadzenie równoległych zapisów w księgach rachunkowych i rejestrach akumulacyjnych.

Zademonstrujmy skuteczność tego trybu na przykładzie. W tym celu należy rozważyć sytuację przed i po włączeniu trybu separacji sum.

Przed włączeniem trybu sum podzielonych

Posiadamy dwa identyczne dokumenty o numerach 001 i 002:

Obydwa dokumenty przechodzą przez rejestr akumulacji. Nie ma kontroli nad pozostałościami. Struktura rejestru akumulacji:

Dwóch użytkowników pracujących w swoich dokumentach rozpoczyna jednoczesną pracę. Dochodzi do sytuacji, w której dwa dokumenty tego samego typu próbują dokonać przesunięć w tym samym czasie.

W tym przypadku na poziomie DBMS pojawia się następujący obraz:

Oto co dzieje się w systemie:

  1. Dokumenty próbują dokonać wpisu do rejestru akumulacji
  2. Na poziomie DBMS rejestr akumulacji reprezentowany jest przez dwie tabele: tabelę ruchów i tabelę sald (tabela sum).
  3. W tabeli ruchów dokumenty mogą równolegle zapisywać swoje dane. Zapewniają to różne wartości pola „Rejestrator” i odpowiednio praca jest wykonywana z różnymi wierszami tabeli.
  4. Jednak w tabeli sald nie ma pola „Rejestrator”; dane w tej tabeli są przechowywane w kontekście wymiarów samego rejestru.
  5. Mamy tu do czynienia z sytuacją, w której dwa dokumenty muszą zmienić jeden rekord, ale jednego rekordu nie można zmienić jednocześnie.
  6. Aby nie utracić zapisanych danych, jeden z dokumentów musi poczekać na swoją kolej na nagranie, aż drugi dokument zarejestruje jego ruchy. A gdy pierwszy z dokumentów zacznie działać, drugi będzie mógł wykonać własny.

W rezultacie obserwujemy stratę czasu – drugi użytkownik zmuszony jest poczekać, aż pierwszy użytkownik zakończy przetwarzanie dokumentu. Z jednej strony wszystko jest poprawne i logiczne, z drugiej strony cierpi na równoległość pracy użytkowników w systemie.

Aby rozwiązać problem, stworzono mechanizm podziału wyników.

Jego zastosowanie jest przeznaczone wyłącznie do rejestrów akumulacyjnych i rejestrów księgowych.

Włączenie trybu sum podzielonych

Włączenie tego trybu jest dość proste:

Należy pamiętać, że tryb separacji sum jest domyślnie włączony dla wszystkich utworzonych rejestrów akumulacyjnych i księgowych. Oprócz Konfiguratora w trybie użytkownika możemy zobaczyć dla jakich rejestrów tryb jest włączony:

Co się stanie po włączeniu trybu podziału sum?

W tabeli sum rejestrów akumulacyjnych/księgowych pojawia się nowa kolumna „Separator”. W samym systemie DBMS nazywa się to „Splitter”.

W tym przypadku tabela ruchów pozostaje niezmieniona; separatorem w niej jest „Rejestrator”. Zmianę widzimy w tabeli podsumowującej.

To pole jest wypełniane tylko wtedy, gdy dwie (lub więcej) transakcje próbują zmienić ten sam wiersz w tabeli sum. Gdy tak się stanie, pole Separator przechowuje inną wartość dla każdej transakcji.

Taka implementacja trybu separacji sum umożliwia równoległą rejestrację wszystkich transakcji.

W naszym przykładzie z dwoma dokumentami, gdy tryb jest włączony, obserwuje się, co następuje:

Obydwa nasze dokumenty zapisywały swoje dane równolegle dzięki nowemu polu Delimiter. W rezultacie nie ma kolejek na blokady i zwiększona współbieżność użytkowników.

Wady trybu podziału sum

Po włączeniu tego trybu wielkość tabeli sum rejestru zwiększa się ze względu na dodanie nowego pola i dla zestawu wymiarów pojawia się kilka wierszy zamiast jednego.

Przy odbiorze sald rejestrów istnieje konieczność zestawiania danych, co powoduje, choć nieznaczną, stratę czasu.

W naszym przypadku, mając dwa dokumenty w celu uzyskania salda produktu „Tabela” dla magazynu „Głównego”, konieczne staje się dodanie dwóch linii, aby uzyskać końcową wartość „7”. Gdy separator jest wyłączony, grupowanie (dodawanie) wierszy nie jest wymagane.

Kiedy należy używać trybu podzielonej sumy?

Aby to zrobić, musisz spełnić następujące warunki:

  1. Nie ma kontroli sald przez rejestr - nie ma odczytu danych w transakcji. Z reguły nie ma kontroli nad saldami w rejestrach księgowych. Ale jeśli obecna jest kontrola resztkowa, nie uzyskamy żadnego wzrostu wydajności. Ponadto podczas monitorowania sald należy użyć właściwości zestawu rekordów „LockForChange”, ponieważ istnieje możliwość zakleszczenia.
  2. Z rejestrem wykonywana jest równoległa praca użytkowników, a przy tym praca czynna.

Podczas pracy sekwencyjnej z kasą lub pracy z małą liczbą użytkowników nie ma sensu włączać trybu sum podzielonych: brak konkurencyjnych transakcji nie powoduje oczekiwania na blokady, a zatem nie ma efektu korzystania z tryb podziału sum.

Burmistrow Andriej

Stosunkowo nowa funkcja funkcjonalna 1C, sklasyfikowana jako technologia chmurowa. Po pojawieniu się funkcjonalności firma 1C zmodyfikowała BSP. Te same modyfikacje zostały uwzględnione w standardowych konfiguracjach opartych na BSP, na przykład UNF i UT11.

Konieczne było zorganizowanie odbioru raportów ogólnych z kilku oddziałów o tych samych konfiguracjach. Postanowiłem wypróbować rozwiązania firmy BSP w dziedzinie separacji danych. Pomysł polegał na załadowaniu danych każdego oddziału do własnego obszaru danych i wygenerowaniu raportów dla wszystkich obszarów jednocześnie. Od razu powiem, że nie udało się jeszcze rozwiązać problemu, ale sama próba jego rozwiązania ujawniła problemy i wątpliwą funkcjonalność w BSP.

Do artykułu załączona jest obróbka, która przenosi ukrytą funkcjonalność operacji na obszarach danych do osobnej formy.

BSP zapewnia dwa separatory księgowe: dane główne obszaru danych i dane pomocnicze obszaru danych. Pozostaje tajemnicą, dlaczego te 2 ograniczniki odnoszą się do tych samych parametrów sesji: DataAreaValue, DataAreaUse.

Włączanie mechanizmu

Jeśli Twoja samodzielnie napisana konfiguracja opiera się na BSP, najprawdopodobniej przed jej włączeniem musisz zaimplementować tajemniczą bibliotekę „1C: Service Technology Library”. Aż dziwne, że nawet Google nie wie o takim produkcie 1C. Natomiast w typowych konfiguracjach nie ma procedury Sprawdź możliwość wykorzystania konfiguracji w modelu usługowym w module Work In Service Model. Najprawdopodobniej brakujące części z tej biblioteki można znaleźć w standardowych konfiguracjach wykonanych na bazie BSP. W szczególności jeden z podsystemów nosi nazwę StandardSubsystems > WorkInServiceModel > UploadLoadData.

Mechanizm separacji danych włącza się poprzez ustawienie stałej Użyj separacji według obszarów danych. Można ustawić w punkcie menu Wszystkie funkcje.

Tworzenie użytkowników obszaru danych

Pozycja ta nie jest wymagana, jeśli do wejścia do obszaru danych używasz formularza. Użytkownicy są tworzeni w trybie konfiguratora. Jeden użytkownik z uprawnieniami administracyjnymi musi mieć wszystkie nieustawione separatory danych w zakładce Separacja danych. W przypadku innych użytkowników separator obszaru danych musi być ustawiony na Dane podstawowe w zakładce Separacja danych. Ten separator musi być jawnie określony w wierszu poleceń podczas uruchamiania 1C.

Uruchamianie 1C z parametrem wiersza poleceń

Pozycja ta nie jest wymagana, jeśli do wejścia do obszaru danych używasz formularza logowania.

1C można natychmiast uruchomić w trybie separacji danych. Dostępna jest opcja wiersza poleceń A /Z. Na przykład parametr „/Z-,+1” wskazuje, że 1C jest uruchamiany z wartością danych głównych Obszaru Danych równą 1, a separator danych pomocniczych Obszaru Danych nie jest ustawiony.

Metoda jest bardzo zawodna. Podczas uruchamiania pojawia się błąd w procedurze WorkInServiceModel. Podczas sprawdzania, czy włączyć tryb bezpiecznego udostępniania danych. Nie mogłem znaleźć nic lepszego niż skomentowanie tej procedury. Procedura sprawdza, czy użytkownikowi przysługuje prawo do zmiany aktualnego obszaru danych, czy jego uprawnienia są ograniczone i czy nie ma to wpływu na bezpieczeństwo.

Następnie podczas uruchamiania pojawia się kilka błędów, w tym: „Oddzielnym użytkownikom nie można przypisać roli Administratora systemu”, „Oddzielnym użytkownikom nie można przypisać roli Uruchamianie grubego klienta”.

Nie znaleziono użytkownika w katalogu Users - problemu nie udało się rozwiązać. W tradycyjnym scenariuszu Użytkownik rejestruje się przy pierwszym logowaniu. Podejrzewam, że podczas udostępniania danych Użytkownicy są tworzeni za pośrednictwem innej aplikacji 1C Fresh.

Wypełnij rejestr informacyjny Obszary danych

Dla każdego obszaru należy wypełnić wpis w rejestrze informacyjnym Obszaru Danych, przypisując numery do obszarów oraz status „W użyciu”. Procesy mogą sprawdzać wpisy w tym rejestrze przed rozpoczęciem wykonywania.

Wejście do obszaru danych

Administracja - Serwis - Logowanie do obszaru danych (GeneralForm.LoginDataArea)

Umożliwia użytkownikowi zmianę bieżącego obszaru danych. Zalogowanie się do obszaru możliwe jest jako użytkownik uruchomiony bez określania ograniczników. Zmieniając obszar danych, sprawdza jego stan w rejestrze informacyjnym Obszaru danych.

Przesyłanie danych z obszaru

Bieżący obszar jest wyładowywany poprzez formularz GeneralForm. Przesyłanie danych. Przed skorzystaniem z niego należy zalogować się do żądanego obszaru danych. Formularz nie jest wyświetlany w interfejsie użytkownika w sekcji Administracja.

Dane są serializowane poprzez konfigurację do formatu XML i pakowane w formacie ZIP. Oznacza to, że archiwizacja nie odbywa się za pomocą konfiguratora 1C, jak tradycyjne przesyłanie.

Załaduj dane do obszaru

GeneralCommand.LoadDataArea

Aby pojawić się w Administracji-Serwisie należy ustawić widoczność poprzez Konfigurator w ramach podsystemu Ustawienia i Administracja.

Dane zostaną wczytane do wybranego obszaru. Wcześniej należy je pobrać w formacie XML.

Wnioski

Nie można uruchomić systemu poprzez określenie ograniczników w wierszu poleceń. System odmówił pracy z powodu niezarejestrowanego użytkownika w katalogu Użytkownicy. Dotarcie do katalogu nie było możliwe, ponieważ system nie dopuszcza użytkowników z uprawnieniami administracyjnymi. Myślę, że ten scenariusz wymaga obowiązkowego połączenia z 1CFresh.

Eksperymenty z wejściem do różnych obszarów, obszarami rozładunku i załadunku wypadły pomyślnie. Próba wykonania żądania pobrania wszystkich organizacji dla wszystkich obszarów danych nie powiodła się. Błąd: „Nie można użyć tabeli bez określenia wszystkich ograniczników przy niezależnym wykorzystaniu udostępnionych danych”. Raport działa dla jednego obszaru, jeśli wejdziesz na dowolny obszar.

Problemem, który pozostaje niejasny, jest sposób wyładowania danych z bazy danych bez ograniczników do określonego obszaru danych innej bazy danych.

Ciekawie byłoby poznać przebiegły pomysł autorów BSP dotyczący ogólnych parametrów sesji dla dwóch separatorów, jeśli wywołanie ma parametry: „/Z-,+1”, „/Z+1,+1 ” i „/Z+1,-”.



Jeśli zauważysz błąd, zaznacz fragment tekstu i naciśnij Ctrl+Enter
UDZIAŁ: