1c tworzenie planu wymiany krok po kroku. Zaplanowana wymiana przy użyciu standardowych środków. Co to jest format EnterpriseData


Jeśli Twoja organizacja zatrudnia więcej niż 5 osób, najprawdopodobniej korzystasz z produktów 1C. Prawie zawsze organizacje instalują kilka baz danych 1C, ponieważ każda z nich rozwiązuje określony zakres problemów. Na przykład firma zajmuje się sprzedażą detaliczną i prowadzi księgowość, w takiej sytuacji klient zwykle instaluje UT (Trade Management) i BP (Enterprise Accounting). Nawet prosty indywidualny przedsiębiorca zatrudniający kilku pracowników może równie dobrze działać jako taka firma!

Dlaczego warto skonfigurować wymianę danych?

Rozważmy w dalszym ciągu sytuację z UT i BP. Wyobraźmy sobie, że w tej chwili nasza centrala nie jest skonfigurowana jakie działania musimy wykonać, aby transakcje księgowe zostały odzwierciedlone w obu bazach? Zgadza się, najpierw uzupełnimy dane w UT, a później te same dane będziemy musieli wprowadzić do BP, bo w UT nie możemy np. wpisać odbioru towaru, ale nie możemy tego zrobić w BP.

Nawet jeśli zdecydujesz się na standardową wymianę danych (konfigurowanie standardowej wymiany danych (synchronizacja 1C)), nie oznacza to, że można ją skonfigurować w Twojej bazie danych. Problemy pojawiają się, jeśli np. przez dłuższy czas nie aktualizowałeś bazy danych (aby utrzymać standardową wymianę, Twoje bazy muszą być aktualne) lub obiekty, które zamierzasz przenieść z jednej bazy do drugiej są modyfikowane (w tym przypadku standardowa giełda nie będzie działać poprawnie), z tym wszystkim, nawet jeśli wersje platform baz danych będą się różnić (7.7 – 8.3), wówczas najprawdopodobniej wymiana danych również będzie musiała zostać zmodyfikowana lub opracowana od podstaw.

Kto musi korzystać z wymiany danych między bazami danych 1C?

Jeśli poniższe stwierdzenia są dla Ciebie istotne, musisz skonfigurować wymianę między swoimi konfiguracjami:

  • Masz więcej niż jedną bazę danych 1C
  • Wymaga szybkiego przeniesienia informacji z jednej bazy danych do drugiej i odwrotnie
  • Potrzebujesz automatycznej wymiany lub wymiany w czasie rzeczywistym

Opracowanie i konfiguracja wymiany danych między konfiguracjami 1C

Odpowiednio zaprojektowana wymiana danych pozwoli Ci na:

  • Wyładowuj i załaduj obiekty z jednej bazy danych do drugiej
  • Wymiana między różnymi wersjami 1C
  • Wymieniaj dane w czasie rzeczywistym
  • Znacząco obniżą koszty wynagrodzeń pracowników, bo teraz będą mieli więcej wolnego czasu
  • Oszczędź swój czas i budżet

Opracowanie zasad wymiany danych na przykładzie zmodyfikowanych baz danych UT i BP

Posiadamy dwie bazy danych, w których dokonano modyfikacji dokumentu „Odbiór towarów i usług”, w szczególności dodano nowe dane do dokumentów i części tabelarycznych, usunięto część standardowych danych, w wyniku czego standardowa wymiana danych nie nie działa. Opracowaliśmy nową regułę wymiany i zapisaliśmy ją do pliku.


Słowa kluczowe: rozproszone, URDB, XML, rejestracja, węzeł, węzeł, automatyczna rejestracja, inicjał, obraz, POP3, SMTP, MailMessage, peryferyjne, centralne, replikacja, wymiana

Zastrzeżenie i warunki użytkowania

Wszystkie znaki towarowe wspomniane przypadkowo w tym artykule należą do ich odpowiednich właścicieli.
Ten artykuł został opublikowany na licencji Creative Commons Uznanie autorstwa – Na tych samych warunkach 3.0 Unported.
http://creativecommons.org/licenses/by-sa/3.0/

Od razu zaznaczę, że wszystkie poniższe informacje dotyczą wydania platformy 8.0.7.36 i nowszych.

Krok 1: Stwórz plan wymiany

Plan wymiany tworzymy w konfiguracji. Nazwijmy to na przykład „DistributedBase”. Wymagane w
We właściwościach planu wymiany zaznacz pole wyboru „Rozproszona baza danych”.

W zakładce „Inne” kliknij przycisk „Skład”, aby określić, które obiekty zostaną uwzględnione w wymianie. Przez
Domyślnie możesz włączyć wszystkie obiekty („Akcje” - „Włącz wszystko”). Ważnym punktem jest parametr
„Autorejestracja”. Generalnie powinno być włączone dla wszystkich obiektów.

Uwaga: dodając nowe obiekty do konfiguracji, nie są one uwzględniane w planie wymiany. Te. Po
Aby dodać obiekt należy go dodać do planu wymiany.

