Menu
Jest wolny
rejestracja
Dom  /  Edukacja/ Brak predefiniowanego elementu w danych 1c 8.3. Ustawianie wstępnie zdefiniowanych pozycji

Brak predefiniowanej pozycji w danych 1c 8.3. Ustawianie wstępnie zdefiniowanych pozycji

Dobry dzień.

Dzisiaj porozmawiamy o innowacji w platformie 8.3 dotyczącej predefiniowanych elementów.

Wstęp

Przypomnę, że wcześniej w praktyce bardzo często chciałem zajrzeć do elementu katalogu, aby poznać jego predefiniowaną nazwę. Na przykład utworzyłeś dwóch predefiniowanych kontrahentów i nazwałeś ich IPSidorov i OOOMeteor. I uszyli na nich jakąś logikę.

Kiedy wszystko zostało odpluskwione i zadziałało, okazało się, że zadanie zostało ustawione odwrotnie i logika dla jedynego właściciela jest potrzebna dla LLC, a logika LLC jest potrzebna dla jedynego właściciela. „Nie ma problemu”, mówimy, a w trybie korporacyjnym zmieniamy nazwy elementów. Dużo trudniej jest dostać się do kodu. Mija rok i dostajesz nowe zadanie: ustawić trochę więcej logiki dla IP Sidorowa. Wchodzisz do konfiguratora, piszesz logikę, zaczynasz sprawdzać i nic nie działa, bo w konfiguratorze IPSidorov oraz w przedsiębiorstwie - Meteor LLC. Mózg jest zepsuty i chcę zniszczyć tę grabie. Najprostszym i najbardziej intuicyjnym jest wypisanie nazwy predefiniowanego elementu w postaci listy. Oto zasadzka, nazwę predefiniowanej w 8.2 możesz zdobyć tylko metodą. A metoda ma swoją niedogodność, nie można jej uzyskać w żądaniu. Te. pierwszą niedogodnością jest uzyskanie nazwy predefiniowanej przez odniesienie do katalogu.

Druga niedogodność polega na tym, że mamy już element katalogu i musimy go predefiniować. Tworzymy predefiniowany element i otrzymujemy dwa elementy w katalogu. Jeden predefiniowany, drugi działający, do którego odwołują się wszystkie nasze dokumenty. Wymiana linków z pewnością pomaga, ale jeśli baza danych jest duża, to jest to trudne.

Teraz w sprawie

Po pierwsze, odwołanie ma teraz właściwość „Aktualizuj dane predefiniowane”.

Co daje nam to pole? Jeśli jest ustawiony na „Nie aktualizuj automatycznie”, to dodając predefiniowany element, nie zobaczymy go od razu w odwołaniu. Te. metadane nie mają nic wspólnego z danymi. A jeśli nie zostanie utworzony w katalogu, odwołanie się do niego po nazwie przez menedżera katalogów spowoduje błąd składni.

Bardzo ciekawe, ale dlaczego? Jak tworzymy element w referencji? I jak chcesz, możesz stworzyć lub połączyć go z już istniejącym. Teraz wyszukiwanie ma atrybut „PredefinedDataName”. Pozycję katalogu tworzymy programistycznie jak zwykle poprzez "References.Contractors.CreateElement()" i wypełniamy jej atrybut "PredefinedDataName" równy nazwie predefiniowanej pozycji. Lub, jeśli element już istnieje, pobieramy jego obiekt i ponownie wypełniamy w nim "PredefinedDataName". Wszystko.

I na koniec trochę syropu

Ten nowy rekwizyt jest nie tylko do odczytu / zapisu, ale także dostępny w żądaniach. W ten sposób można nałożyć na niego warunki w zapytaniach, określić, czy jest predefiniowany, czy nie.

Dziękuję za uwagę.

Sam pomysł na programową pracę z predefiniowanymi elementami moim zdaniem jest bardzo poprawny. Jest tylko kilka niuansów, które należy wziąć pod uwagę podczas pracy.

