Menu
Jest wolny
rejestracja
Dom  /  Instalacja i konfiguracja/ Prace rutynowe i w tle (1Cv8). Zakończono proces zadania w tle Nieprawidłowo Zakończono proces zadania w tle 8.3

Prace rutynowe i w tle (1Cv8). Zakończono proces zadania w tle Nieprawidłowo Zakończono proces zadania w tle 8.3

W tym artykule opiszę moje, dotychczas niewielkie, doświadczenie w organizowaniu wymiany danych poprzez uniwersalny format EnterpriseData.

W moim przypadku wymiana jest skonfigurowana pomiędzy konfiguracjami „Trade Management 11.2” (dalej UT) i „Enterprise Accounting 3.0.43” (dalej BP). Wymiana odbywa się w jedną stronę, z UT na BP. Przed aktualizacją Trade Management 11.1 do wersji 11.2 wymiana danych została skonfigurowana przy użyciu konfiguracji Data Conversion 2.0. Jednak po przejściu na „11,2” w „Zarządzaniu handlem” pojawiły się błędy w pracy użytkowników. Przeprowadzono procedurę aktualizacji regulaminu giełdy, ale nie dało to żadnego rezultatu. Debuger wykazał, że problemem była komunikacja. Postanowiono usunąć ustawienie komunikacji w obu konfiguracjach i ustawić je ponownie.

Zarówno "Zarządzanie handlem", jak i "Księgowość przedsiębiorstw" działają dla nas w wersji klient-serwer. Zacząłem konfigurować synchronizację z UT. Wykonałem to w taki sposób, że dane zostały wyładowane z UT do pliku. Oznacza to synchronizację za pośrednictwem katalogu sieciowego. W zasilaczu centralę ustawiłem w taki sposób, aby żadne dane nie były rozładowywane z zasilacza.

Wystąpił błąd podczas wywoływania metody kontekstu (Check): Błąd sprawdzania danych XDTO:
Struktura obiektu „/ Konto bankowe / Bank kontrahenta” nie odpowiada typowi: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)
Sprawdzanie właściwości „BIC”:
Kształt: Element
nazwa: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1) BIC
typ:
Brak wymaganej właściwości
Przedmiot: Umowa z kontrahentem nr ...

Aby przeanalizować błąd, kliknąłem w ikonę „Skład danych do wysłania” i na liście kontrahentów zgłoszonych do wysyłki znalazłem umowę, w ramach której pojawił się błąd. Otworzył umowę, zapamiętał rachunek bankowy kontrahenta określony w umowie. Następnie podszedłem do kont bankowych zarejestrowanych do wysyłki. Okazało się, że wymaganego konta nie ma na liście zarejestrowanych. Ponownie zamieściłem problematyczne konto bankowe i umowę. Następnie ręcznie zarejestrowałem wymagane konto bankowe.

Próbowałem ponownie zsynchronizować dane z UT. Tym razem dane zostały pomyślnie wyładowane. W folderze sieciowym został wygenerowany plik XML zawierający dane do przesłania z UT do BP.

Kolejnym krokiem jest załadowanie danych z pliku do Działu Księgowości Przedsiębiorstw. W konfiguracji „Księgowość przedsiębiorstw” nacisnąłem przycisk „Synchronizuj”, otworzył się formularz przetwarzania z komunikatem „Analiza danych w toku”. Nieco później komunikat zmienił się na „Rozładowanie danych”. Jednocześnie wskaźnik i licznik wskazywały, że z zasilacza wyładowywano ponad 80 tys. obiektów. To mnie zdezorientowało, bo zaznaczyłem w ustawieniach, że nic nie powinno być rozładowywane z zasilacza. Przetwarzanie trwało długo i zakończyło się błędem:

Wydarzenie: Wymiana danych
(SharedModule.LongedOperations.Module (371)): Nieprawidłowe zakończenie pracy w tle
CallException (ErrorText);

Aby zlokalizować błąd próbowałem zmienić ustawienia synchronizacji i opcje pracy bazy BP. W efekcie, gdy przełączyłem bazę danych na wersję plikową, system działał właściwie: formularz do porównania dwóch otwartych baz danych. Po zmapowaniu obiektów wstępna synchronizacja przebiegła pomyślnie. Następnie przestawiłem bazę danych z powrotem na wersję klient-serwer.