Jeśli chcesz, aby jakieś obiekty nie brały udziału w wymianie, po prostu wyklucz je z listy
planu wymiany. Ale wówczas kontrola integralności referencyjnej pozostaje całkowicie w gestii twojego sumienia. Jeśli, aby
np. dany dokument nie jest uwzględniony w planie wymiany, ale uwzględniony jest rejestr, na którym dokonuje przelewów,
wówczas w odbiorczej bazie danych całkiem możliwe jest odbieranie ruchów rejestracyjnych bez dokumentu rejestratora, który
Zgadzam się, to niedobrze.

W zasadzie te działania wystarczą, aby RDB działał w trybie „ręcznym”. W tym celu uruchamiamy
Enterprise, otwórz nasz plan wymiany poprzez menu „Operacje”. Jeśli chodzi o wymianę, jest ona zawsze obecna
predefiniowany węzeł „z kropką”. To jest opis bieżącego węzła. Trzeba go otworzyć i napełnić. W naszym
W takim przypadku dostępne będą pola „Kod” i „Nazwa”. Przypiszmy naszemu węzłowi kod „AA” i nazwijmy go
"Centralny". Dodajmy jeden węzeł do planu wymiany. Przypiszmy mu kod „BB” i nazwijmy go „Peripheral”.

Teraz możemy stworzyć obraz podstawy peryferyjnej. Dokonuje się tego poprzez kliknięcie przycisku „Utwórz inicjał”.
image”. Na liście węzłów należy wybrać bazę peryferyjną. Obraz bazy danych tworzony jest w postaci gotowego zabezpieczenia informacji
w katalogu lub na serwerze 1C:Enterprise. (w przeciwieństwie do wersji 7.7, gdzie obraz bezpieczeństwa informacji został utworzony w postaci pliku
rozładunek). Następnie utworzoną bazę danych można przenieść w wybrane miejsce, po prostu kopiując plik 1CV8.1CD
(dla wersji plikowej) lub poprzez Konfigurator poprzez wgrywanie i pobieranie danych.

Jeśli otworzysz plan wymiany w peryferyjnym systemie bezpieczeństwa informacji, zobaczysz, że węzeł jest „z kropką”, tj. aktualny
węzeł „Peryferyjny” stał się węzłem, a ikona węzła „Centralny” stała się czerwona, tj. węzeł
„Centralny” jest węzłem głównym w stosunku do bieżącego.

Wymiany w trybie „ręcznym” można dokonać za pomocą przycisków „Zapisz zmiany” i „Odczytaj”.
zmiany". W pierwszym przypadku zostaniesz poproszony o wybranie pliku, w którym zostaną zapisane zmiany, w drugim
- plik, z którego będą odczytywane zmiany. Wymiana odbywa się w formacie xml. Zmiany są rejestrowane dla
wybrany węzeł.

Krok 2: Prześlij zmiany do pliku XML i wyślij e-mailem

Stworzyliśmy więc plan wymiany, stworzyliśmy peryferyjny system bezpieczeństwa informacji, a nawet nauczyliśmy się przesyłać dane pomiędzy
podstawy. Teraz naszym zadaniem jest nauczenie baz danych wymiany mailowej.

Do planu wymiany dodajemy dwa szczegóły: Adres e-mail typu „string” i typu „Execute Exchange”.
„boolowski”. W adresie E-mail będziemy przechowywać adres e-mail węzła, tj. adres pod którym będziemy
wysyłaj wiadomości wymiany. Rekwizyty ExecuteExchange jest potrzebne, aby szybko wyłączyć funkcję automatyczną
wysyłanie-wysyłanie wiadomości.

Uczyńmy procedurę pracy z pocztą elektroniczną uniwersalną, tj. umożliwijmy to
korzystanie zarówno z MAPI (wysyłanie-odbieranie za pośrednictwem klienta poczty e-mail, na przykład MS Outlook), jak i
bezpośredni dostęp do serwerów SMTP/POP3.

Dodajmy do konfiguracji kilka stałych:

Gdzieś w ogólnej formie zapewniamy edycję wartości tych stałych.

Dodajmy wspólny moduł, nazwijmy go „rbDistributedBase”. Piszemy w nim:

Procedura rbSendExchangeMessages() Eksportuj UseSMTP = Constants.UseSMTPExchange.Receive(); //Najpierw tworzymy obiekt Mail, który w zależności od ustawień będzie typu InternetMail, //jeśli używany jest bezpośredni dostęp do serwerów, lub Mail, jeśli używany jest MAPI. Jeśli użyj SMTP, to //Dla obiektu typu InternetMail utwórz i wypełnij profil pocztowy. MailProfile = Nowy profil poczty internetowej; MailProfile.SMTPServerAddress = Stałe.SMTPExchangeServerAddress.Get(); MailProfile.SMTPPort = Stałe.SMTPExchangeServerPort.Receive(); MailProfile.SMTPUser = Stałe.SMTPExchangeServerUser.Receive(); MailProfile.SMTP Hasło = Stałe.SMTPExchangeUserPassword.Receive(); MailProfile.WaitTime = Constants.ServerWaitTime.Get(); Poczta = Nowa poczta internetowa(); Próba Mail.Connect(MailProfile); Raport wyjątków(" WYMIANA: Błąd łączenia z profilem pocztowym! Wymiana nie powiodła się!" + ErrorDescription(), MessageStatus.VeryImportant); Return; EndAttempt; W przeciwnym razie Mail = New Mail(); Próba Mail.Connect(); Raport wyjątków("" + ErrorDescription(), MessageStatus.VeryImportant); Return; EndAttempt; EndIf ; //Następnie wybierz wszystkie węzły z planu wymiany, z wyjątkiem bieżącego, //które mają ustawiony atrybut Perform Exchange. SelectionNodes = ExchangePlans.DistributedBase.Select(); Podczas gdy pętla SelectNodes.Next() nie jest SelectNodes.PerformExchange, następnie kontynuuj; koniecJeśli; Jeśli SelectionNodes.Link = ExchangePlans.DistributedBase.ThisNode() następnie kontynuuj; koniecJeśli; ElectronicAddress = AbbrLP(SelectionNodes.ElectronicAddress); Jeśli EmailAddress = "" Kontynuuj; koniecJeśli; //Wykorzystując obiekty XML Record i Message Record rejestrujemy zmiany //dla wybranego węzła w pliku xml. Węzeł = SelectionNodes.Link; XMLRecord = NowyXMLRecord(); MessageFileName = TemporaryFileDirectory() + "Message_" + skróconyLP(ExchangePlans.DistributedBase.ThisNode().Code) + "_ " + skróconyLP(Node.Code) + ".xml "; EntryXML.OpenFile(NazwaPliku Wiadomości); MessageRecord = ExchangePlans.CreateMessageRecord(); MessageRecord.StartRecord(XMLRecord, węzeł); ExchangePlans.WriteChanges(WriteMessage); WriteMessage.FinishRecord(); ZapiszXML.Zamknij(); //Następnie tworzymy nowy list, dołączamy do niego wynikowy plik xml i //wyślij na adres podany w adresie e-mail węzła. Plik = Nowy plik (NazwaPliku Wiadomości); Temat wiadomości = „1C:Exchange” + Abbr.LP(ExchangePlans.DistributedBase.ThisNode().Code) + „_” + Abbr.LP(Node.Code); Jeśli UseSMTP, to MailMessage = New InternetMailMessage; MailMessage.Subject = Temat Wiadomości; MailMessage.Attachments.Add(NazwaPlikuWiadomości,NazwaPliku); MailMessage.Recipients.Add(Adres e-mail); Mail.Send(MailMessage); Inaczej MailMessage = nowy MailMessage; MailMessage.Subject = Temat Wiadomości; MailMessage.Attachments.Add(NazwaPlikuWiadomości); MailMessage.Recipients.Add(Adres e-mail); Mail.Send(MailMessage, False); koniecJeśli; Jeśli Constants.OutputExchangeMessages.Get() to Report(" EXCHANGE: Wymiana wiadomości dla węzła" + Nazwa węzła + " wysłane! ", MessageStatus.Information); EndIf; DeleteFiles(MessageFileName); EndCycle; Mail.Disconnect(); EndProcedure

Polecam dodać do interfejsu dodatkowy panel, na jednym z przycisków można to wywołać
procedury. Teraz pozostaje tylko uruchomić Enterprise, skonfigurować adres e-mail bezpieczeństwa informacji peryferyjnych,
zaznacz pole „Wymień”, kliknij przycisk procedury na panelu i uruchom, aby otrzymać pocztę
podany e-mail adresy. Powinieneś otrzymać list o temacie „1C:Exchange AA_BB” i załączony plik
„Wiadomość_AA_BB.xml”.

Zatem połowa pracy została wykonana: nauczyliśmy grupę G8 wysyłania wiadomości wymiany RDB za pośrednictwem poczty elektronicznej
Poczta.

Krok 3. Otrzymuj aktualizacje e-mailem i zapisuj je w bezpieczeństwie informacji

Teraz wykonajmy procedurę odwrotną: otrzymaj aktualizacje e-mailem i zapisz je w bezpieczeństwie informacji.

Do parametrów sesji dodaj parametr „Distributed Database Exchange in Progress” typu Boolean. Wyjaśnię to poniżej
spotkanie.

Dodajmy następującą procedurę do wspólnego modułu rbDistributedBase:

Procedura rbGetExchangeMessages() Eksportuj UseSMTP = Constants.UseSMTPExchange.Receive(); //tak jak w procedurze rbSendExchangeMessages(), najpierw utwórz obiekt Poczta, jeśli używasz SMTP, to MailProfile = Nowy InternetMailProfile; MailProfile.POP3ServerAddress = Stałe.POP3ExchangeServerAddress.Get(); MailProfile.POP3Port = Stałe.POP3ExchangeServerPort.Get(); MailProfile.User = Constants.POP3ExchangeServerUser.Get(); MailProfile.Password = Constants.UserPasswordPOP3Exchange.Receive(); MailProfile.WaitTime = Constants.ServerWaitTime.Get(); Poczta = Nowa poczta internetowa(); Próba Mail.Connect(MailProfile); Raport wyjątków(" WYMIANA: Błąd łączenia z profilem pocztowym! |Wymiana nie powiodła się!", MessageStatus.VeryImportant); Return; EndAttempt; W przeciwnym razie Mail = New Mail(); Próba Mail.Connect(); Raport o wyjątkach(" WYMIANA: Błąd połączenia z profilem e-mail użytkownika! |Wymiana nie powiodła się!", MessageStatus.VeryImportant); Return; EndAttempt; EndIf; MessageArray = nowa tablica; Jeśli użyjSMTP, to AllMessages = Mail.Select(False); Else AllMessages = Mail.Select(False, False); EndIf; //Wybierz spośród wszystkich liter te, które mają temat „1C:Exchange”. //Mała, ale ważna uwaga: //uważamy, że wszystkie otrzymane listy z tematem „1C:Exchange” są zamierzone //dokładnie dla bieżącego węzła, //te. że różne węzły w zakresie wymiany mają RÓŻNE adresy e-mail. Dla każdej wiadomości ze wszystkich wiadomości Cykl Jeśli Leo (Wiadomość. Temat, 8)<>„1C:Wymiana” Następnie kontynuuj; koniecJeśli; TryMessageArray.Add(Wiadomość); //Zapisz załącznik do wiadomości e-mail na dysku. //Dokładne sprawdzanie załącznika na razie zostawimy za kulisami. Załącznik = Wiadomość.Załączniki; MessageFileName = TemporaryFileDirectory() + załącznik.Nazwa; ExchangeData = Załącznik.Dane; ExchangeData.Write(NazwaPliku Wiadomości); //Korzystając z obiektów XMLReader i MessageReader odczytujemy dane //aktualizacje z zapisanego pliku. Przed zarejestrowaniem aktualizacji w zakresie bezpieczeństwa informacji //ustaw parametr sesji Distributed Database Exchange in Progress na True. //Następnie odczytujemy zmiany w bezpieczeństwie informacji: Exchange Plans.ReadChanges(ReadMessage). //Jednocześnie zapisujemy wiadomości w tablicy, aby później móc je wszystkie naraz usunąć. ReadXML = nowy ReadXML(); ReadXML.OpenFile(NazwaPliku Wiadomości); MessageReader = ExchangePlans.CreateMessageReader(); ReadMessage.StartReading(ReadingXML); SessionParameters.DistributedBaseExchange w toku = True; ExchangePlans.ReadChanges(ReadMessage); Przeczytaj wiadomość.Zakończ czytanie(); CzytajXML.Zamknij(); Jeśli Constants.OutputExchangeMessages.Get() to Report(" WYMIANA: Dane wymiany zostały zaakceptowane",MessageStatus.Information); EndIf; Raport wyjątków(" WYMIANA: Błąd podczas odbierania danych wymiany:" + ErrorDescription(), MessageStatus.VeryImportant); EndAttempt; //Po zakończeniu odczytywania danych wróć //parametr sesji DistributedBase Exchange jest w toku jest ustawiony na False. SessionParameters.DistributedBaseExchange w toku = False; Próba usunięcia plików (MessageFileName); Wyjątek //jeśli to nie zadziała, cóż Zakończ próbę; Koniec cyklu; Jeśli używasz SMTP, to Mail.DeleteMessages(MessageArray); koniecJeśli; Poczta.Rozłącz(); Koniec procedury

Teraz o tym, do czego potrzebny jest parametr sesji Distributed Database Exchange In Progress.
Faktem jest, że podczas odczytu danych metodą ExchangePlans.ReadChanges() następuje wywołanie
procedury obsługi zdarzenia BeforeWrite() zmodyfikowanych/dodanych obiektów. A jeśli podczas nagrywania
dowolnego obiektu w procedurze obsługi, parametr Rejection zostanie wówczas ustawiony na True
podczas wykonywania ExchangePlans.ReadChanges() wystąpi wyjątek i odpowiednio wymiana
nie zostanie wykonany. Wartość parametru sesji DistributedBase Exchange In Progress może wynosić
analizowane w procedurach obsługi, aby uniknąć takiej sytuacji.
Wraz z wydaniem wydania 12 (chociaż mogę się mylić co do wersji) znaczenie tej metody jest nieco mniejsze
deprecatedA, ponieważ obiekty mają teraz tę właściwość Opcje wymiany, od którego, we własnym zakresie. Ta właściwość jest ustawiona na True kiedy
zapisywanie danych poprzez plan udostępniania.

Teraz w interfejsie na naszym panelu dodajemy kolejny przycisk, na którym zawieszamy wywołanie
procedury. Uruchommy Enterprise i cieszmy się.
Prawie wszystko zostało już zrobione, pozostało tylko trochę: sprawić, by nasze procedury przebiegały automatycznie.
Krok 4. Konfiguracja automatycznej wymiany

Jesteśmy więc prawie blisko celu naszej historii. Pozostał tylko jeden krok: uruchomienie
automatyczne przeprowadzanie procedur wymiany. Zacznijmy.

Dodajmy stałą DistributedBase Autoexchange Interval typu Number(5,0).