Po pierwsze, musisz jasno zrozumieć, że w konfiguracji znajdują się predefiniowane elementy, a w infobazie (IB) są predefiniowane elementy. Technicznie predefiniowane elementy IB są najczęstszymi elementami słowników, w których atrybut "PredefinedDataName" określa, któremu predefiniowanemu elementowi konfiguracji odpowiadają. Nie różnią się już od zwykłych elementów. W związku z tym każdy zwykły element IB może być predefiniowany, dowolny predefiniowany zwykły. Aby to zrobić, wystarczy wprowadzić żądaną wartość w rekwizytach. "Predefiniowana NazwaDanych".

Okresowo ta nieruchomość okazuje się nie być wartością, którą podał deweloper. W rezultacie w pracy 1C występują błędy. Od krytycznych, w których praca jest w zasadzie niemożliwa, do niekrytycznych, w których naruszona jest logika algorytmów.

Można go warunkowo rozróżnić trzy rodzaje błędów:
1. „W danych brakuje predefiniowanej pozycji”;

3. Nieprawidłowe wskazanie predefiniowany element;

1. "W danych brakuje wstępnie zdefiniowanego elementu" - o Brak predefiniowanego elementu opisanego w konfiguracji w danych IB.

Jest to najłatwiejszy rodzaj błędu do debugowania i naprawy. Jego prostota polega na tym, że platforma wystarczająco poprawnie raportuje o tej sytuacji „W danych brakuje predefiniowanego elementu” i jest całkiem jasne, jak to naprawić.

Podczas uzyskiwania dostępu do brakującego elementu w kodzie "Katalogi.Typy informacji kontaktowych.EmailContactPerson" wyświetlany jest komunikat

Podczas uzyskiwania dostępu do elementu w żądaniu „VALUE (Directory.Types of ContactInformation.EmailContactPerson)” wyświetlany jest następujący komunikat:

Ten błąd występuje, jeśli element jest opisany w konfiguracji, ale element nie jest z nim powiązany w bazie danych.

Na początek wyjaśnijmy, że ta sytuacja nie zawsze jest zła. Jest całkiem możliwe użycie predefiniowanych danych w jakiejś logice programu, która dla większości użytkowników może nie być używana. W tym przypadku, aby nie zaśmiecać podręcznika dla wszystkich użytkowników konfiguracji, logiczne jest zdefiniowanie predefiniowanych elementów w konfiguracji, ale nie tworzenie ich we wszystkich systemach bezpieczeństwa informacji, a tylko dla tych systemów bezpieczeństwa informacji w w którym używana jest wymagana logika konfiguracji. W takim przypadku programista może określić właściwość „Nie aktualizuj predefiniowanych danych” dla książki referencyjnej i programowo tworzyć elementy podczas uzyskiwania dostępu do funkcjonalności modułu. Lub aby umożliwić użytkownikowi samodzielne powiązanie predefiniowanych elementów modułu ze zwykłymi elementami, które posiada.

Również nie używany automatyczne tworzenie predefiniowane elementy podczas pracy w trybie RIB. Ponieważ nowe elementy powinny być przenoszone z centralnej bazy, a nie tworzone w węzłach o różnych UID.

Te. czasami błędem jest odwoływanie się do niedopasowanego przedmiotu, a nie samej obecności takiego przedmiotu.

Musisz przeanalizować, dlaczego przedmiot nie został utworzony. Być może należy go utworzyć, gdy wykonywany jest jakiś tryb programu. Na przykład po dokonaniu wymiany w RIB. A może został po prostu przypadkowo usunięty.

Jeśli logika przewiduje wypełnianie predefiniowanych elementów nie automatycznie, ale w osobnym trybie, to przed użyciem wywołania według nazwy " Katalogi.Rodzaje kontaktuInformacje.E-mailKontaktOsoba„aby zapobiec wyjątkowi, warto sprawdzić, czy element jest już w bazie danych. Jeżeli elementu nie ma, to poinformuj o tym użytkownika i wyjaśnij, jaki tryb musi wykonać, aby zapełnić element. Do takiego sprawdzenia, możesz uruchomić zapytanie dotyczące danych.

Żądanie = Nowe żądanie; Request.Text = "SELECT | Rodzaje informacji kontaktowych.Link | FROM | Directory.Rodzaje informacji kontaktowych AS Rodzaje informacji kontaktowych | WHERE | Rodzaje informacji kontaktowych. PredefinedData Name =" " E-mailOsoba kontaktowa"" "; ElementNoNo.VD = Request.Run (). Puste ();

Jeżeli nadal jest to błąd w danych bazy danych, to konieczne jest powiązanie z predefiniowanym elementem elementu IB. Te. konieczne jest wyjaśnienie systemowi, którym elementem bezpieczeństwa informacji należy się zająć, kod programu na nadane imię... Technicznie rzecz biorąc, powiązanie to po prostu określenie nazwy predefiniowanego elementu we właściwości "Predefiniowana nazwa danych"Element IB. Aby go zainstalować, wystarczy uruchomić kod:

2. "Predefiniowany element nie jest unikalny" - h advoi predefiniowane elementy:

Sytuacja ta polega na tym, że kilka elementów IB jest powiązanych z jednym predefiniowanym elementem. W takim przypadku, odwołując się do predefiniowanej nazwy, element zostanie wybrany losowo. Ta sytuacja jest zawsze zła. Jej trudność polega na tym, że platforma w żaden sposób o tym nie komunikuje. Tyle, że algorytmy zaczynają działać niepoprawnie.

Platforma zgłosi tylko błąd „Wstępnie zdefiniowany element nie jest unikalny” podczas próby edycji zduplikowanego elementu.

Dopóki nikt nie będzie musiał edytować elementu, nikt nie będzie wiedział o błędzie.

Takie duplikaty można tworzyć, na przykład, jeśli RIB jest używany dla książki referencyjnej, a tryb „Aktualizuj automatycznie” jest określony we właściwościach dla danych predefiniowanych. W takim przypadku, gdy dokonywana jest wymiana, podczas aktualizacji konfiguracji zostanie utworzona jedna instancja predefiniowanych danych. Druga instancja predefiniowanych pozycji o tej samej nazwie zostanie przeniesiona z centralnej bazy danych podczas wymiany.

Również te duplikaty powstaną podczas wykorzystywania przetwarzania wymiany między konfiguracjami w przypadku, gdy różne elementy bezpieczeństwa informacji odpowiadają z góry określonym elementom w różnych bazach danych. W takim przypadku jedna kopia predefiniowanych danych już istnieje w bazie danych, druga pojawi się przy wczytywaniu danych z innym UID. Jeśli wykonujesz transfery danych, musisz zdecydować, które elementy bazy danych są uważane za podstawowe i używać ich w podrzędnej bazie danych. W bazie podrzędnej konieczne jest zastąpienie użycia starych elementów elementami bazy głównej.

Takie błędy w bazie danych można wykryć za pomocą zapytania formularza:

WYBIERZ Rodzaje informacji kontaktowych .Predefiniowana nazwa danych, ILOŚĆ (RÓŻNE RODZAJE INFORMACJI KONTAKTOWYCH.Link) JAKO LiczbaPredefiniowana z katalogu.Typy informacji kontaktowych JAKO Rodzaje informacji kontaktowych.

To zapytanie zwróci listę predefiniowanych elementów z więcej niż jednym elementem IB.

Jeśli takie elementy występują, konieczne jest usunięcie połączenia z predefiniowanym dla jednego z nich. Te. konieczne jest jednoznaczne określenie dla systemu, do którego elementu IS kod programu powinien się odwoływać używając tej nazwy. Aby to zrobić, wystarczy wykonać kod.

3. Nieprawidłowe wskazanie predefiniowanego elementu.

Błąd polega na tym, że predefiniowany element odpowiada niewłaściwemu elementowi, który jest dostarczany przez logikę programu. Takie błędy są najtrudniejsze do zdiagnozowania. W przeciwieństwie do dwóch pierwszych typów, nie można automatycznie sprawdzić konfiguracji pod kątem tych błędów. Można je zidentyfikować tylko analizując logikę pracy. W razie wątpliwości możesz sprawdzić, czy używany jest właściwy przedmiot.

Aby to zrobić, po prostu wykonaj jedno z poleceń.

// Definicja elementu IB, który jest powiązany z wymaganym predefiniowanym raportem (Directories.Types of ContactInformation.EmailContactPerson) // Określenie predefiniowanego elementu, z którym powiązany jest wybrany raport (ReferenceOnItem.Name of PredefinedData)

Jeśli takie błędy zostaną znalezione, konieczne jest usunięcie nieprawidłowego linku ze starym elementem i dodanie linku z nowym elementem. Kod operacyjny jest podobny do kodu korygującego dla dwóch pierwszych typów błędów.

Cóż, krótko o błędach, kiedy praca programistyczna lub w trybie konfiguratora:

"Predefiniowany element nie należy do<Имя справочника>" - błąd pojawia się przy próbie napisania predefiniowanego elementu o nazwie, która nie pasuje do nazwy w kokonfiguratorze.

"Niezdefiniowane obiekty nie mogą mieć wstępnie zdefiniowanych wpisów typu subconto" - błąd pojawia się przy próbie niezdefiniowania elementu predefiniowanego planu kont. W celu wyeliminowania błędów konieczne jest odznaczenie flagi „Predefined” dla każdego wiersza umowy podwykonawczej elementu.

"Obiekty niepredefiniowane nie mogą mieć predefiniowanych rekordów wiodących typów obliczeń"- błąd pojawia się przy próbie niezdefiniowania predefiniowanego elementu wykresu typów obliczeń. W celu wyeliminowania błędów konieczne jest odznaczenie flagi „Predefiniowany” dla każdej linii wiodącego typu obliczenia elementu.

"Predefiniowane elementy nie są unikalne"- podczas aktualizacji wyświetlany jest błąd w konfiguratorze baza informacji dla wydania konfiguracji bez trybu zgodności 8.3.4. Przed aktualizacją należy sprawdzić duplikaty i wyeliminować je.

"Nazwa predefiniowanego elementu nie jest unikalna" - błąd występuje, jeśli w konfiguracji podczas aktualizacji do platformy istnieje kilka predefiniowanych elementów o tej samej nazwie8.3.6.2332 i nowsze. Konieczna jest eliminacja duplikatów w konfiguracji.

Do pracy z predefiniowanymi danymi polecam przetwarzanie. Wie, jak wykonać dowolne czynności z predefiniowanymi danymi, a także potrafi sprawdzić konfigurację jako całość pod kątem występowania błędów dwóch pierwszych typów (zduplikowane i brakujące elementy) we wszystkich obiektach bezpieczeństwa informacji (podręczniki, plany kont, PCW). , PVR).

Prosta obsługa do pracy z predefiniowanymi wartościami.

Umożliwia dopasowanie elementów IB do elementów predefiniowanych w konfiguracji.

Umożliwia sprawdzenie ogólnej konfiguracji pod kątem występowania zduplikowanych (kilka elementów IB powiązanych z jednym predefiniowanym elementem – błąd) i brakujących elementów (predefiniowanych elementów, które nie są powiązane z elementami IB – błąd). Taki elementy mogą powstać podczas wymiany lub awarii i prowadzić do błędów w konfiguracji.

Możesz po prostu zobaczyć aktualne wartości, możesz dokonać niezbędnych zmian.

Procedura operacyjna:

1. Rozpoczynamy przetwarzanie.

2. Dobieramy rodzaj (księga informacyjna, plan kont, PVC, PVR).

3. Wybieramy sam katalog wybranego typu.

4. Wszystkie predefiniowane elementy dostępne w IP i opisane w konfiguracji pojawiają się w części tabelarycznej przetwarzania.

Jeśli w bazie danych jest kilka elementów powiązanych z jedną predefiniowaną właściwością lub niektóre z elementów opisanych w konfiguracji nie są przypisane do elementów IB, system poinformuje o tym po wybraniu podręcznika. Zduplikowane i brakujące elementy pojawiają się na górze listy i są podświetlone na pomarańczowo.

5. Ustawiamy nowe wartości dla wymaganych predefiniowanych elementów.

W tym przypadku kolorem czerwonym zaznaczane są linie, dla których predefiniowany element znika z konfiguracji. Niebieskie linie, dla których zmienia się predefiniowany element, zielone linie, dla których pojawia się predefiniowany element.
Przy dużej liczbie duplikatów wygodnie jest zaznaczyć myszką wszystkie niepotrzebne linie i wskazać dla wszystkich wybranych link cofania za pomocą przycisku „Unmatch” (od wersji 1.3.1)

6. Przemianę przeprowadzamy, klikając przycisk „Wykonaj ponowne przypisanie elementów”.

Sprawdzanie duplikatów(błąd "Predefiniowany element nie jest unikalny"):

Po naciśnięciu przycisku „Sprawdź duplikaty” przetwarzanie sprawdzi wszystkie katalogi, plany kont, PVC i PVR oraz wyświetli listę tabel ze zduplikowanymi elementami wskazującymi liczbę zduplikowanych elementów.

Następnie należy osobno sprawdzić obiekty, dla których znaleziono błędy.

Sprawdzanie pominięte(błąd "W danych brakuje wstępnie zdefiniowanego elementu"):

Po kliknięciu przycisku „Sprawdź brakujące” przetwarzanie sprawdzi wszystkie katalogi, plany kont, PVC i PVR oraz wyświetli listę predefiniowanych elementów, które nie są powiązane z danymi IB.

Do użycia wymagana jest platforma 8.3.3 lub nowsza.

Wszechstronny, może być używany w dowolnej konfiguracji.

Wykryj język Afrikaans Albański Arabski Ormiański Azerbejdżan Baskijski Bengalski Białoruski Bułgarski Kataloński Chiński (Simp) Chiński (Trad) Chorwacki Czeski Duński Holenderski Angielski Esperanto Estoński Filipiński Fiński Francuski Galicyjski Gruziński Niemiecki Grecki Gujarati Haitański Kreolski Hebrajski Hindi Węgierski Islandzki Indonezyjski Irlandzki Włoski Japoński Kannada Koreański Lao Łaciński Łotewski Litewski Macedoński Malajski Maltański Norweski Perski Polski Portugalski Rumuński Rosyjski Serbski Słowacki Słoweński Hiszpański Suahili Szwedzki Tamil Telugu Tajski Turecki Ukraiński Urdu Wietnamski Walijski Jidysz Afrikaans Albański Arabski Ormiański Azerbejdżański Baskijski Bengalski Białoruski Bułgarski Kataloński Chiński (Simp) Chiński (Trad) Chorwacki Czeski Duński Holenderski Angielski Esperanto Estoński Filipiński Fiński Francuski Galicyjski Gruziński Niemiecki Grecki Gudżarati Haitański Kreolski Hebrajski Hindi Węgierski Islandzki Indonezyjski Irlandzki Włoski Japoński Kannada Koreański Lao Łaciński Łotewski Litewski Macedoński malajski maltański norweski perski polski portugalski rumuński rosyjski serbski słowacki słoweński hiszpański suahili szwedzki tamil telugu tajski turecki ukraiński urdu wietnamski walijski jidysz