DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu

Artykuł kontynuuje cykl „Pierwsze kroki w rozwoju 1C”.

W konfiguracji na platformie 1C: Enterprise podczas wyświetlania informacji najczęściej używane są tabele, które wyświetlają różne listy informacji. Praca z takimi listami może odbywać się zarówno w formie listy, jak iw postaci elementu (przetwarzanie).

W tym artykule przyjrzymy się tym opcjom dostosowywania list, a także innym aspektom dostosowywania formularzy po stronie użytkownika.

Możliwość zastosowania

Artykuł dotyczy interfejsu zarządzanego w wersji „Wersja 8.2” konfiguracji opracowanej na platformie 1C 8.3.4.482.

Jeśli pracujesz z konfiguracjami obsługującymi ten interfejs, informacje są istotne dla bieżących wersji platformy.

Jeśli pracujesz w nowym interfejsie „Taxi”, nazwy niektórych poleceń konfiguracyjnych, a także ogólna kolejność działań mogą się nieznacznie różnić.

Ponadto w obecnej wersji platformy dodano nowe możliwości wyszukiwania na listach.

Dostosowywanie formularzy i możliwość pracy z listami

W przypadku elementów zarządzanych formularzy istnieje możliwość zmiany widoczności i niektórych innych właściwości. Do tych celów w kontrolowanej formie w menu Wszystkie działania służy jako ust Zmień kształt.

Po naciśnięciu tego polecenia pojawi się okno „Ustawienia formularza”.

W wyświetlonym oknie za pomocą pól wyboru możesz zmienić widoczność niektórych szczegółów. W takim przypadku formularz jest skalowany automatycznie.

Możesz zmienić kolejność szczegółów. Dodajemy nową grupę i umieszczamy w niej atrybuty (elementy), określając możliwość ich grupowania (poziomo, pionowo).

Wymagania zawarte w grupie zostaną odpowiednio umieszczone. Ponadto w przypadku elementów można dostosować właściwości, takie jak szerokość, wysokość, dane nagłówka.

Możesz zdefiniować atrybut, który będzie aktywowany po otwarciu formularza.

Ważną właściwością jest możliwość dodawania nowych pól do formularza. Jest to możliwe dzięki rekwizytom typu referencyjnego.

Na przykład posiadanie atrybutu typu odwołania w formularzu Kontrahent, mogę dodać Osoba kontaktowa, jeśli ta zmienna znajduje się w katalogu „Kontrahenci”.

W razie potrzeby można usunąć dodatkowe pola. Nie można usunąć pól utworzonych w konfiguratorze. Wszystkie ustawienia użytkownika są zapisywane.

Aby powrócić do ustawień domyślnych w oknie „Ustawienia kształtu” w menu Wszystkie działania powinien wybrać przedmiot Skonfiguruj ustawienia domyślne.

Oprócz dostosowywania formularzy w zarządzanym interfejsie istnieje możliwość dostosowania list (elementów katalogów, dokumentów).

W formie listy w menu Wszystkie działania zawiera specjalne polecenie Dostosuj listę.

Otworzy się okno Dostosowywanie listy. W tym oknie możesz wybierać, sortować, definiować warunkowe projektowanie i grupowanie.

Rysunek przedstawia formularz do edycji wyboru.

Wyboru można dokonać za pomocą kilku pól. W tym przypadku domyślnie wybór będzie działał według warunku AND. Możesz również użyć warunków OR i NOT.

Aby użyć warunku OR (NIE), musisz dodać odpowiednią grupę (OR Grupa, NIE Grupa) za pomocą polecenia Warunki grupowe.

Rysunek przedstawia formularz do definiowania pól sortowania.

Możliwe jest ustawienie grupowania. Na rysunku zaznaczono pole do grupowania Kontrahent.

Na następnym rysunku pokazano, jak zostanie przeprowadzone grupowanie.

Możesz dowolnie pokolorować listę lub zastosować inne elementy projektowania warunkowego (podświetlenie czcionkami, określone formatowanie) zgodnie z określonym warunkiem, a także wybrać listę pól do rysowania.

Rysunek przedstawia wynik warunkowego tła pola Ilość.
Gdy kwota jest\u003e 100 000.

Należy zauważyć, że możliwe jest przeglądanie katalogów w trybie hierarchicznym.

Hierarchiczne przeglądanie katalogów można skonfigurować za pomocą elementu Tryb podglądu w menu Wszystkie działania... Możesz wybrać jedną z opcji: Lista hierarchiczna, Lista, Drewno.

Możliwe jest również dostosowanie własnego grupowania elementów katalogu według niektórych szczegółów.

Na przykład możesz pogrupować towar według dostawcy. Przykład jest podobny do tego, w którym rozważaliśmy grupowanie dokumentów „Sprzedaż towarów i usług” przez kontrahentów.

Wygodna funkcja - wielokrotny wybór na listach z późniejszym wykonaniem działań grupowych (wstrzymanie, anulowanie, odznaczenie usunięcia).