Dodajmy parametr Wykonaj rozproszoną wymianę baz danych do ustawień użytkownika. Do konfiguracji
„Zarządzanie handlem” odbywa się w następujący sposób:

* W planie typów cech „Ustawienia użytkownika” dodamy predefiniowane
charakterystyka Wykonuje wymianę rozproszonych baz danych typu Boolean.
* W postaci pozycji katalogu „Użytkownicy” konfigurujemy zmianę tego parametru (w ten sposób
można to zrobić w module formularza, analogicznie do pozostałych parametrów).

Dodaj procedurę do modułu rbDistributedBase:

Procedura rbPerformExchange(użytkownik) Eksportuj Jeśli npGetDefaultValue(użytkownik, "") Następnie rbGetExchangeMessages(); rbSendExchangeMessages(); koniecJeśli; Koniec procedury

do modułu aplikacji:

Procedura CheckConnectionAutoExchange() Eksportuj If npGetDefaultValue(chCurrentUser, " Wykonaj wymianę rozproszonych baz danych") I Constants.DistributedBaseAutoExchangeInterval.Get() > 0 Następnie ConnectWaitHandler(" Wykonaj automatyczną wymianę", Constants.DistributedBaseAutoExchangeInterval.Get()); W przeciwnym razie DisableWaitHandler(" Wykonaj automatyczną wymianę"); EndIf; EndProcedure Procedura ExecuteAutoExchange() Eksportuj rbExchange(glCurrentUser); DisableWaitHandler(" Wykonaj automatyczną wymianę"); Jeśli npGetDefaultValue(chCurrentUser, " Wykonaj wymianę rozproszonych baz danych") I Constants.DistributedBaseAutoExchangeInterval.Get() > 0 Następnie ConnectWaitHandler(" Wykonaj automatyczną wymianę", Constants.DistributedBaseAutoExchangeInterval.Get()); EndIf; EndProcedure Procedura DisableAutoExchange() Eksportuj DisableWaitHandler(" Wykonaj automatyczną wymianę"); Zakończprocedurę

Dodaj następujące wiersze do procedury WhenSystemStart() modułu aplikacji:

(po podłączeniu sprzętu komercyjnego)
...
SessionParameters.DistributedBaseExchange w toku = False; SprawdźPołączenieAutoExchange();

Dodajmy jeszcze kilka przycisków do naszego panelu, aby kontrolować proces: dodaj procedurę do jednego
CheckConnectAutoExchange(), z drugiej - DisableAutoExchange()

Uruchamiamy przedsięwzięcie, konfigurujemy właściwości użytkownika i interwał automatycznej wymiany i gotowe!

Teraz podczas wejścia do bazy danych pod tym najczęściej skonfigurowanym użytkownikiem zostanie uruchomiony moduł obsługi
oczekiwanie ExecuteAutoExchange(). Naturalnie należy także skonfigurować użytkownika w peryferyjnej bazie danych
na wymianę.

Jeszcze jedna mała, ale ważna uwaga:

W całym pięknie, które stworzyliśmy, jest jeden problem: zmiana konfiguracji. Na
Gdy baza peryferyjna odbierze wiadomość zawierającą zmiany konfiguracji, zostanie ona
zostaną zaakceptowane, ale wystąpi wyjątek. W tym przypadku zmieniona konfiguracja będzie
załadowany. Aby zaktualizować konfigurację bazy danych, musisz wyrzucić wszystkich użytkowników, przejdź do
konfiguratora i zaktualizować konfigurację bazy danych (warto wcześniej wgrać dane). DO
Niestety jest to zło konieczne. Możesz ułatwić sobie życie, pisząc krótki plik nietoperza
coś takiego:

1cv8.exe KONFIG /F<путь к ИБ>/N<Пользователь>/P<Пароль>/AktualizujIBCfg

I jeszcze jedna uwaga:

Niestety pliki xml nie są kompaktowe, ale na szczęście są doskonale skompresowane. Możliwe w
procedury wysyłania i odbierania wiadomości, dodawania pakowania i rozpakowywania plików. COLOR="#666666">Można to zrobić albo za pomocą zewnętrznego archiwizatora, albo za pomocą VK, na przykład Wheel.AddIn
(http://1c.proclub.ru/modules/mydownloads/personal.php?cid=81&lid=2714) .
Wraz z wydaniem 10. (wydaje się) edycji poprzednia propozycja stała się nieco przestarzała, ponieważ platforma
Nie zabrakło wbudowanych narzędzi do kompresji plików wykorzystujących algorytm ZIP. Te. możliwe jest teraz kompresowanie plików
bez użycia VK.

Rozważam organizację w pełni automatycznej wymiany danych na przykładzie wymiany 1C: Zarządzanie przedsiębiorstwem przemysłowym (PEM) ==> 1C: Księgowość (BP) 2.0 przy użyciu dowolnych reguł wymiany.

Istnieją 2 bazy danych: 1C:UPP i Enterprise Accounting 2.0. W UPP tworzonych jest szereg dokumentów: Sprzedaż towarów i usług, Odbiór towarów i usług, Faktury. Dział księgowości tworzy dokumenty dotyczące przepływów pieniężnych: rozliczenia przepływów pieniężnych, rozliczenia kasowe oraz polecenia zapłaty.

Struktura dokumentów w tych konfiguracjach jest nieco inna, dlatego też dowolne zasady wymiany zostały napisane przy użyciu produktu „Data Conversion 2.1”.

KROK 1. Konfiguracja węzłów wymiany.

Do wymiany danych będzie używany plan wymiany „Pełny”. Aby to zrobić, przejdź do Operacje BP ==> Plany wymiany ==> Pełne.

Plan wymiany ZAWSZE zawiera jeden predefiniowany węzeł wymiany. Są tu trzy punkty:

1) Nie możesz użyć predefiniowanego węzła w konfiguracji wymiany

