Skocz do zawartości

Czyszczenie bazy Sello i SGT przy zamienie firmy

Polecane posty

Z końcem tego miesiąca zmieniamy formę prowadzenia działalności na spółkę. Mam już zielone światło od insertu w kwestii przeniesienia licencji ale cały czas walczę ze sprawami technicznymi.

Może ktoś z Sellowych forumowiczów pomoże?

Baza Sello - mam przetestowany plan działania. Robię kopię, czyszczę z transakcji, zmieniam dane firmy w Allegro i wszystko odziała. Zachowam oferty powiązane z towarami. Wystarczy podpiąć nową bazę SGT.

 

Baza Subiekt GT - tutaj nie mogę przeskoczyć czyszczenia bazy z dokumentów. Chcę zrobić kopię bazy, żeby zachować wszystkie dotychczas wypracowane ustawienia oraz kartoteki towarowe. Podpinając taka bazę do Sello, program nie gubi powiązań z towarami. Próbując usunąć dokumenty z bazy poleceniami SQL zatrzymałem się na nz_FinanseSplata. Nie mogę tego przeskoczyć. Na forum SGT znalazłem podpowiedź "Przed usuwaniem wyłącz wszystkie triggery i constrainty." Nie mam pojęcia jak to się robi.

 

Pomoże ktoś?

Link to postu

Usunięcie/wyłączenie constraintów (będę pisał pongliszem, wybaczcie :)) spowoduje tyle, że będzie można usuwać elementy od których są zależne inne elementy w bazie. Nie wiem czy to jest wskazane, bo potem pozostaną wiszące dane w bazie, niepowiązane z niczym. Mogą, ale nie muszą stwarzać problemu - zależy jakie to dane i jak są wykorzystywane.

Nie wiem czy da się je łatwo "wyłączyć" a potem włączyć ponownie, nie robiłem takich zabiegów nigdy, ale poszukałbym w Management Studio takich opcji. W ostateczności można wejść w design danej tabeli, następnie przycisk Relationships i tam są constrainty dotyczące danej tabeli i powiązań z innymi. Lepiej ich nie usuwać, ale każdy z nich ma ustawianą opcję Enforce Foreign Key Constraint na Yes (i tak ma być), ale przestawienie tego na NO, daje możliwość zignorowania tych powiązań - kosztem oczywiście wiszących potem w bazie pustych odwołań.

Można z tym popróbować, aczkolwiek ja w tym doświadczenia nie mam, jedynie wskazuję potencjalną ścieżkę.

Link to postu

@Bartosz Rosa Dzięki za podpowiedź. Niestety dostrzegam mój brak wiedzy nt SQL. Nie mam pojęcia jak dotrzeć do miejsca gdzie mogę sprawdzić powiązania z daną tabelą. Nie udało mi się znaleźć przycisku Relationships :$ Trochę się czuje jak dziecko w zerówce.

Próbując usunąć dokumenty krok po kroku, zacząłem od polecenia "delete from dok__Dokument". Wyrzucało po kolei tabele, które musiałem tez skasować i tak przeszedłem przez:

dok_MagRuch - poszło
dok_MagWart - poszło
dok_Pozycja - poszło
dok_Vat - poszło

nz__Finanse - nie udało się z powodu tabeli nz_FinanseSplata.

Wrzucając poleceni "delete from nz_FinanseSplata" dostaję poniższy komunikat:

"Msg 50000, Level 16, State 1, Procedure AktualizacjaSplat_Delete, Line 30 [Batch Start Line 0]
Nie można wykonać aktualizacji splat
Msg 3609, Level 16, State 1, Line 1
The transaction ended in the trigger. The batch has been aborted."

 

 

Link to postu

W menu Table Designer

obraz.png.a4332cdaabdeab0ec6fd270d2372ef84.png

po wejściu w edycję tabeli (design).

W Subiekcie na tabelach mogą być dodatkowo umieszczone triggery, czyli fragmenty kodu wykonywane podczas np usuwania danych. Zapewne one przeszkadzają bo usuwanie danych z tej tabeli wykonuje jakąś dodatkową operację.

Link to postu
1 godzinę temu, Bartosz Rosa napisał:

W menu Table Designer

obraz.png.a4332cdaabdeab0ec6fd270d2372ef84.png

po wejściu w edycję tabeli (design).

W Subiekcie na tabelach mogą być dodatkowo umieszczone triggery, czyli fragmenty kodu wykonywane podczas np usuwania danych. Zapewne one przeszkadzają bo usuwanie danych z tej tabeli wykonuje jakąś dodatkową operację.

 

Chyba jestem ułomny...

U mnie to wygląda tak:

Nowy-1.jpg.35f50534fa0e4fc749a4dc7d4f4c7eea.jpg

 

Pewnie kwestia wersji programu. Mam jak poniżej:

SQL Server Management Studio                        15.0.18206.0
Microsoft Analysis Services Client Tools                        15.0.1567.0
Microsoft Data Access Components (MDAC)                        10.0.17763.1
Microsoft MSXML                        3.0 4.0 6.0
Microsoft Internet Explorer                        9.11.17763.0
Microsoft .NET Framework                        4.0.30319.42000
Operating System                        10.0.17763

 

 

Link to postu

Udało się wyczyścić dokumenty. Niestety efekt końcowy nie był zadowalający.

Po uruchomieniu takiej bazy, dokumentów nie ma ale też nie mogę dodać żadnego dokumentu. Pojawia się błąd bez treści, czyli żółta chmurka bez jakiejkolwiek informacji.

Do usunięcia dokumentów musiałem wyłączyć triggery dla nz_FinsnaseSplata (tak znalazłem gdzie i jak). Włączyłem je później ponownie.

 