Selekcja obiektów na liście odbywa się poprzez przytrzymanie klawisza Zmianalub Ctrl.

Wyszukiwanie określonej wartości na liście ma swoje własne cechy. Wyszukiwanie działa w trybie wyboru. Pozostają tylko te ciągi, które spełniają warunek wyszukiwania.

Aby wyszukiwać według wartości w bieżącej kolumnie, wystarczy ustawić kursor na żądanej kolumnie i nacisnąć przycisk Znaleźćw panelu poleceń. Pojawi się okno, w którym należy również kliknąć przycisk Znaleźć.

Możesz użyć pola wyboru, aby zawęzić wyszukiwanie. Szukaj w znalezionych.

Szukając ciągu danych o charakterze referencyjnym (np. Jednostki miary), należy wybrać odpowiednią opcję wyszukiwania ... (przez linię).

Na tym kończą się listy i sposób ich konfiguracji. W następnym artykule będziemy nadal zapoznawać się z interfejsem i rozważać wygodne narzędzie do informowania użytkownika, o którym wcześniej nie rozmawialiśmy. Co to za narzędzie? :)

Przypuszczam, że nie ma potrzeby mówienia, czym jest ACS, konsolidatorem ustawień i ogólnie całym zestawem obiektów przeznaczonych do pracy z ACS. Głównymi kierunkami użytkowania, poza skomplikowanymi akcjami w kodzie, są dynamiczne listy i raporty, aw obu przypadkach bardzo istotna funkcjonalność pozostaje za kulisami. Często nawet nie myślimy o logice zachowania i relacji wszystkich uczestników procesu, ponieważ zazwyczaj rozwiązujemy dość proste problemy lub polegamy na domyślnych ustawieniach platformy. Ale tam, gdzie panuje cisza, jest też wewnętrzna logika, swego rodzaju „krzywda” 1C, której przezwyciężenie owoców jest czasem trudne i nieoczywiste, aby osiągnąć zamierzony efekt, a jednocześnie wystarczy po prostu właściwie posługiwać się narzędziami.

Zainteresowani mogą pominąć części 1-4 i przejść od razu do przykładów.

Spróbuję bardziej szczegółowo omówić pracę selekcji ACS w przypadku ich zastosowania w raportach. Przypuszczam, że zachowanie na listach dynamicznych, z kilkoma zastrzeżeniami, będzie podobne. A więc selekcje w raportach, trochę teorii, a potem konkretne przykłady.

SP 8.3.6 i nowsze, sekcje ITS (klauzula 10.3.7.5 itd.), Książka „Rozwój zawodowy w systemie 1C-Enterprise 8” (Kazań, 2012, tom drugi). W książce E. Khrustalevy nie znaleziono nic zrozumiałego na ten temat.

Część 1

Jak wiesz, linker ustawień zawiera kolekcje „Ustawienia”, „Stałe ustawienia” (dalej określane jako „FN”) i „Ustawienia użytkownika” (zwane dalej „PN”). Raport może mieć kilka opcji, podczas gdy powiązania między opcją, N, PN i FN są bardzo osobliwe. Nie zapominajmy też o źródle dostępnych nastaw i jego „przodku”, którym jest zwykle sam układ, który też ma swoje ustawienia domyślne.

* Ustawienia - ustawienia utworzone w trybie Konfiguratora i zmienione w trybie edycji opcji raportu;

* Ustawienia użytkownika - ustawienia, które użytkownik zmienia w trybie czysto interfejsu 1C: Enterprise;

* FixedSettings - te ustawienia, które są ustawiane z wbudowanego języka, w tym. są domyślnie ustawione przez system. Ta właściwość zawiera wartości wyboru, które są przekazywane do formularza przy użyciu jego parametrów (struktura „Selection”).

Ustawienia i FN mają podobny projekt i mają kolekcję „Wybór” typu „Wybór składu danych”, dostępną do zmiany składu w dowolnym momencie istnienia raportu. Jednocześnie ustawienia są dostępne do zmiany interfejsu poprzez edycję wariantu, podczas gdy FN nie są w ogóle dostępne. PN to z kolei „bałagan”, w którym zarówno sam „Selekcja”, jak i poszczególne obiekty typu „Element selekcji składu danych” (tzw. Obiekt zagnieżdżony) mogą być elementami równymi. Pomimo obecności odpowiednich metod nie można programowo zmienić składu zbioru elementów PN, jeśli jest to PN samego raportu, a nie zrobiony „od zera” przez projektanta - 1C zgłosi, że „zbiór ustawień użytkownika nie może zmienić swojego składu, ponieważ jest powiązany z ustawieniami układu dane ”. ITS mówi: „Właściwość nie jest dostępna do pisania przy użyciu wbudowanego języka.”, Ale, jak zobaczymy później, można wpływać na PN. „Kasza” obiektów ma powiązania wewnętrzne - jest sprawdzana pod kątem spójności warunków podczas generowania raportu oraz przy zmianie składu. W ITS czytamy: „Elementy, które same są oznaczone jako niestandardowe, nie zostaną dodane. Na przykład niestandardowy filtr nie będzie zawierał elementu filtru oznaczonego jako niestandardowy. Przedmioty zawierające elementy niestandardowe nie zostaną dodane. Na przykład grupa warunków nie zostanie dodana, jeśli grupa zawiera elementy oznaczone jako niestandardowe. W przypadku elementów zagnieżdżonych właściwość DisplayMode nie jest analizowana. Są dodawane lub nie wraz z elementami nadrzędnymi ”. W ten sposób „starszeństwo” obiektów działa za kulisami. W takim przypadku efekt można uzyskać, gdy interfejs umożliwia wskazanie sprzecznych wyborów dla wariantu i jego ST, a także w ramach ST.