2) Kod tego węzła nie jest domyślnie określony i należy go podać

3) W bazach danych, pomiędzy którymi organizowana jest wymiana danych, Kody predefiniowanych węzłów nie mogą się zgadzać, spowoduje to błąd.

W planie wymiany „Full” w BP wykonamy następujące czynności:

1) Podajemy kod i nazwę predefiniowanego węzła. Powiedzmy, że nazwa = „Predefiniowana”, Kod = 001.

2) Stwórzmy nowy węzeł wymiany, nazwijmy go „UPP” i nadajmy mu kod 003.

Podobnie otwórz plan wymiany „Full” 1C: UPP i wykonaj następujące kroki:

1) Podajemy kod i nazwę predefiniowanego węzła. Na przykład nazwa = „predefiniowana”, kod = „002”.

2) Stwórzmy nowy węzeł wymiany, nazwijmy go „BP” i nadajmy mu kod 003.

KODY niezdefiniowanych węzłów wymiany w bazie UPP i BP muszą się zgadzać.

KROK 2. Utwórz ustawienia automatycznej wymiany danych.

W bazie danych UPP w interfejsie „Full”. Menu „Serwis” ==> „Inne wymiany danych” ==> „Wszystkie ustawienia wymiany danych”.

W formularzu, który się otworzy, wybierz „Rozproszone bazy danych” i kliknij przycisk „Dodaj”.

W wyświetlonym oknie należy podać nazwę ustawienia. W polu „Węzeł” należy wybrać plan wymiany „Pełny” i wskazać wcześniej utworzony węzeł wymiany.

W otwartym oknie dialogowym należy wybrać dowolne reguły wymiany danych.

W polu „Typ wymiany” wybierz „Wymiana poprzez połączenie z bazą danych” i określ parametry połączenia: typ Infobase, wersję platformy, ścieżkę lub adres na serwerze, użytkownika i hasło.

Następnie należy przejść do zakładki „Wymiana według reguł” i kliknąć przycisk „Wczytaj ustawienia”. Reguły wymiany nie powinny zawierać reguły z metodą próbkowania „żądanie losowe”.. Spowoduje to błąd

Po pobraniu ustawień możesz je zapisać i spróbować pobrać dane. W tym celu należy zmienić dowolny z obiektów systemu informacyjnego wymienionych w ustawieniach przesyłania i kliknąć przycisk „Wymień” w panelu formularza.

KROK 3. Konfiguracja wymiany danych.

Aby skonfigurować automatyczną wymianę danych należy przejść do zakładki „Automatyczna wymiana” i kliknąć przycisk „Dodaj”. W wyświetlonym oknie możesz ustawić harmonogram wymiany (czas, częstotliwość) lub wymianę danych po wystąpieniu zdarzenia (np. zalogowanie się użytkownika do systemu)

Teraz możesz sprawdzić utworzone ustawienia

Zautomatyzowane systemy sterowania w większości przypadków składają się z odrębnych baz danych i często mają strukturę rozproszoną geograficznie. Jednocześnie prawidłowo zrealizowana wymiana danych jest warunkiem koniecznym efektywnego działania takich systemów.

Wstępna konfiguracja giełdy może wymagać szeregu działań, nie tylko w zakresie programowania, ale także doradztwa, nawet jeśli mamy do czynienia z jednorodnymi źródłami, jak ma to miejsce w przypadku produktów na platformie 1C:Enterprise. Dlaczego konfiguracja wymiany 1C (lub, jak to się nazywa, synchronizacja danych w 1C 8.3) może stać się najbardziej czasochłonnym i kosztownym zadaniem projektu integracyjnego, omówimy w tym artykule.

Wymiana danych w środowisku 1C pozwala na:

  • Wyeliminuj podwójne wprowadzanie dokumentów;
  • Automatyzuj powiązane procesy biznesowe;
  • Optymalizuj interakcję pomiędzy rozproszonymi działami;
  • Niezwłocznie aktualizuj dane dotyczące pracy specjalistów z różnych działów;
  • „Rozróżnij” różne rodzaje rachunkowości.*

*W przypadku, gdy dane jednego rodzaju rachunkowości znacznie różnią się od drugiego, konieczne jest zapewnienie poufności informacji i „ograniczenie” przepływów informacji. Na przykład wymiana danych między 1C UT a 1C Accounting nie wymaga przesyłania danych zarządczych do regulacyjnej bazy danych rachunkowości, tj. synchronizacja w 1C będzie tutaj niekompletna.

