Skocz do zawartości

Przenoszenie pól własnych do wersji 2 - błąd

Polecane posty

Podczas przenoszenia pól własnych do wersji 2 natrafiłem na następujące problemy. 
image.png.d62670b82b1d8a512c1fd5a30913e1aa.png

 

<?xml version="1.0" encoding="utf-8"?>
<Exception>
  <Type>System.ArgumentException</Type>
  <Time>2021-07-26 11:50:16</Time>
  <Description>Element o tym samym kluczu został już dodany.</Description>
  <Method>Void ThrowArgumentException(System.ExceptionResource)</Method>
  <HelpLink />
  <StackTrace>   w System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   w System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   w InsERT.Moria.Narzedzia.KonwerterPolWlasnych.PobierzSlownikiWlasne1()
   w InsERT.Moria.Narzedzia.KonwerterPolWlasnych.AnalizujPolaWlasneWersja1Core(Boolean analizujWartosci, Action throwIfCancellationRequested, IProgress`1 progress)</StackTrace>
  <EnviromentStackTrace>   w System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   w System.Environment.get_StackTrace()
   w InsERT.Mox.Helpers.Logging.ExceptionFileSaver.StackTraceElement()
   w InsERT.Mox.Helpers.Logging.ExceptionFileSaver.SaveExceptionInFile(Exception ex, String file)
   w InsERT.Mox.Helpers.Logging.ExceptionFileSaver.Save(Exception exception, String&amp; exceptionFilePath)
   w InsERT.Mox.Helpers.Logging.Logger.LogException(Exception exception, String message)
   w InsERT.Mox.Helpers.Logging.LogHelper.LogException(Exception exception)
   w InsERT.Moria.Narzedzia.KonwerterPolWlasnych.AnalizujPolaWlasneWersja1Core(Boolean analizujWartosci, Action throwIfCancellationRequested, IProgress`1 progress)
   w InsERT.Moria.Narzedzia.KonwerterPolWlasnych.AnalizujPolaWlasneWersja1(Boolean analizujWartosci, Func`1 cancellationRequested, IProgress`1 progress)
   w InsERT.Moria.PolaWlasne.UI.PrzejscieNaPolaWlasne2Command.&lt;&gt;c__DisplayClass31_0.&lt;AnalizujPolaWlasneWersja1&gt;b__0(IProgressService progressService)
   w InsERT.Mox.UIFramework.ModalVisualsManager.&lt;&gt;c__DisplayClass7_0.&lt;HandleBackgroundOperationWithProgressRequest&gt;b__0()
   w System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   w System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   w System.Threading.ThreadHelper.ThreadStart()</EnviromentStackTrace>
</Exception>


Proszę o pomoc w przeniesieniu danych

Link to postu

Witam, przypuszczam, że u Pana w polach własnych v1 zachodzi jeden z poniższych przypadków:

1. Istnieją dwa słowniki o tej samej nazwie lub

2. W jednym słowniku istnieją dwie pozycje o tej samej nazwie

 

Proszę będąc w polach v1 usunąć lub zmienić nazwę słownika lub pozycji słownika, która się powtarza. Zapisać zmiany w polach v1, uruchomić nexo ponownie, aby zmiany zostały wdrożone i dopiero po takim zmodyfikowaniu wywołać konwersję do pól v2

Edytowane przez Łukasz Kubacki
Ponieważ błąd występuje podczas analizy pól własnych, dlatego nie jest potrzebne przywracanie podmiotu
Link to postu
1 godzinę temu, Jakub Skonieczny napisał:

Problem który się pojawił w tej chwili polega na tym, że nie jestem w stanie zmienić nazwy wartości słownika pól własnych asortymentu.
Pojawia się komunikat "sekwencja zawiera więcej niż jeden element" usunięcie też nie jest możliwe. Proszę o pomoc  

W takim razie trzeba zmienić nazwę wartości słownika z poziomu bazy danych podmiotu.

Proszę na wszelki wypadek najpierw zarchiwizaować podmiot.

Proszę zamknąć nexo i wejść do bazy danych podmiotu używając np. Management Studio i wykonać poniższe polecenie SELECT:

SELECT ob.[name]
FROM sys.objects ob inner join sys.schemas sch on ob.schema_id = sch.schema_id
WHERE type = N'U' and sch.name = N'ModelDanychContainer'
and substring(ob.[name], 1, 1) collate Polish_CS_AS = lower(substring(ob.[name], 1, 1)) collate Polish_CS_AS
ORDER BY ob.name

Powyższe polecenie wypisze nazwy wszystkich słowników własnych v1 - każdy słownik własny to tabela, której nazwa nie zawiera spacji i polskich znaków.

Następnie prosze wypisać wartośći tego słownika za pomocą polecenia:

select * from ModelDanychContainer.MojaNazwaSlownika

otrzyma Pan tabelę z kolumnami Id i Nazwa - proszę zlokalizować wiersz z powtórzoną wartością w kolumnie Nazwa

Teraz proszę zmienić nazwę na nową za pomocą polecenia:

update ModelDanychContainer.MojaNazwaSlownika
set Nazwa = N'tmp'
where Id = ? --zamiast ? wpisac odpowiednie Id

Teraz proszę zamknąć Management Studio (po to, żeby nie wisiało żadne połączenie do bazy danych) i uruchomić nexo i wykonać przejście na pola własne v2

  • Lubię to 1
Link to postu
20 godzin temu, Jakub Skonieczny napisał:

Jak się nazywa tabela z moimi słownikami w drugiej wersji ? 

SQL nie znajduję już 



ModelDanychContainer.MojaNazwaSlownika

W polach własnych v2 nie ma już fizycznych tabel dla słowników własnych. Proszę zajrzeć w poniższy wątek:

Struktura pól własnych v2 w bazie danych - Sprawy techniczne - Forum InsERT

 

Oczywiście w samym nexo można nadal wyświetlić wartości wszystkich słowników własnych - słowniki własne znajdują się w osobnej konfiguracji "Słowniki własne"

Edytowane przez Łukasz Kubacki
Informacja o sposobie wyświetlenia słowników własnych w nexo
Link to postu
×
×
  • Dodaj nową pozycję...