Wydawałoby się, że opcja „senior” jest. Ale kliknięcie „Więcej” / „Zmień wariant” i potwierdzenie zmian w otwartym formularzu wywołuje procedurę obsługi zdarzeń formularza , podczas gdy zaznaczenie pojawia się w panelu „Ogólne” w formularzu wywoływanym z „Ustawienia…” i pojawia się na formularzu raportu, ale NIE jest pokazywane na zakładce „Wybór”; ponadto albo pojawia się od razu zarówno w formularzu głównym raportu, jak i na formularzu przez „Ustawienia…” (jeśli jest flaga „Uwzględnij w ustawieniach użytkownika”), albo nie ma go tam, ani tam. Jednak w każdym przypadku NIE będzie ona widoczna na karcie „Wybór” formularza „Ustawienia ...”. Różnica pomiędzy zakładką „Ogólne” w formularzu „Ustawienia…” a głównym formularzem raportu jest określona przez pole „Tryb edycji” (normalny - tylko w „Ustawieniach”, szybko - także na samym formularzu raportu), ale chyba każdy o tym wie. Nawiasem mówiąc, wartości „Selection” i „Fast” nie są w żaden sposób synchronizowane i mogą być ze sobą sprzeczne, ale „Fast” w formularzu raportu i na formularzu ustawień są ściśle zsynchronizowane. Czyli edytując wariant sam się zmienia (ale jego ID i nazwa się nie zmieniają), ale PN NIE pozostają modyfikowane (czyli nawet jeśli o nich mówimy, czyli o fladze włączenia jednego lub drugiego elementu do PN ).

Kliknięcie „Wybierz opcję ...” i potwierdzenie zmian w formularzu, który się otwiera, wywołuje następujące zdarzenia:

WhenLoadingOptionOnServer

Podczas aktualizacji ustawień niestandardowych na serwerze

Jednocześnie ani opcja, ani PN nie zmieniają się w żaden sposób. Dlatego jasne jest, że opcja i ustawienia, jeśli są podłączone, nie są w ogóle bezpośrednio powiązane.