Jeśli wyobrazimy sobie standardowy proces realizacji pierwotnej wymiany danych, gdy przynajmniej jeden z jego obiektów jest produktem 1C, możemy wyróżnić następujące etapy:

  • Koordynacja składu giełdy;
  • Definicja transportu (protokoły wymiany);
  • Ustalanie zasad;
  • Planowanie.

Identyfikacja składu wymiany 1C

Przedmioty wymiany można podzielić na „źródło” i „odbiorca”. Jednocześnie mogą pełnić dwie role jednocześnie, co będzie nazywane wymianą dwukierunkową. Źródło i miejsce docelowe ustalane są logicznie w zależności od potrzeby lub funkcjonalności systemu.*

*Przykładowo przy integracji „WA: Financier” – rozwiązania do prowadzenia księgowości finansowej i zarządzania procesami skarbowymi, opracowanego na bazie „1C:Enterprise”, eksperci WiseAdvice rekomendują go jako system nadrzędny. Wynika to z dostępności narzędzi kontrolnych pozwalających zachować zgodność z zasadami polityki aplikacyjnej, a co za tym idzie, zapewnić skuteczność rozwiązania.

Następnie na podstawie otrzymanych i zarejestrowanych wymagań użytkowników tworzona jest lista danych do wymiany, ustalana jest jej objętość, wymagania dotyczące częstotliwości wymiany, a także wyznaczany jest proces pracy z błędami i obsługi sytuacji wyjątkowych (kolizji).

Na tym samym etapie, w zależności od floty istniejących systemów i struktury przedsiębiorstwa, ustalany jest format wymiany:

Rozproszona baza informacji

  • RIB oznacza wymianę pomiędzy identycznymi konfiguracjami baz danych 1C, z jasną strukturą sterowania „master-slave” dla każdej pary wymiany. Jako element platformy technologicznej, RIB oprócz danych może przesyłać zmiany konfiguracyjne oraz informacje administracyjne bazy danych (ale tylko z mastera na slave).

Uniwersalna wymiana danych w 1C

  • Mechanizm pozwalający skonfigurować wymianę baz danych 1C, zarówno z konfiguracjami na platformie 1C:Enterprise, jak i z systemami innych firm. Wymiana odbywa się poprzez przesłanie danych do uniwersalnego formatu xml zgodnie z „Planami Wymiany”.

Dane przedsiębiorstwa

  • Najnowsza wersja 1C, mająca na celu wdrożenie wymiany danych w formacie xml pomiędzy produktami stworzonymi na platformie 1C:Enterprise z dowolnymi systemami automatyki. Zastosowanie EnterpriseData upraszcza modyfikacje związane z wymianą. Wcześniej, gdy w systemie znajdowała się nowa konfiguracja, konieczne było wdrożenie mechanizmu importu i eksportu danych, zarówno dla niego, jak i dla istniejących systemów. Teraz systemy obsługujące EnterpriseData nie wymagają żadnych modyfikacji, posiadają tylko jeden punkt wejścia-wyjścia.

Definicja transportu (protokoły wymiany)

Dla systemu na platformie 1C:Enterprise 8 zapewniono szeroki zakres możliwości organizacji wymiany z dowolnymi zasobami informacyjnymi przy użyciu ogólnie przyjętych uniwersalnych standardów (xml, pliki tekstowe, Excel, połączenie ADO itp.). Dlatego przy ustalaniu transportu danych do wymiany należy polegać na możliwościach baz danych systemu zewnętrznego.

Synchronizacja katalogów

Podstawową zasadą skutecznej synchronizacji katalogów jest obecność jednego punktu wejścia. Jeśli jednak mówimy o pracy z katalogami, które historycznie były wypełniane według różnych zasad, konieczne jest jasne zdefiniowanie pól synchronizacji, aby sprowadzić wymianę do „wspólnego mianownika”.*

*Na tym etapie może zaistnieć konieczność przeprowadzenia prac zmierzających do normalizacji danych referencyjnych po stronie źródła danych. W zależności od stanu katalogów i ich objętości proces porównywania elementów, rozpoznawania, identyfikowania błędów i duplikatów, a także uzupełniania brakujących pól i przypisywania pól synchronizacyjnych może wymagać pracy całej grupy ekspertów, zarówno po stronie części integratora (właściciela techniki normalizacji danych podstawowych) oraz po stronie klienta.

Ustalanie zasad

Możliwość wyświetlania danych z systemów źródłowych w odbiornikach uzależniona jest od prawidłowo zdefiniowanych reguł wymiany. Reguły przedstawione w formacie xml regulują zgodność kluczowych szczegółów obiektów źródło-odbiornik. Rozwiązanie 1C:Data Conversion ma na celu automatyzację tworzenia reguł realizacji zarówno jednorazowych, jak i stałych wymian.