W trakcie dalszego „docierania” synchronizacji konieczne było wprowadzenie pewnych zmian w regułach konwersji obiektów. Teraz nadszedł czas na użycie konfiguracji Data Conversion 3.0. Pomoc online dotycząca konfiguracji opisuje sposób pracy. Pomogły też artykuły na stronie ITS.

W rezultacie załadowałem następujące dane do "Konwersji danych 3.0":

  • Teksty wspólnego modułu „DataExchangeManagerViaUniversalFormat” z dwóch baz
  • Schemat obu baz
  • Opis formatu EnterpriseData (z dowolnej bazy danych)
  • Zasady konwersji

Po załadowaniu otworzyłem reguły konwersji danych, obiektów, właściwości w "Data Conversion 3.0". Wprowadziłem potrzebne zmiany. Następnie użyłem przycisku „Wyładuj moduł menedżera wymiany”. Tekst modułu został skopiowany do schowka. Pozostaje tylko wstawić go do konfiguracji.

Eksperymentując z ustawieniem reguł w „Data Conversion 3.0”, doszedłem do wniosku, że w przypadku, gdy wprowadzone zmiany są nieistotne, łatwiej jest ustawić reguły bezpośrednio w konfiguracjach UT i BP, w ogólnym module „DataExchange Manager Przez UniversalFormat". Jeżeli edycje są poważne, jak np. dodanie nowego obiektu do giełdy, to należy skorzystać z konfiguracji " Konwersja danych 3.0”.

Wykonałem zadanie dodania dokumentu „Zamówienie do dostawcy” do planu wymiany za pomocą „ Konwersja danych 3.0”. W standardowej wersji UT – BP tego dokumentu nie ma w planie wymiany.

Pamiętaj, że zasady rejestracji obiektów do wyładowania są nadal skonfigurowane w konfiguracji „Data Conversion 2.0”.

To pierwsze wrażenia z synchronizacji danych poprzez uniwersalny format EnterpriseData.

PS Jeśli masz pytania i własne spostrzeżenia dotyczące wymiany danych za pośrednictwem Uniwersalnego Formatu i Konfiguracji” Data Conversion 3.0”, napisz w komentarzach. Wymienimy się doświadczeniami.

  • Synchronizacja danych
  • Ogólny format danych przedsiębiorstwa
  • Konwersja danych 3.0
  • Konwersja danych 2.0
  • Zarządzanie handlem
  • Księgowość przedsiębiorstw

Pozwala nam to na wykonywanie dowolnych obliczeń w systemie bez zauważenia przez użytkownika, czyli w tle. Co więcej, mechanizm ten pozwala nam na zrównoleglenie procesu obliczeniowego. Możemy nawet zrównoleglać procedurę, która zostanie wykonana. Aby to zrobić, nasze zadanie w tle musi uruchomić jeszcze kilka zadań w tle. W tym przypadku procesy są zrównoleglone i jeśli mamy system wieloprocesorowy, wielordzeniowy, nasz algorytm będzie działał sprawnie. Po uruchomieniu kilku procesów możemy powiedzieć systemowi, że należy poczekać do zakończenia tych procesów, aby potem jakoś zredukować wynik.

Na przykład w typowych konfiguracjach podczas pracy użytkownika wykonywane są różnego rodzaju zadania usług w tle. Świadczyć o tym mogą wpisy w dzienniku rejestracji, który odnotowuje fakt takich działań. Co więcej, nie wpływa to w żaden sposób na pracę użytkownika, po prostu ich nie zauważa.

Idealnie, praca w tle jest zaimplementowana w wersji klient-serwer, w którym to przypadku całe obciążenie trafia do serwera. Jeśli chodzi o opcję pliku, praca w tle jest możliwa, ale ma pewne osobliwości.

To właśnie da system, jeśli nie weźmiesz pod uwagę tych funkcji, a uruchomisz zadanie w tle w wersji plikowej infobazy.


Praca w tle 1C ma pewne ograniczenia. Ponieważ działa po stronie serwera, nie ma interaktywnego doświadczenia użytkownika. Na przykład nie możesz w ogóle wyświetlić wiadomości ani żadnych informacji. Wszystkie te dane muszą być przechowywane w infobazie i dalej w jakiś sposób przetwarzane.
Kontaktując się z asystentem składni, możesz uzyskać bardziej szczegółowe informacje o pracach w tle 1C. Należy tutaj zauważyć, że jest to obiekt czysto programistyczny i nie jest w żaden sposób przechowywany w bazie danych. Oznacza to, że tworzymy instancję klasy, inicjujemy właściwości i uruchamiamy ją do wykonania.

Jakie mamy narzędzia do zarządzania pracą w tle? Ta funkcja jest obiektem metadanych "Menedżer Tła"... Ten obiekt ma metodę "Uruchomić", za pomocą tej metody uruchamiane jest zadanie w tle.

Posiada następujące parametry:
„Nazwa metody”- nazwa procedury lub funkcji do wykonania i musi to być procedura lub funkcja kontekstu serwera;

„Parametry”- tablica parametrów, której liczba elementów musi odpowiadać liczbie parametrów naszej procedury / funkcji określonej w parametrze „Nazwa metody”;

"Klucz"- pewien klucz unikatowości, czyli linia, za pomocą której system rozumie, czy konieczne jest uruchomienie zadania w tle, czy też takie zadanie zostało już uruchomione;

"Nazwa"- tutaj możesz podać dowolny opis naszej metody.

Zwracana wartość to obiekt „Zadanie w tle” zawierające bieżącą nazwę metody, bieżący klucz oraz kilka innych właściwości i metod. Jedną z tych metod jest metoda „Poczekaj na zakończenie”... Jego celem jest to, że możemy powiedzieć systemowi, aby nic nie robił, dopóki praca w tle nie zostanie zakończona.

Zadanie w tle 1C 8.2, 8.3 - Przykład użycia

Podajmy przykład pracy z zadaniami w tle 1C. Najpierw stworzymy prosty algorytm, który na krótko załaduje system 1C w taki sposób, że w tej chwili nie możemy nic zrobić.

Dla tego:

1. Stwórzmy ogólny moduł „Obsługa zadań w tle” który zostanie skompilowany po stronie serwera;


2. Opiszmy w nim procedurę eksportu. „Wykonaj obliczenia w tle (parametr)” który przyjmuje jeden parametr typu string;

Procedura ProduceBackgroundCalculation (Parametr) ExportStartTime = CurrentDate (); Chociaż CurrentDate () - TimeStart< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление(„Niektóre parametry”); Koniec procedury
Gotowe. Teraz, gdy rozpoczniesz przetwarzanie i naciśniesz przycisk, system zawiesza się na kilka sekund, podczas których nic nie można zrobić. To jest dokładnie to, co musieliśmy zrobić.

Teraz upewnimy się, że te obliczenia są wykonywane w tle, to znaczy, że wykonywane jest zadanie w tle 1C 8.2, 8.3, ale nam to nie przeszkadza.

Dla tego:

1. W trakcie przetwarzania, w przypadku naciśnięcia przycisku, wpisz następujący kod.

Procedura KnNazenie () Parametry = Nowa tablica; Parametry. Dodać( „Niektóre parametry”); Praca w tle. Wykonać ( „Obsługa zadań w tle. Produkcja i obliczanie w tle”, Parametry, Nowy UniqueIdentifier, "Test"); Koniec procedury

Tutaj jako pierwszy parametr podajemy nazwę procedury modułu ogólnego, a drugi - tablicę parametrów. Trzeci parametr to unikalny klucz, a czwarty to opis naszej procedury.

Problem nie jest nowy i jest od czasu do czasu omawiany na wszelkiego rodzaju forach 1C. Najprostszym i najpopularniejszym rozwiązaniem jest ponowne uruchomienie serwera 1C. Niestety ta opcja nie zawsze jest akceptowalna lub wysoce niepożądana. W takim przypadku są bardziej delikatne rozwiązania.

Tutaj jedna z tych metod w formie krótkiej instrukcji krok po kroku:

1. Korzystając z konsoli administracyjnej serwera 1C, szukamy problematycznego plikunowe zadanie na liście połączeń (na przykład według czasu rozpoczęcia jego pracy w porównaniu z czasem rozpoczęcia zaplanowanego zadania w konsoli zadań). Definiujemyprzepływ pracy zawierający zawieszone połączenie.

2. Otwórz właściwości tego procesu i oznacz go jako nieużywany (jeśli używany jest tylko jeden proces, musisz najpierw utworzyć nowy przepływ pracy, aby wszystkie aktywne połączenia były z nim ponownie połączone). Pamiętamy numer PID tego procesu.


3. Czekamy, aż wszystkie bieżące połączenia przejdą z rozłączonego procesu do jednego z używanych. Docelowo w naszym procesie powinny pozostać tylko połączenia problematyczne, które chcemy usunąć.

4. Na komputerze z serwerem 1C za pomocą menedżera zadań szukamy odpowiedniego procesu rphost.exe według identyfikatora PID wyłączonego procesu pracownika i usuwamy go.

5 ... Na wszelki wypadek możesz usunąć przepływ pracy 1C, który wyłączyliśmy w poście administratora. konsoli i w razie potrzeby utwórz nową.

6... Gotowe. Możesz wejść do konsoli zadań i sprawdzić wydajność zaplanowanej pracy.

Koncepcja programowania asynchronicznego

Koncepcja programowania asynchronicznego polega na tym, że wynik wykonania funkcji nie jest dostępny od razu, ale po pewnym czasie w postaci jakiegoś wywołania asynchronicznego (zrywającego zwykłą kolejność wykonywania).

Tych. Główną ideą programowania asynchronicznego jest uruchamianie oddzielnych wywołań metod i równoległe wykonywanie innych prac bez czekania na zakończenie wywołań.

Niektóre metody, których prawdopodobieństwo wyjątków jest zminimalizowane, nie wymagają podejścia asynchronicznego, ale inne wymagają go na samym początku rozwoju.

Jak widać z wykresów, współczynnik przydatnych interaktywnych działań użytkownika w modelu programowania synchronicznego jest nieobecny, ponieważ system blokuje interfejs użytkownika, podczas gdy w modelu asynchronicznym użytkownik nadal aktywnie pracuje w systemie.

Aplikacja działająca synchronicznie ma tylko jeden wątek. Dzięki asynchronicznemu modelowi programowania możesz uruchamiać wiele współbieżnych wątków i reagować na nowe akcje użytkownika podczas ich uruchamiania. Po zakończeniu n-wątku wyświetlasz wynik na ekranie.

Zadania w tle w „1C: Enterprise 8”

W 1C: Enterprise 8 zadania w tle są zaprojektowane do asynchronicznego wykonywania zastosowanych zadań. Mogą na przykład tworzyć zadania potomne w tle, aby zrównoleglać złożone obliczenia na różnych działających serwerach klastra w sposób klient-serwer.

Możliwe jest ograniczenie wykonywania zadań w tle, które mają te same metody, zgodnie z określonym kryterium aplikacji. Programowe tworzenie i zarządzanie zadaniami w tle jest możliwe z dowolnego połączenia użytkownika z bazą danych systemu. Zadanie w tle działa w imieniu użytkownika, który je utworzył.

Mechanizm zadań funkcjonuje zarówno w trybie klient-serwer, jak i w trybie plikowym, ale możliwości administrowania i wykonywania zadań w obu opcjach są nieco inne.

Opcja klient-serwer

W wersji klient-serwer planowaniem zadań zajmuje się harmonogram zadań, który fizycznie znajduje się w menedżerze klastra.

Harmonogram okresowo sprawdza, czy są jakieś żądania dotyczące zadań w tle. Jeśli istnieją zadania do wykonania, harmonogram identyfikuje najmniej obciążone procesy robocze klastra i sekwencyjnie przydziela każdemu z nich własne zadanie do wykonania. W ten sposób ten sam przepływ pracy może potencjalnie uruchamiać wiele zadań równolegle. Po odebraniu zadania przez przepływ pracy, przepływ pracy nawiązuje połączenie z bazą danych i wykonuje zadanie w ramach tego połączenia. Po zakończeniu zadania przepływ pracy powiadamia planistę o powodzeniu lub niepowodzeniu zadania.