Kliknięcie „Ustawienia ...” i potwierdzenie zmian w otwartym formularzu tylko wyzwala zdarzenie Podczas aktualizacji ustawień niestandardowych na serwerze (w tym przypadku PN ulegają zmianie, ale widoki i klucz (jeśli nie były) nie są odbierane; jeśli dla elementów „Wybór” obiektu PN włączona jest opcja „Szybko”, to oprócz „Wyboru” jego elementy pojawiają się jako pola, tj. .zachowuje się podobnie do elementów zagnieżdżonych. Ustawienia te są zapisywane przy zamykaniu i przywracane przy następnym wejściu do formularza. Nie zmienia ani nie zmienia opcji.

Kliknięcie „Więcej” / „Ustaw ustawienia domyślne” w formularzu ustawień (a także pozycji „Ustawienia standardowe” w opcji edycji) tylko wyzwala zdarzenie Podczas aktualizacji ustawień niestandardowych na serwerze... W tym przypadku opcja zostanie zmieniona, ale zmiana PN. Jeśli opcja została zmieniona przed tą zmianą, pozostaje ona zmieniona (ani flaga zmiany nie jest resetowana, ani faktycznie wprowadzone ustawienia nie są resetowane).

Kliknięcie na „Właściwości pozycji ustawień niestandardowych” w drzewie struktury w formularzu edycji wariantów powoduje dodanie obiektu „Wybór”, który okazuje się pusty i nie synchronizuje się w żaden sposób z istniejącym wyborem wariantu i istniejącymi zagnieżdżonymi elementami selekcji.

Stąd zalecenie: jeśli trzeba ustawić jakieś selekcje w trybie „Konfigurator”, aby nie zepsuć kodu i żeby nie były w wariancie, a byłyby w interfejsie raportu - należy manipulować nie elementami selekcji opcji, zmieniając ich właściwości, a samą selekcją , przyciski „Właściwości elementu ...” i „Ustawienia niestandardowe”.

Dodanie czegoś, co pojawiło się w Ustawieniach do PN wymaga działań w kodzie lub interfejsie, ale usunięcie i wyczyszczenie Ustawień wpływa na PN natychmiast i bez żadnych aktualizacji, na przykład:

Report.SettingsComposer.Settings.Selection.Elements.Clear ();

Przed zamknięciem formularza raportu system pyta tylko, czy nastąpiły zmiany w wariancie. Jeśli nastąpiły zmiany w PN, zostaną one zapisane automatycznie bez żadnych pytań, a także automatycznie spróbują zastosować w kolejnej sesji pracy z raportem.

Uwagi:

Przy wielu błędach jest to zastosowanie ustawień, najpierw wyświetlany jest komunikat o problemie, a następnie nadal następuje linkowanie, zdarzenie i budowanie raportu. Jednocześnie FN, jeśli tak, są nadal ignorowane, a rolę odgrywają tylko ustawienia.

Dodanie selekcji w formularzu „Zmień wariant” odbywa się natychmiast z ustawioną flagą „Uwzględnij w PN”, ale powtarzam, z punktu widzenia języka wbudowanego, PN pozostaje niezmienione.

Ustalenie wariancji wariantu i ustawienie zmienności PN nie są bezpośrednio powiązane, są to dwa różne kierunki zmian.

PN ma między innymi „Dodatkowe ustawienia”. Nie mogłem w żaden sposób zrozumieć, co iw jakim momencie są wypełnione. Chociaż raport zawiera ustawienia „zaznaczone w wyborze i projektowaniu warunkowym” jako niestandardowe (zgodnie z joint venture), dodatkowe ustawienia we wszystkich przypadkach okazały się puste. W ITS nic o tym nie ma.

Pomimo oświadczenia zawartego w joint venture, PN są doskonale serializowane w xml.

Jeśli do użytku zostaną włączone zarówno niezależne elementy selekcji, jak i sama selekcja, wówczas raport jest składany poprawnie, ale po wyświetleniu powiela informacje o dokonanej selekcji w ostatecznym układzie.

Domyślny formularz edycji wariantu raportu zawiera wiele interesujących rzeczy, ale nigdzie nie działa z FN i PN, a działa bardziej do czytania z podstawowymi ustawieniami (poza tym, że czyści wybór, porządek, projekt warunkowy).

Część 2

Praca z Attitudes i FN poprzez ich zbieranie jest prawie zawsze dozwolona, \u200b\u200bale trzeba pamiętać, że zmienia się istota „trzeciego poziomu”. Na pierwszym poziomie zawsze są ustawienia domyślne samego ACS; pojawiają się one również niejawnie w źródle dostępnych ustawień; na drugim poziomie - ustawienia używanej opcji. Ale tutaj logika pozwala albo „usunąć” podstawowe instrukcje, albo je zignorować. Ale praca z PN nie zapewnia już swobód, a subtelne manipulacje muszą być wykonywane specjalnymi metodami, a czasami tymczasowymi pomocniczymi obiektami pośredniczącymi, na przykład:

Comp \u003d New DataCompositionSettingsComposer; // możesz także uruchomić // comp.Initialize (SomeComposerSettings.GetSourceAvailableSettings ()); comp.LoadSettings (SomeComposerSettings.Settings); A someSettingsComposer.DownloadUserSettings (comp.UserSettings);

Konsolidator ustawień ma metodę (), który ładuje niestandardowe wartości preferencji przekazane jako parametr metody. metoda Pobierz ustawienia() umożliwia pobranie kopii aktualnych ustawień (uwzględniających ustawienia użytkownika). metoda Ustawienia pobierania() ładuje przesłane ustawienia do linkera ustawień (ustawienia użytkownika są również ładowane ponownie na podstawie przesłanych danych, z uwzględnieniem obecności kluczy, patrz przykład poniżej).

Zastosowanie własnych ustawień do głównych ustawień odbywa się w metodzie Pobierz ustawienia() linker ustawień. W takim przypadku wykonywane są następujące czynności:

* W przypadku typów DataCompositionPelement zawartość elementów jest kopiowana do odpowiednich elementów ustawień niestandardowych.

* W przypadku typów DataCompositionFeed elementy znajdujące się w ustawieniach głównych i oznaczone jako Niedostępne pozostają niezmienione. Elementy z PN są przenoszone na główne. Są dodawane na końcu kolekcji Selection.

* W przypadku typów DataCompositionElementGroup właściwość Usage jest ustawiana w odpowiednim elemencie ustawień głównych (na podstawie znaku użycia elementu PN).

Część 3

Podczas tworzenia ostatecznego ustawienia, aby podać ITS, różne opcje ustawień są łączone w następujący sposób:

* Jeśli jakiekolwiek ustawienia są całkowicie oznaczone jako niestandardowe, wynikowe ustawienia obejmują PN. W takim przypadku, jeśli jakiekolwiek elementy ustawień są oznaczone jako niedostępne, zostaną one umieszczone w ustawieniach wynikowych z właściwości Settings Composer.

* Jeśli jakiekolwiek ustawienia są oznaczone jako niestandardowe nie w całości, ale element po elemencie, elementy oznaczone jako niestandardowe zostaną uwzględnione w wynikowych ustawieniach z komponentu Properties Composer.Ustawienia niestandardowe, a elementy oznaczone jako niedostępne zostaną przeniesione do ustawień wynikowych z komponentu Properties Composer. ...

* Stałe ustawienia są dodawane do wynikowych ustawień „tak jak jest”. W takim przypadku sytuacja jest niedopuszczalna, gdy występują ustawienia o tej samej nazwie w FN i PN, na przykład wybór z taką samą lewą wartością warunku. Należy pamiętać, że nawet całkowita zbieżność wszystkich właściwości tych warunków jest zabroniona. Szczerze mówiąc, trochę nielogiczne.

Zwróć uwagę, że jeśli jakikolwiek fragment ustawień mieści się w zakresie opcji funkcjonalnej i powinien być ograniczony, system działa „cicho” - usuwa ten fragment zewsząd, nic nie zgłasza, a gdy program manipuluje takim fragmentem, wypala błędy „bezczynne” nie daje, ale nie ma wpływu na kod. Jednak możliwe jest, że różne wersje zachowują się inaczej.

Część 4.

Rozszerzenie formularza raportu dostarcza nam parametry „FN” i „PN”, ale nigdzie nie jest zalecane ich wypełnianie bezpośrednio poprzez przeniesienie do formularza. Jak wykazały eksperymenty, bez dodatkowych tańców z tamburynem wypełnienie tych parametrów jest ignorowane - jest nadpisywane, gdy linker jest inicjowany podczas procesu otwierania i po odebraniu zapisanego wcześniej PN. Zaleca się pracę z kluczami PN, zgodnie z którymi można je pobrać z pamięci ustawień, a następnie otworzyć i użyć, a odbywa się to automatycznie po stronie formularza raportu, a nie formularza wywołania.

Parametr „SourceAvailableSettings” jest automatycznie tłumaczony na informacje o konsolidatorze, gdy formularz jest tworzony na serwerze i nie można go zastąpić. Raczej może, ale da to efekt dopiero po całkowitym przedefiniowaniu całego łańcucha powiązanych obiektów. W którym GetSourceAvailableSettings() zwróci wartość Undefined do końca przetwarzania wszystkich zdarzeń otwarcia formularza.

Zwróć uwagę, że parametry formularza, które w rzeczywistości nie są kluczowe, „rozciągają” swoje działanie na kilka zdarzeń, jeśli ustawiona jest flaga formacji przy otwieraniu. Tak więc w przypadku ProcessingCheckFillingsOnServer, wywoływany przy otwieraniu i formowaniu, parametr „Wybór” będzie dostępny, ale wraz z nim, ale wywoływany po prostu przez naciśnięcie przycisku „Generuj” użytkownika, już go nie będzie. Wynika to z faktu, że wszystkie te zdarzenia przetwarzane są podczas jednej „wizyty” na serwerze, jeśli formacja przy otwieraniu jest włączona i dopiero na samym ich końcu kontrola jest przekazywana klientowi i wywoływana Otwarcie... W takim przypadku parametry niekluczowe są naturalnie tracone.

Ogólna kolejność wykonywania zdarzeń przy otwieraniu formularza z flagą generowania raportu po otwarciu (nieco większa niż opisana w punkcie „Rozwój zawodowy”):

OnCreateAtServer

BeforeLoadingOptionOnServer

WhenLoadingOptionOnServer

Przed załadowaniem ustawień niestandardowych na serwer

Podczas przesyłania ustawień niestandardowych na serwer

Podczas aktualizacji ustawień niestandardowych na serwerze

ProcessingCheckFillingsOnServer

Otwarcie

W tym przypadku ani opcja, ani PN nie ulegają zmianie, chyba że podjęto specjalne wysiłki.

Część 5.

Przyjrzyjmy się teraz bardziej szczegółowo zadaniu otwarcia formularza raportu wraz z jego konstrukcją i z góry określonym wyborem. Krótka informacja na ten temat znajduje się w ITS i zaleceniach metodologicznych, ale tylko sama zasada jest tam wyjaśniona, a subtelności nie są ujawniane. Zatem dla kontekstowego wywołania raportu konieczne jest przekazanie do jego postaci parametru „GenerateOnOpening” równego True; oraz parametr „Wybór” zawierający strukturę. Klucze struktury to nazwy pól ACS lub parametrów ACS, a wartościami są ich wartości. Cytując SP, jeśli istnieje parametr ACS o nazwie odpowiadającej nazwie klucza struktury, to zostanie mu ustawiona wartość. Jeśli nie ma parametru, ale istnieje pole, to do tego pola zostanie dodany wybór. Co więcej, jeśli istnieje parametr i pole o tej samej nazwie, system po prostu po cichu je zignoruje i niczego nie zainstaluje.

W „Rozwój zawodowy” jest przykład zmiany (tj. Przechwytywania i rekonfiguracji) PN „w locie” w przypadku Przed załadowaniem ustawień niestandardowych na serwer, gdzie przekazywany jest argument zawierający bieżący PN. W rzeczywistości nie zawsze tak jest - na przykład mogą wystąpić przypadki, gdy błąd w zapisywaniu PN w poprzedniej sesji lub niespójności między Ustawieniami, FN i PN spowodują, że argument „Ustawienia” będzie pusty. A co najciekawsze, w tym zdarzeniu nie da się jej w pełni przekonfigurować, można to zrobić tylko „na końcu” sekwencji zdarzeń, czyli w przypadku ProcessingCheckFillingsOnServer.

Zobaczmy, co mamy przed załadowaniem PN na serwerze.

W prostym przypadku, gdy nic nie jest wstępnie zdefiniowane w ACS i żadne elementy nie są zawarte w PN, sytuacja wygląda następująco: Ustawienia - puste; FN - zawierają prawidłowy wybór; PN zawierają pusty wybór. Kształtowanie działa poprawnie, ale z punktu widzenia użytkownika interfejs przeczy wnętrznościom i zniechęca - selekcja działa, ale nie jest widoczna. Podobnie, jeśli włączysz Selekcję w PN w ustawieniach struktury wariantu, raport jest również budowany z uwzględnieniem selekcji, ale użytkownik również nie widzi żadnych selekcji.

Ustawmy preselekcję w ustawieniach ACS w Konfiguratorze (równe pustym wartościom) i włączmy je w PN. Teoretycznie FN powinien wypełnić Ustawienia, a te - PN, ale tak naprawdę mamy: w Ustawieniach - Wybór z żądanym elementem, ale z pustą prawą wartością, FN - zawierają prawidłowy wybór, a PN - nadal nic nie zawierają. Dodatkowo w tym przypadku raport nie zostanie zbudowany, ponieważ właściwa wartość zaznaczenia jest pusta, pomimo wartości przekazanej w parametrze Selection.

Próba pracy z elementami PN również nie daje rezultatu. Dla elementu PN można zmienić tylko flagę „Użyj” i uczestniczyć w „Szybkim”. Wartość wyboru na interfejsie będzie pusta, system nie będzie generował żadnych błędów. Podobnie zadziała również próba pracy z wyborem PN, w debugerze właściwa wartość będzie widoczna jako poprawnie wypełniona, ale nic nie zobaczysz w interfejsie. Przypomnę, że nie da się zmienić składu PN. W związku z tym wymagane są dodatkowe poprawki. Na przykład:

Procedura & OnServer SetPresetSections (UserSettings) Jeśli nie Parameters.Property ("Selection") Następnie zwróć EndIf; Jeśli Parameters.Selection.Number () \u003d 0 To Return EndIf; rTypeEO \u003d Type ("DataCompositionSelectionElement"); Dla każdego klucza z parametrów Cykl wyboru rField \u003d Nowe pole DataComposition (key.Key); // If (TypeZnch (kiz.Value) \u003d Type ("Array") orTypeZnch (kiz.Value) \u003d Type ("Lista wartości")) i kiz.Value.Quantity ()\u003e 1 Następnie pComparisonType \u003d CompareTypeDataCompositionInList; W przeciwnym razie pComparisonType \u003d DataCompositionComparisonType.Equal; EndIf; // pHnecessaryChoice \u003d Undefined; // sprawdź, czy w niestandardowych ustawieniach pH jest wymagany wybór EO \u003d Undefined; // sprawdź, czy w ustawieniach niestandardowych znajduje się oddzielny element DataCompositionFeed Dla każdego elnastr Z cyklu CustomSettings.Elements IfTypeZnch (elnastr) \u003d Type ("DataCompositionSelection") i pHnecessarySelection \u003d Undefined Then // może to być tylko jeden pHselection \u003d elnastr; // można to zrobić poza pętlą, ale konieczne jest również iterowanie ustawień niestandardowych ze względu na elementy ... W przeciwnym razie, jeśli TypeZnch (elnastr) \u003d rTypeEO To // to jest element selekcji, może być ich wiele, ale interesuje nas brak inicjalizacji lub wymagane field If elnastr.LevoeValue \u003d rField lub elnastr.LevoeValue \u003d Undefined i pHuzhnyEO \u003d Undefined Then pHuzhnyEO \u003d elnastr; EndIf; EndIf; Koniec cyklu; // Jeśli pH jest odpowiednie<>Undefined Then // jako priorytet rn wymagane EO from Selection \u003d Undefined; Dla każdego elotb Od pHuzhnyOtbor.Elementy Cycle If elob.LevoeValue \u003d pField To pHuzhnyEOisObra \u003d elotb; Abort EndIf; Koniec cyklu; Jeśli pHRequiredEOfromSelection \u003d Undefined Then pHRequiredEOfromOffice \u003d pHRequiredSelection.Elements.Add (rTypeEO); pHRealEOfromSelection.LeftValue \u003d pField; EndIf; pHRealEOfromSelection.Comparison View \u003d pComparison Type; pHRealEOfromSelection.RightValue \u003d kiz.Value; pHRealEOisObtaining.Usage \u003d True; // phneweo.Usage \u003d False; W przeciwnym razie Jeśli pH jest pożądane Wybór \u003d Niezdefiniowane i pożądane jest pH EO<>Undefined Then // wstaw na element pHazhnyEO.LeftValue \u003d pField; pHRealEO.Comparison Type \u003d pComparison Type; pHazhnyEO.RightValue \u003d kiz.Value; pHEO.Usage \u003d True; EndIf; pH konieczne \u003d niezdefiniowane; Dla każdego elotb From Report.SettingsComposer.Settings.Selection.Elements Loop // w sposób polubowny, powinno być przeszukiwanie rekurencyjne! Jeśli TypeZnch (elotb) \u003d pTypeEO i elotb.LevoValue \u003d pField To pHnecessary \u003d elotb; Abort EndIf; Koniec cyklu; Jeśli pHRequired \u003d Undefined Then pHRequired \u003d Report.Settings Composer.Settings.Selection.Elements.Add (rTypeEO); pHLeftValue \u003d pField; EndIf; pHOfComparisonType \u003d pComparisonType; pHazhny.RightValue \u003d kiz.Value; pHazy.Usage \u003d True; // Koniec pętli; Report.SettingsComposer.FixedSettings.Selection.Elements.Clear (); // w przeciwnym razie powie, że elementy przecinają się / zaprzeczają EndProcedure

Najbardziej poprawnym sposobem na nazwanie tego jest:

Procedura & AtServer dla ProcessingFillCheckOnServer (odmowa, sprawdzone atrybuty) SetPresetSections (Report.ConfigurationComposer.UserSettings); Koniec procedury

Następnie wywołanie kontekstowe, na przykład z formularza odniesienia, będzie wyglądać następująco:

Procedura & OnClient OpenReport (polecenie) Jeśli ValueFilled (Object.Link) Then out \u003d Nowa struktura ("ReferenceLink", Object.Link); // to jest nazwa pola w ACS raportu. Form Parameters \u003d New Structure ("Selection, Generate on Opening", Ot, True); OpenForm ("Report.Report1.Form.ReportForm", Parametry formularza, EtaForm); EndIf; Koniec procedury

Część 6.

W razie potrzeby zmień ustawienia raportu podczas pracy z nim, m.in. zarówno na starcie, jak i po otwarciu najbardziej poprawnym sposobem jest zmiana „od początku”, tj. z ustawień ACS. Zmiana schematu ACS odbywa się tylko za pomocą obiektu Report (lub ExternalReport), a nie danych formularza i sama w sobie nic nie zmienia - w Ustawieniach iw PN to samo pozostaje bez zmian, a FN może generalnie pozostać pusty. Dlatego w zależności od naszych zadań:

Po wykonaniu

Report.SettingsComposer.DownloadSettings (ACS.Default)

zmienia się tylko wariant i nic więcej;

Po wykonaniu techniki podanej w p. 2 (z wykorzystaniem „pośrednika” i metody Pobierz Ustawienia niestandardowe()

działa tylko wtedy, gdy aktualne PN są resetowane za pomocą interfejsu. Same w sobie nie zmienią się po zmianie opcji. Zmienia to wybór, ale nie dodaje nowego elementu wyboru.

Po wykonaniu

ThisForm.CreateFormElementsCustomSettings (, DisplayModeDataCompositionSettings.All)

platforma po prostu cicho opada. Przetestowano na kilku różnych wersjach. A wywołanie trybu wyświetlania ustawień tylko dla szybkich nie ma sensu - nie wpłynęliśmy na ich kompozycję, więc i tak nic się nie zmieni.

A ponieważ nadal musimy w pełni zmienić nie tylko wewnętrzne wybory, ale także sposób wyświetlania w formularzu raportu i w powiązanych formularzach, musimy albo zmienić tylko wybór, albo postępować w następujący sposób:

Procedura & AtServer ChangeSKD () rObject \u003d FormInValue ("Report"); off \u003d pObject.DataCompositionSchema.SettingsOptions.Get (0) .Settings.Feed; eo \u003d otb.Elementy.Add (Type ("DataCompositionOptionElement")); eo.LeftValue \u003d NewDataCompositionField ("ReferenceRef.Field1"); eo.ComparisonType \u003d DataCompositionComparisonType.Equal; eo.RightValue \u003d True; eo.Use \u003d Prawda; ValueVRequisitForm (rObject, "Report"); Report.SettingsComposer.LoadSettings (Ustawienia rObject.DataCompositionSchema.Default); Report.ConfigurationComposer.Restore (); // pożądane, chociaż to nadal nie wpływa na FN. // w rzeczywistości można to nazwać zmianą składu PN dla każdego e-maila From Report.ComposerSettings.Notroyki.Obor.Elements Cycle e.Display Mode \u003d Display ModeDataCompositionSettingsSettingElement.BystryAccess; Jeśli jest to EmptyString (identyfikator e-mail UserSettings) Następnie // możesz użyć metody „SetIdentifier” dla elementu PN, zobacz jej pomoc w joint venture, wszystko jest wystarczająco jasne. // ważne - identyfikatorem może być DOWOLNY, a nie UUID lub GUID! emailPresentationUserSettings \u003d "Trial"; EndIf; Koniec cyklu; comp \u003d New DataCompositionSettingsComposer; Comp.LoadSettings (rObject.DataCompositionSchema.Default Settings); Report.Settings Composer.DownloadUserSettings (comp.UserSettings); Dla każdego e-maila z Report.Settings Composer.UserSettings.Elements Cycle e.Display Mode \u003d DisplayModeDataCompositionSettings.DataCompositionStyleAccess; // ściągnij EndCycle do formularza raportu; // i teraz zadziała: ThisForm.CreateUserSettingsFormElements (, DataCompositionSettingsDisplayMode.QuickAccess); Koniec procedury

Właściwie możesz uczyć się tej mechaniki przez długi czas. Niniejsza publikacja wyrosła z poszukiwania sposobów rozwiązania jednego konkretnego problemu i dlatego jest bardzo jednostronna; ale podejrzewam, że można napisać osobną książkę o wewnętrznej logice ustawień, zwłaszcza niestandardowych, nie bardziej subtelnej niż te u Kristaleva. Niestety nie mam na to czasu i energii. Każdy, kto potrzebuje konkretnych rozwiązań, jest już dobry.

Coś zostało wyjaśnione eksperymentalnie, a zatem jest kontrowersyjne. Ci, którzy wiedzą więcej, mogą krytykować i komentować.

Podsystem w 1C 8.3 - obiekt drzewa metadanych, który jest odpowiedzialny za budowanie interfejsu poleceń konfiguracyjnych.

Poniżej w artykule porozmawiamy o podsystemach począwszy od wersji 8.2.

Faktem jest, że w wersji 8.1 (a także zwykłej aplikacji 8.2) były też podsystemy, ale służyły one zupełnie innym celom, bardziej deweloperowi niż użytkownikowi. Podsystemy w wersji 8.1 zwykle oddzielały różne funkcje. Podsystemy pomogły również przy łączeniu różnych konfiguracji 1C - można było określić, który system przenieść.

Podsystemy 1C i interfejs dla programisty

W wersjach 8.3 i 8.2 podsystemy są podstawowym narzędziem do budowania interfejsu poleceń użytkownika. Obiekty metadanych „Podsystemy” mają strukturę hierarchiczną, aby skonfigurować „podmenu” w interfejsie, należy dodać podsystem podrzędny:

Właściwości i ustawienia

Rozważ ustawienia i właściwości podsystemów w konfiguratorze:

Pobierz bezpłatne samouczki wideo 267 1C:

Uwzględnij w interfejsie poleceń - jeśli zapomniałeś ustawić tę flagę, podsystem nie zostanie wyświetlony w interfejsie.

Przycisk otwiera panel ustawień interfejsu, w którym możesz skonfigurować interfejsy w zależności od roli aktualnego użytkownika:

Obrazek - obraz przypisany do podsystemu jest wyświetlany w trybie korporacyjnym. Możesz wybrać standardowy obraz lub dodać własny, po uprzednim utworzeniu go jako obiekt konfiguracyjny Obrazek:

W zakładce Funkcjonalne opcje wskazano listę opcji funkcjonalnych, w których ten podsystem jest używany.

Zakładka Kompozycja definiuje zbiór obiektów metadanych uczestniczących w tym podsystemie.

W zakładce Inny możesz opisać pomoc dla podsystemu i określić ustawienie Uwzględnij w treści pomocy - czy uwzględnić ten temat pomocy w ogólnych informacjach pomocy dotyczących konfiguracji.

Jeśli w zarządzanym interfejsie nie jest wyświetlany żaden raport ani przetwarzanie

Ten problem bardzo często pojawia się wśród początkujących programistów - tak jakby do podsystemu został dodany raport lub przetwarzanie, ale nie jest on widoczny.

Pierwszym powodem może być to, że obiekt nie ma zdefiniowanego formularza zarządzanego.

Drugim powodem jest to, że pole wyboru „Użyj poleceń standardowych” jest zaznaczone na karcie Polecenia obiektu. Wynika to z faktu, że aby otworzyć przetwarzanie, można opisać własną procedurę lub użyć standardowej:

DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu