Element savedquery ma niekompletną zawartość. Oczekiwana lista możliwych elementów: błąd LocalizedNames występuje podczas importowania rozwiązania firmy Microsoft Dynamics 365
Ten artykuł zawiera rozwiązanie błędu występującego podczas próby zaimportowania rozwiązania firmy Microsoft Dynamics 365.
Dotyczy: Microsoft Dynamics 365
Oryginalny numer KB: 4463330
Symptomy
Podczas próby zaimportowania rozwiązania w Dynamics 365 występuje następujący błąd:
"Nie można zaimportować tego pakietu rozwiązania, ponieważ zawiera on nieprawidłowy kod XML. Możesz spróbować naprawić plik, ręcznie edytując zawartość XML przy użyciu informacji znalezionych w błędach sprawdzania poprawności schematu lub możesz skontaktować się z dostawcą rozwiązania. Kod błędu 8004801a."
Jeśli wybierzesz pozycję Szczegóły techniczne, zostanie wyświetlony następujący komunikat wraz z innymi szczegółami błędu:
"Sprawdzanie poprawności schematu pliku customizations.xml w skompresowanym pliku pakietu rozwiązania nie powiodło się. Aby ręcznie zweryfikować i edytować plik, możesz pobrać plik schematu tutaj i użyć edytora XML, który obsługuje walidację schematu, aby uzyskać więcej szczegółów."
Pole tekstowe zawierające więcej szczegółów zawiera następujące informacje:
"Element 'savedquery' ma niekompletną zawartość. Oczekiwana lista możliwych elementów: "LocalizedNames".
Pole tekstowe zawiera również dodatkowe szczegóły, takie jak część pliku FetchXML używanego dla zapisanego zapytania (widok).
Przyczyna
Ten błąd wskazuje, że w rozwiązaniu znajduje się zapisane zapytanie (widok), a w kodzie XML dla tej zapisanej definicji zapytania brakuje sekcji LocalizedNames. Może się to zdarzyć, jeśli ktoś ręcznie zmodyfikował plik customizations.xml.
Rozwiązanie
Aby umożliwić pomyślne zaimportowanie rozwiązania, należy dodać sekcję LocalizedNames w pliku XML dla zapisanego zapytania.
Wyodrębnij zawartość pliku .zip rozwiązania, który próbujesz zaimportować.
Otwórz plik customization.xml w edytorze tekstów.
Zapoznaj się ze szczegółami błędu, które powinny zawierać część sekcji fetchxml z zapisanego zapytania. Może być konieczne znalezienie unikatowej sekcji tego kodu XML, a następnie wyszukanie w pliku customization.xml w celu znalezienia pasującego zapisanego zapytania.
Po zlokalizowaniu zapisanego zapytania, do którego odwołuje się szczegóły błędu, zaktualizuj kod XML, aby uwzględnić sekcję LocalizedNames. Poniżej znajduje się przykład zapisanego zapytania z brakującą sekcją.
<savedquery unmodified="1"> <isquickfindquery>0</isquickfindquery> <isprivate>0</isprivate> <isdefault>0</isdefault> <savedqueryid>{65ffaf9a-e8c5-432d-860b-32f841b00d87}</savedqueryid> <queryapi></queryapi> <layoutxml> <grid name="resultset" jump="name" select="1" icon="1" preview="1"> <row name="result" id="accountid"> <cell name="name" width="300" /> <cell name="telephone1" width="100" /> <cell name="address1_city" width="100" /> <cell name="primarycontactid" width="150" /> <cell name="accountprimarycontactidcontactcontactid.emailaddress1" width="150" disableSorting="1" /> <cell name="statecode" width="100" /> </row> </grid> </layoutxml> <querytype>0</querytype> <fetchxml> <fetch version="1.0" output-format="xml-platform" mapping="logical"> <entity name="account"> <attribute name="name" /> <attribute name="telephone1" /> <attribute name="address1_city" /> <attribute name="primarycontactid" /> <link-entity alias="accountprimarycontactidcontactcontactid" name="contact" from="contactid" to="primarycontactid" link-type="outer" visible="false"> <attribute name="emailaddress1" /> </link-entity> <attribute name="statecode" /> </entity> </fetch> </fetchxml> <IntroducedVersion>9.0.0.0</IntroducedVersion> <LocalizedNames> <LocalizedName description="All Accounts" languagecode="1033" /> </LocalizedNames> </savedquery>
Po poprawieniu kodu XML wybierz wszystkie składniki wyodrębnione z pliku rozwiązania i wyślij je do nowego pliku .zip.
Spróbuj ponownie zaimportować rozwiązanie.
Uwaga
Jeśli w sekcji LocalizedNames brakuje <wielu zapisanych zapytań (widoków> ), kroki mogą wymagać powtórzenia dla każdego widoku.
Więcej informacji
Jeśli nie masz pewności co do poprawnej nazwy zapisanego zapytania (widoku) do podania dla tej sekcji, możesz znaleźć nazwę przy użyciu savedqueryid
wartości i Dynamics 365 interfejsu WebAPI. W powyższym przykładzie savedqueryid
wartość to 65ffaf9a-e8c5-432d-860b-32f841b00d87. Następnie możesz uzyskać dostęp do następującego adresu URL w przeglądarce internetowej, aby zwrócić nazwę widoku:
https://<your dynamics 365 URL>/api/data/v9.0/savedqueries(<savedqueryid>)?$select=name
Przykład:
https://contoso.crm.dynamics.com/api/data/v9.0/savedqueries(65ffaf9a-e8c5-432d-860b-32f841b00d87)?$select=name