Zrobiłem jeszcze raz kopię bazy i wykonałem ponownie czyszczenie. Na drugiej kopii już dokumenty działają. Jutro będę testował bazę, żeby mieć pewność, że jest OK. Możliwe, że przy pierwszej kopii bazy tak długo grzebałem w niej szukając rozwiązania, że wprowadziłem za dużo zmian. Np w drugiej bazie nie usuwałem powiązań o których wspominałeś.

 

Gdyby ktoś potrzebował, u mnie zadziałał poniższy schemat. Czyszczenie bazy SUBIEKT GT z dokumentów:
delete from dok_MagRuch
delete from dok_MagWart
delete from dok_Pozycja
delete from dok_Vat
delete from nz_FinanseSplata (Tutaj musiałem wyłączyć triggery i po usunięciu danych z tabeli włączyć ponownie)
delete from zd_Rozrachunek
delete from zw_Rozrachunek
delete from nz_PowiaznaniePP
delete from nz_Cesja
delete from nz__Finanse
delete from iw_Powiazania
delete from iw_Pozycja
delete from iw__Dokument
delete from rf_Pozycja
delete from dok__Dokument

 

Po wyczyszczeniu jak wyżej, Subiekt nadal trzymał informację o stanie magazynowym towarów choć nie było żadnego dokumentu magazynowego. Np "Towar1" miał ilość 10 szt. ale nie dało się go wrzucić do faktury bo wyrzucało błąd że brakuje na magazynie. Na liście kartotek nadal wyświetlało się 10 szt. Nie da się wyzerować stanów magazynowych inwentaryzacją, bo musi utworzyć WZtkę i wydać towar a wyrzuca błąd, że nie ma czego wydać. Stan w systemie 10 szt. dostępne na magazynie 0 szt. :)

Bartku, da się jakoś z bazy usunąć informację o ilości towaru?

Link to postu
1 godzinę temu, Bartosz Rosa napisał:

Zobacz tabelę tw_Stan, ale nie pytaj mnie jak działa :).

Sprawdziłem wczoraj. Niestety po jej wyczyszczeniu zniknęły wszystkie kartoteki towarowe. Szukam dalej. Właście przeglądam strukturę bazy subiekta GT i próbuje znaleźć tabelę, która może na to wpływać.

Widzę też, że pomimo usunięcia dokumentów, kontrahenci nie stracili powiązania z dokumentami. W historii zakupów kontrahenta nie ma żadnego dokumentu ale nie mogę go usunąć. Pojawia się chmurka, że jest użyty w jakiś dokumentach.

Link to postu

Możliwe, że tw_stan musi być wypełniona 1 do 1 z towarami. Co do kontrahenta, to zobacz czy w samym kontrahencie nie ma pola, które keszuje informację o dokumentach. Struktura bazy Subiekta jest zdecydowanie bardziej skomplikowana niż Sello, więc tam czyszczenie danych może nie pójść tak łatwo.

Link to postu
1 minutę temu, Bartosz Rosa napisał:

Struktura bazy Subiekta jest zdecydowanie bardziej skomplikowana niż Sello, więc tam czyszczenie danych może nie pójść tak łatwo.

I właśnie nie idzie tak łatwo. Jeszcze dziś popróbuję i na popołudnie umówiony jestem z serwisantem Insertu. Jeśli on nic nie wyczaruje, to w piątek zakładam nową bazę SGT i wprowadzam potrzebne ustawienia. Wtedy będę borykał się z problemem powiązania kartotek towarowych, które już są w Sello z tymi, które przeniosę do SGT (będą miały inne ID). Gdzieś tu się przewijał na forum taki temat i widziałem, że pomagałeś w nim. Na jego podstawie spróbuję ustawić powiązania.

Udało mi się odblokować kontrahentów, ale wyczyściłem kilka jeszcze tabel. Miałem nadzieję, że nie będzie potrzeby ruszania niczego poza samymi dokumentami. Każda kolejna tabela to wchodzenie na nieznany mi grunt. Nie wiem z czym dokładnie jest powiązana i jakie skutki może to przynieść. Nie chciałbym po tygodniu działania odkryć, że zablokowałem lub popsułem coś w bazie, co jest mi niezbędne do prawidłowego funkcjonowania. Wtedy dopiero narobiłbym sobie bałaganu.

 

6 minut temu, Bartosz Rosa napisał:

Możliwe, że tw_stan musi być wypełniona 1 do 1 z towarami.

Jest jakieś polecenie, żeby nie czyścić tabeli a jedynie wyzerować wartości w niej?

Link to postu
2 godziny temu, Dominik kidl napisał:

Gdzieś tu się przewijał na forum taki temat i widziałem, że pomagałeś w nim. Na jego podstawie spróbuję ustawić powiązania.

To będzie zdecydowanie prostsze niż czyszczenie bazy Subiekta. Przynajmniej jeśli chodzi o powiązania.

 

3 godziny temu, Dominik kidl napisał:

Jest jakieś polecenie, żeby nie czyścić tabeli a jedynie wyzerować wartości w niej?

update nazwa_tabeli set pole = wartosc

 

Link to postu
1 godzinę temu, Bartosz Rosa napisał:

To będzie zdecydowanie prostsze niż czyszczenie bazy Subiekta. Przynajmniej jeśli chodzi o powiązania.

 


update nazwa_tabeli set pole = wartosc

 

update tw_Stan set st_Stan = 0

załatwiło sprawę stanów magazynowych.

 

Zrobię trochę testów. Spodziewam się, że jeszcze wyjdą jakieś ukryte powiązania, które coś blokują.

Link to postu
  • 1 miesiąc temu...

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...