Opcja pliku

Począwszy od wersji 8.3.3.641 platformy, programiści znacznie uprościli pracę z zadaniami w tle w wersji plikowej.

Wcześniej automatyczne wykonywanie zadań wymagało uruchomienia oddzielnej, dodatkowej sesji 1C: Enterprise używanej jako harmonogram zadań. A w tej sesji konieczne było okresowe wykonywanie metody języka wbudowanego Wykonaj przetwarzanie zadań (). Takie podejście było raczej niewygodne, niewygodne i poważnie ograniczało wykorzystanie zadań w tle i zaplanowanych w trybie pracy na plikach.

Teraz wszystko stało się znacznie łatwiejsze. W przypadku uruchomienia cienkiego lub grubego klienta lub gdy serwer sieciowy ma połączenia klienckie, w każdej z tych aplikacji automatycznie uruchamiany jest inny wątek z połączeniem z bazą danych. Te wątki są odpowiedzialne za wykonywanie zadań w tle i zaplanowanych.

Każda z wymienionych aplikacji ma swoje własne zadania w tle. Jeśli aplikacja zainicjowała kilka zadań w tle, są one wykonywane sekwencyjnie, w kolejności, w jakiej zostały odebrane.

Oczywista wada pracy w tle 1C: ponieważ są one wykonywane po stronie serwera, nie ma możliwości interaktywnej pracy z użytkownikiem (np. nie można wyświetlić komunikatu ani żadnej innej informacji; wszystkie te dane muszą być przechowywane w infobazie i dalej w jakiś sposób przetwarzane) .

Należy zauważyć, że zadania w tle są obiektami czysto programistycznymi i nie można ich zapisać w bazie danych. Oznacza to, że możemy tylko utworzyć instancję klasy, zainicjować jej właściwości i uruchomić ją do wykonania.

Przykład wykonania kodu asynchronicznego w 1C: Enterprise 8

„Pisanie programów, w których wynik wywołania funkcji pojawia się w nieznanej dacie, jest znacznie trudniejsze niż zwykle. Zagnieżdżone wywołania, obsługa błędów, kontrola nad tym, co się dzieje - wszystko staje się bardziej skomplikowane ”- powiedzą to tylko ci, którzy nie wiedzą, jak prawidłowo korzystać z możliwości platformy, ale nie my!

Zademonstrujmy całą prostotę i łaskę asynchronicznego wykonywania kodu w 1C: Enterprise 8!

Krok 1. Stwórzmy nowe zabezpieczenie informacji dla rozwoju konfiguracji

Krok 2. W konfiguracji dodaj wspólny moduł „AsynchronousHandlers”

Dlaczego dodaliśmy wspólny moduł? Tutaj wszystko jest proste: do wykonywania operacji asynchronicznych w zadaniach w tle „1C: Enterprise 8”, które mają własnego menedżera - „BackgroundJobs Manager”. Ten obiekt ma metodę Run, która służy do uruchamiania zadania w tle.

Przejdźmy do pomocnika składni.

Dlatego potrzebujemy wspólnego modułu.

Krok 3. W ogólnym module "AysynchronousProcessors" dodamy procedurę eksportu OurLongedOperation()

Procedura OurLongedOperation (Duration) Export // Symulacja pracy ciągłej (Duration sec.). DataRozpoczęcia Operacji = Data Bieżąca (); Chociaż CurrentDate () - Data rozpoczęcia operacji< Длительность Цикл КонецЦикла; КонецПроцедуры

Krok 4. Dodaj przetwarzanie "AsynchronousProgrammingConcept" do konfiguracji (możesz utworzyć przetwarzanie zewnętrzne)

Dodaj jeden rekwizyt do formularza:

Czas trwania (liczba)

i dwie drużyny

Wykonaj długą operację;

ExecuteLongOperationAsynchronicznie.

Krok 5. Zgodnie z pomocnikiem składni wypełnij moduł formularza

& Na kliencie Procedura ExecuteLongOperation (Command) ExecuteLongOperationAtServer (); EndProcedure i procedura OnServer ExecuteLongServerOperation () AsynchronousHandlers.OurLongOperation (czas trwania); EndProcedure & AtClient Procedura ExecuteLongOperationAsynchronously (polecenie) ExecuteLongOperationAsynchronouslyAtServer (); EndProcedure & AtServer Procedura ExecuteLongOperationAsynchronouslyOnServer () Parametry = New Array; Opcje.Dodaj (czas trwania); BackgroundJobs.Run („AsynchronousHandlers.OurLongOperation”, Parameters, New UniqueIdentifier, „Przykład koncepcji programowania asynchronicznego”); Koniec procedury

Krok 6. Uruchommy i sprawdźmy!

Wynik:

Jeśli klikniemy przycisk „Wykonaj długą operację”, interfejs użytkownika zostanie zablokowany na „Czas trwania” sekund;

Jeśli klikniemy przycisk „Wykonaj długą operację asynchronicznie”, interfejs użytkownika nie jest blokowany, ale kod programu jest wykonywany równolegle.

Możemy sprawdzić, czy kod programu jest wykonywany asynchronicznie, patrząc na dziennik.

Możemy debugować kod programu, który jest wykonywany „w tle”, jeśli ustawimy odpowiednią właściwość w parametrach debugowania.

Przykład asynchronicznego wykonania kodu w 1C: Enterprise 8 przy użyciu BSP

Przykład wdrożenia koncepcji programowania asynchronicznego w „1C: Enterprise 8” w BSP zostanie rozważony na przykładzie przetwarzania „Spraw bieżących”.

Logika jest następująca: podczas uruchamiania programu inicjowany jest obszar roboczy strony startowej, w którym można wyświetlić formularz przetwarzania „Aktualne sprawy”. Ten formularz jest wypełniony bieżącymi sprawami użytkownika, a jego wypełnienie zajmuje trochę czasu. Gdyby programiści nie mieli możliwości wykonania kodu asynchronicznie, to interfejs użytkownika byłby zablokowany na cały czas wypełniania formularza przetwarzania!

Przeanalizujmy kod programu formularza.

Zdarzenie postaci "OnCreateAtServer" wywołuje procedurę "RunBackgroundJob" - tego właśnie potrzebujemy.

Nie rozpraszając się niuansami, analizujemy tę procedurę

I tutaj widzimy, że używany jest menedżer zadań w tle i jego metoda Run. Pamiętaj, że programiści zachowują unikalny identyfikator zadania w tle.

W tym celu programiści stosują metodę Obsługa Oczekiwania Połącz (<ИмяПроцедуры>, <Интервал>, <Однократно>).



W procedurze wtykowej Connectable_VerifyPrzetwarzanie zadań () programiści nazywają funkcję Zadanie ukończone (identyfikator zadania)


Ta funkcja sprawdza wykonanie zadania w tle według identyfikatora.

Należy zauważyć, że BSP opracowało wspólne moduły wspierające działanie długotrwałych operacji serwerowych.

Tak więc koncepcja programowania asynchronicznego w 1C: Enterprise 8 nieznacznie zwiększa złożoność rozwiązywania problemów dla programisty, ale zauważalnie poprawia funkcjonalność programu z punktu widzenia użytkownika.

Prawdopodobnie żadna poważna konfiguracja w 1C 8.3 lub 8.2 nie może obejść się bez użycia zadań zaplanowanych i w tle. Są bardzo wygodne, ponieważ będą realizowane zgodnie z jasno określonym harmonogramem bez ingerencji użytkownika lub programisty.

Na przykład raz dziennie musisz wymieniać dane z innym programem. Korzystając z zadań zaplanowanych i wykonywanych w tle, 1C będzie mógł samodzielnie wykonywać te czynności, na przykład poza godzinami pracy. Ta metoda w żaden sposób nie wpłynie na wrażenia użytkownika i pomoże zaoszczędzić czas.

Najpierw zastanówmy się, co one oznaczają i jaka jest ich różnica:

  • Rutynowe zadanie umożliwia uruchamianie określonych działań według wstępnie skonfigurowanego harmonogramu.
  • Praca w tle Jest obiektem zawierającym akcje do wykonania.

Załóżmy, że nasza firma coś sprzedaje i posiada własną stronę internetową z cenami. Chcemy je usuwać raz dziennie, aby zachować ich aktualność.

Otwórz konfigurację i dodaj zaplanowane zadanie.

Ustawienie właściwości

Rozważmy najważniejsze parametry, które należy wypełnić w jego właściwościach.

  • W polu " Nazwa metody»Wybierana jest procedura określonego modułu ogólnego, który zostanie bezpośrednio wykonany. Wskaże wszystkie działania, aby przesłać ceny na naszą stronę. Zwróć uwagę, że wykonanie będzie miało miejsce na serwerze. Jest to logiczne, ponieważ rutynowe operacje są wykonywane bez interwencji użytkownika.
  • Zaplanowane zadanie można w razie potrzeby wyłączyć lub włączyć. Nie musisz za każdym razem zmieniać jego harmonogramu. Aby to zrobić, ustaw lub odznacz opcję „ Stosowanie».
  • Kolejną ważną rzeczą jest ustawienie, czy to zaplanowane zadanie będzie określony z góry, albo nie. Wstępnie zdefiniowane zaplanowane zadania rozpoczynają się automatycznie. Jeśli ten znak nie jest ustawiony, musisz uruchomić je programowo lub użyć przetwarzania „Konsoli zadań” z ITS.
  • Możesz również określić liczba powtórzeń i odstęp między nimi w przypadku nieprawidłowego zakończenia. Nieprawidłowe zakończenie odnosi się do sytuacji, w których zadania nie zadziałały z powodu błędu.

Konfiguracja harmonogramu

Ostatnim krokiem jest ustawienie harmonogramu przesyłania do witryny za pomocą odpowiedniego hiperłącza w palecie właściwości.

Zobaczysz typowe ustawienie harmonogramu w 1C 8.3. Tu nie ma nic trudnego. W ramach tego przykładu skonfigurowaliśmy uruchamianie naszego rozładunku cen na stronie codziennie od piątej do siódmej rano. W przypadku, gdy zaplanowane zadanie nie ma czasu na wykonanie przed godziną 7:00, zostanie ono wykonane następnego dnia.

Blokowanie zaplanowanych zadań

Uruchom standardowe narzędzie „Administracja serwerami 1C Enterprise” i otwórz właściwości bazy informacyjnej, w której utworzono zaplanowane zadanie (dla wersji 1C klient-serwer).

W oknie, które się otworzy (po wpisaniu loginu i hasła dostępu do IP), sprawdź, czy flaga na pozycji „Blokowanie zaplanowanych zadań jest włączone” nie jest ustawiona. Jeśli masz do czynienia z sytuacją, w której zadanie nie działa, najpierw sprawdź to ustawienie.

W ten sam sposób możesz całkowicie wyłączyć zaplanowane zadania w 1C 8.3. Aby wyłączyć określone zadania w tle, możesz użyć przetwarzania „Konsola zadań w tle” wbudowanego w najnowsze wersje.

Zadania w tle i zaplanowane w trybie plików

W tym trybie konfigurowanie i uruchamianie tych zadań jest znacznie trudniejsze do zorganizowania. Najczęściej tworzone jest dodatkowe konto, którego sesja będzie zawsze otwarta.

W takim przypadku zaplanowane zadania są aktywowane przy użyciu metody „RunJobProcessing()”.

Możesz również użyć następującej konstrukcji:

Jako nazwę procedury należy podać nazwę procedury klienta do wykonania. Interwał pokazuje, ile sekund zajmie wykonanie. Parametr „Raz” jest opcjonalny. Odzwierciedla to, czy ta procedura zostanie wykonana raz, czy kilka razy.

Śledzenie błędów w pracach w tle

Możesz zobaczyć postęp zadań w tle, a także obecność ewentualnych błędów w dzienniku. W filtrze ustaw filtr na aplikację "Zlecenie w tle" i jeśli to konieczne, wybierz ważność zainteresowania, na przykład tylko "Błędy".

Dziennik pokaże wszystkie wpisy, które pasują do Twojego wyboru, z komentarzem wskazującym przyczynę błędu.