Gwarantuje brak utraty danych podczas wymiany Plan wymiany. Jest to integralna część każdej konfiguracji na platformie 1C:Enterprise, która w pełni opisuje procedurę wymiany 1C: skład danych (dokumenty ze szczegółami „identyfikującymi”) i węzły (bazy informacji o odbiorniku-nadajniku), a także aktywację RIB dla wybrane kierunki wymiany.

Każda zmiana danych wprowadzonych do Planu Giełdy jest rejestrowana i opatrzona znakiem „zmieniona”. Dopóki zmienione dane nie zostaną dopasowane do siebie w węzłach odbiorczo-nadawczych, znak nie zostanie zresetowany, a system będzie wysyłał komunikaty sterujące do obu węzłów. Po wczytaniu danych i potwierdzeniu ich pełnej zgodności w obu systemach następuje reset znaku.

Harmonogram wymiany w 1C

Aby zautomatyzować regularną wymianę, ustawiana jest częstotliwość przesyłania danych. Częstotliwość wymiany uzależniona jest od potrzeb i możliwości technicznych. Ponadto konfiguracje na platformie 1C:Enterprise pozwalają skonfigurować wymianę danych w przypadku wystąpienia zdarzenia.

Po rozważeniu standardowego procesu wdrażania giełdy zwróćmy uwagę na czynniki, które będą wymagały usprawnień na różnych etapach:

  • Niestandardowe, mocno zmodyfikowane konfiguracje baz danych;
  • Różne wersje platformy 1C:Enterprise;
  • Wersje konfiguracji, które nie były aktualizowane przez długi czas;
  • Przedmioty wymiany, które uległy wcześniej modyfikacjom;
  • Potrzeba niestandardowych zasad wymiany;
  • Zupełnie inny zestaw i układ szczegółów w istniejących podręcznikach.

Ponieważ nawet standardowe działania mające na celu wdrożenie pierwotnej wymiany danych wymagają wiedzy eksperckiej, zaleca się ich przeprowadzanie przy udziale specjalistów 1C. Dopiero po wykonaniu wszystkich opisanych powyżej kroków należy przystąpić do ustawiania centrali w konfiguracji. Przyjrzyjmy się integracji baz danych na przykładzie 1C:UPP i 1C:Retail (wymiana z 1C:UT jest konfigurowana według tego samego schematu). W standardowej synchronizacji zawarta jest także wymiana SCP - SCP, która jest typowa dla wielkoskalowych systemów automatyki w największych przedsiębiorstwach przemysłowych.

W podmenu „Serwis” wybierz „Wymiana danych z produktami na platformie...” (wybranie bezpośredniej wymiany z „Retail” często skutkuje błędami na poziomie obiektu COM). Zwróć uwagę na komunikat serwisowy „Ta funkcja jest niedostępna”.


Aby rozwiązać ten problem, musisz wybrać „Konfiguruj komunikację”


...i zaznacz pole. Następnie zignoruj ​​komunikat o błędzie.


W ustawieniach synchronizacji danych wybierz „Utwórz giełdę z „Retail”...



Przed skonfigurowaniem ustawień połączenia poprzez katalog lokalny lub sieciowy należy upewnić się, że na dysku jest miejsce na ten katalog. Choć z reguły nie zajmuje więcej niż 30-50 MB, w wyjątkowych przypadkach może wymagać nawet 600 MB. Możesz utworzyć wymagany katalog bezpośrednio z konfiguratora.



Łącząc się poprzez katalog sieciowy ignorujemy ofertę skonfigurowania połączenia poprzez adres FTP i e-mail klikając „Dalej”.


W ustawieniach ręcznie wpisujemy prefiksy - symbole baz danych (najczęściej BP, UPP, RO), ustalamy zasady i datę rozpoczęcia przesyłania danych. Przedrostek będzie wskazany w nazwie dokumentów w celu wskazania bazy, w której zostały utworzone. Jeżeli zasady przesyłania nie zostaną zmodyfikowane, dane zostaną domyślnie przesłane według wszystkich dostępnych parametrów.



Tworzymy plik ustawień wymiany dla „Retail”, aby nie powtarzać naszych działań. Jeśli chcesz wysłać dane natychmiast po skonfigurowaniu synchronizacji, zaznacz to pole.


Aby zautomatyzować proces wymiany, musisz ustawić harmonogram.


Menu „Handel detaliczny”.


Zaznacz pole i wybierz „Synchronizacja”.


Konfigurację „odwrotną” wykonujemy wybierając opcję Zarządzanie przedsiębiorstwem produkcyjnym.




Załaduj plik ustawień utworzony w UPP.


Zaznaczamy, system automatycznie pobiera adres.





Postępujemy identycznie jak w UPP.









Weryfikacyjne porównanie danych (Zaleca się ręczne porównywanie danych na etapie przygotowawczym, ponieważ praca ta może stać się najbardziej pracochłonna w procesie realizacji wymiany). Okno porównania otwiera się po dwukrotnym kliknięciu myszką.



W przypadku błędu synchronizacji „Szczegóły…” zostaną zastąpione przez „Nigdy…”.


„Szczegóły…” otwiera dziennik z aktualnymi informacjami o giełdzie.


Gotowy.