Zadania w tle: funkcje, możliwości, ustawienia. Programowe uruchamianie zadania w tle 1c zarządzane formularze konfigurują zadanie w tle pliku

Prawdopodobnie każdy programista 1C 8.3 prędzej czy później musiał ustawić wykonanie określonych zadań zgodnie z harmonogramem. Poniżej podam szczegółowy opis tych mechanizmów, mam nadzieję, że tak będzie przydatna informacja dla początkujących programistów 1C. Jest to bardzo wygodne, ponieważ nie wymaga działania człowieka, rutynowe zadanie jest konfigurowane raz i działa zgodnie z Twoim harmonogramem.

Szczegółowe instrukcje znajdziesz na poniższym przykładzie.

Jakie są zadania rutynowe i w tle w 1C

  • Zaplanowane zadania to specjalny mechanizm 1C Enterprise 8.3 przeznaczony do wykonywania określonej akcji zgodnie z zadanym harmonogramem.
  • Praca w tle- obiekty generowane przez rutynowe zadanie, które bezpośrednio wykonują zamierzoną akcję bez udziału użytkownika lub programisty 1C 8.2.

Mechanizm zadań zaplanowanych i w tle działa w trybie klient-serwer (SQL), dzięki funkcjonalności DBMS. Jeśli dysponujesz bazą danych plików to zadanie również można skonfigurować, ale według nieco innej zasady.

Konfigurowanie zadań w tle w trybie klient-serwer 1C

Najpierw utwórzmy nowy obiekt metadanych – rutynowe zadanie. Nazwę swoje zadanie „Ładowanie kursów walut”. Przyjrzyjmy się palecie właściwości tego obiektu konfiguracyjnego:

Uzyskaj 267 lekcji wideo na 1C za darmo:

  • Nazwa metody— ścieżka do procedury, która będzie wykonywana w zadaniu w tle według zadanego harmonogramu. Procedura musi znajdować się we wspólnym module. Zaleca się, aby nie używać standardowych, ale tworzyć własne. Nie zapominaj, że zadania w tle działają na serwerze!
  • Stosowanie— oznaka wykonywania rutynowego zadania.
  • Określony z góry— wskazuje, czy rutynowe zadanie jest z góry określone. Jeśli chcesz, aby rutynowe zadanie zadziałało natychmiast po umieszczeniu go w bazie danych, określ tę flagę. W przeciwnym razie konieczne będzie użycie przetwarzania w konsoli zadań lub spowodowanie programowego uruchomienia zadania.
  • Liczba ponownych prób w przypadku nienormalnego zakończenia zadania— ile razy zadanie w tle zostało ponownie uruchomione, jeśli zostało wykonane z błędem.
  • Interwał ponawiania prób w przypadku nieprawidłowego zakończenia zadania— jak często zadanie w tle będzie uruchamiane ponownie, jeśli zostało zakończone z błędem.

I najbardziej ciekawe ustawienieHarmonogram:

Tutaj konfigurujesz częstotliwość uruchamiania procedury określoną w polu „Nazwa metody”. Powiedzmy, że skonfigurowałem

Uwaga! Nie zapomnij wyłączyć blokowania wykonywania zadań rutynowych i zadań w tle na poziomie DBMS!

Można to zrobić w narzędziu administracyjnym wersji klient-serwer lub podczas tworzenia nowej bazy danych:

Konfigurowanie rutynowych zadań w trybie pliku 1C

W trybie plików konfigurowanie takich zadań jest nieco trudniejsze. Aby wykonać takie zadanie, należy uruchomić osobną sesję programu 1C. Często rozwiązuje się to poprzez utworzenie użytkownika „technicznego”, którego sesja jest zawsze uruchomiona.

W trybie plikowym inicjowane jest rutynowe zadanie po uruchomieniu metody „RunTaskProcessing()”.

Dla konkretnego użytkownika możesz skonfigurować tę metodę tak, aby działała przy użyciu innej metody −

ConnectWaitHandler( <ИмяПроцедуры>, <Интервал>, <Однократно>).

  • Nazwa procedury— nazwa procedury podłączonej jako procedura obsługi oczekiwania. Nazwa wyeksportowanej procedury zarządzanego modułu aplikacji (module regularna aplikacja) lub globalny wspólny moduł. Procedura musi znajdować się na kliencie.
  • Interwał— okres pomiędzy wykonaniami operacji w sekundach.
  • Jeden raz- jak wykonać zadanie, raz czy nie.

ConnectWaitHandler, 3600 ) ;

Dwuminutowy film pokazujący, jak skonfigurować rutynowe zadanie w konfiguratorze 1C:

1C Enterprise ma w swoich konfiguracjach zadania rutynowe i w tle. Zadania te są wykonywane według harmonogramu, z uwzględnieniem harmonogramu dla każdego zadania. Część zadań jest początkowo wykonywana na timerze po określonej liczbie sekund, co może negatywnie wpłynąć na wydajność i wyraźnie zakłócać pracę w bazie informacji.

Aby edytować zadania rutynowe i w tle, w zakładce Administracja wybierz po lewej stronie „zadania rutynowe i w tle”. Pojawi się lista istniejących zadań, ich status, harmonogram i inne informacje.

Klikając kilka razy na dowolne zadanie, otworzy się okno z właściwościami tego zadania. Tutaj możesz zmienić wiele ustawień według własnego gustu, w tym harmonogram tego zadania. Aby wyłączyć zadanie, pole wyboru „Włączone” musi być odznaczone. Jeśli jednak zadanie musi być uruchamiane zgodnie z harmonogramem, niezwykle ważne jest, aby do wszystkich zadań w tle używać osobnego użytkownika z pełnymi uprawnieniami.

Parametry planowania zadań są bardzo elastyczne, jednak nadal wskazane jest ustawienie wszystkich zadań w taki sposób, aby jednocześnie wykonywane było tylko 1 zadanie i najlepiej w godzinach wolnych od pracy. Jedynym wyjątkiem może być synchronizacja kilku powiązanych baz danych informacyjnych, na przykład księgowość przedsiębiorstwa + zarządzanie płacami i personelem.

Ładowanie klasyfikatora banku - niedziela, godz. 4:30
Ładowanie kursów walut - codziennie; 7:00
Ekstrakcja tekstu - codziennie; 6:00.
Wymiana wiadomości pomiędzy kontami zarządzania dokumentami - codziennie; co 10800 sek.
Jednostki są aktualizowane codziennie; od 5:00:00 raz dziennie
Aktualizuj zadania księgowego – codziennie; od 6:30:00 raz dziennie
Aktualizacja indeksu PPD (wyszukiwanie pełnotekstowe) – codziennie; co 10800 sek.
Przebudowa jednostek - codziennie, według dnia tygodnia [sobota]; od 3:00:00 raz dziennie
Przeliczenie aktualnych wartości względnych dat zakazu zmian - codziennie; od 7:00:00 raz dziennie
Łączenie indeksu PPD (wyszukiwanie pełnotekstowe) - codziennie; od 4:00:00 raz dziennie
Usuwanie nieistotnych informacji o synchronizacji - codziennie; od 3:30:00 raz dziennie
Ustawianie okresu dla wyliczanych sum - codziennie, 5 dnia miesiąca; od 1:00:00 raz dziennie

Koncepcja programowania asynchronicznego

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

Te. Główną ideą programowania asynchronicznego jest wydawanie indywidualnych wywołań metod i równoległe wykonywanie innych prac, bez czekania na zakończenie wywołań.

Niektóre metody minimalizujące prawdopodobieństwo wyjątków nie wymagają podejścia asynchronicznego, ale inne wymagają go na samym początku programowania.

Jak widać z wykresów, w przypadku modelu programowania synchronicznego nie ma współczynnika przydatnych interaktywnych działań użytkownika, ponieważ system blokuje interfejs użytkownika, natomiast w przypadku modelu asynchronicznego użytkownik nadal aktywnie pracuje w systemie.

Podczas działania synchronicznego aplikacja ma tylko jeden wątek. Dzięki modelowi programowania asynchronicznego można uruchamiać wiele wątków równolegle i reagować na nowe działania użytkownika w miarę ich uruchamiania. Po wykonaniu n-wątku wynik zostanie wyświetlony na ekranie.

Zadania w tle w 1C:Enterprise 8

W 1C:Enterprise 8 zadania w tle są zaprojektowane do asynchronicznego wykonywania zadań aplikacji. Mogą na przykład generować podrzędne zadania w tle, aby zrównoleglić złożone obliczenia na różnych serwerach roboczych w klastrze w trybie klient-serwer.

Możliwe jest ograniczenie wykonywania zadań w tle, które mają te same metody, w oparciu o określone kryterium aplikacji. Programowe tworzenie zadań w tle i zarządzanie nimi jest możliwe z dowolnego połączenia użytkownika baza informacyjna systemy. Zadanie w tle jest uruchamiane w imieniu użytkownika, który je utworzył.

Mechanizm zadań działa zarówno w trybie klient-serwer, jak i plikowym, jednak możliwości administrowania i wykonywania zadań w obu wersjach są nieco inne.

Opcja klient-serwer

W wersji klient-serwer planowanie zadań odbywa się za pomocą harmonogramu zadań, który fizycznie znajduje się w menedżerze klastra.

Program planujący okresowo sprawdza, czy odebrane zostały żądania uruchomienia zadań w tle. Jeżeli istnieją zadania wymagające wykonania, planista określa najmniej obciążone procesy robocze w klastrze i kolejno przydziela każdemu z nich zadanie do wykonania. Zatem ten sam proces roboczy może potencjalnie wykonywać wiele zadań równolegle. Po odebraniu zadania przez proces roboczy, proces roboczy nawiązuje połączenie z bazą danych i wykonuje zadanie w ramach tego połączenia. Po zakończeniu zadania proces roboczy powiadamia program planujący, czy zadanie zostało zakończone pomyślnie, czy nie.

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, aby automatycznie wykonywać zadania, konieczne było uruchomienie osobnej, dodatkowej sesji 1C:Enterprise, służącej jako harmonogram zadań. I w tej sesji konieczne było okresowe wykonywanie wbudowanej metody językowej Wykonaj przetwarzanie zadania (). Takie podejście było dość kłopotliwe, niewygodne i znacznie ograniczało wykorzystanie zadań tła i rutynowych w wersji plikowej pracy.

Teraz wszystko stało się znacznie łatwiejsze. Jeśli zostanie uruchomiony cienki lub gruby klient, a także jeśli serwer WWW ma połączenia klienckie, to w każdej z tych aplikacji automatycznie uruchamiany jest inny wątek z połączeniem z bazą danych. Wątki te są zaangażowane w wykonywanie zadań w tle i rutynowych.

Każda z wymienionych aplikacji wykonuje własne zadania w tle. Jeśli aplikacja zainicjowała kilka zadań w tle, są one wykonywane sekwencyjnie, w kolejności ich otrzymania.

Oczywista wada zadań w tle 1C: ponieważ są wykonywane po stronie serwera, nie ma możliwości interaktywnej pracy z użytkownikiem (np. nie jest możliwe wyświetlenie komunikatu lub innej informacji; wszystkie te dane muszą być przechowywane w bazie informacji i dalej przetwarzane w w jakiś sposób).

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

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

„Pisanie programów, w których wynik wywołania funkcji jest nieznany, jest znacznie trudniejsze niż w przypadku zwykłych programów. 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 wykorzystać możliwości platformy, ale nie my!

Zademonstrujmy prostotę i elegancję asynchronicznego wykonywania kodu w 1C:Enterprise 8!

Krok 1. Stwórzmy nowy system bezpieczeństwa informacji dla rozwoju konfiguracji

Krok 2. W konfiguracji dodamy moduł ogólny „Asynchronous Handlers”

Dlaczego dodaliśmy moduł współdzielony? Tutaj wszystko jest proste: do wykonywania operacji asynchronicznych w 1C:Enterprise 8 wykorzystywane są zadania w tle, które mają własnego menedżera - „BackgroundTask Manager”. Obiekt ten posiada metodę „Uruchom”, za pomocą której uruchamiane jest zadanie w tle.

Przejdźmy do asystenta składni.

Będziemy więc potrzebować wspólnego modułu.

Krok 3. W module ogólnym „Asyncronous Handlers” dodamy procedurę eksportu OurLongOperation()

Procedura OurLongOperation(Duration) Eksport // Symulacja działania długoterminowego (Duration sec.). OperationStartDate = CurrentDate(); While CurrentDate() — data rozpoczęcia operacji< Длительность Цикл КонецЦикла; КонецПроцедуры

Krok 4. Dodaj do konfiguracji przetwarzanie „Asynchronous Programming Concept” (możesz stworzyć przetwarzanie zewnętrzne)

Dodaj jeden atrybut do formularza:

Czas trwania (liczba)

i dwa zespoły

Wykonaj długą operację;

Wykonaj asynchronicznie długą operację.

Krok 5. Według asystenta składni wypełnij moduł formularza

&Na kliencie Procedura Wykonaj długotrwałą operację (polecenie) Wykonaj długotrwałą operację na serwerze (); EndProcedure &OnServer Procedura ExecuteLongOperationOnServer() AsynchronousHandlers. OurLongOperation(Duration); Koniec procedury &Na kliencie Procedura Wykonaj asynchronicznie długotrwałą operację (polecenie) Wykonaj asynchronicznie długotrwałą operację na serwerze (); Koniec procedury &Na serwerze Procedura Wykonaj długotrwałą operację asynchronicznie na serwerze() Parametry = Nowa tablica; Parametry.Add(Czas trwania); BackgroundTasks.Execute("AsynchronousHandlers. OurLongOperation", Parametry, Nowy unikalny identyfikator, "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 na przycisk „Wykonuj długotrwałą operację asynchronicznie”, interfejs użytkownika nie zostanie zablokowany, a kod programu będzie wykonywany równolegle.

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

Możemy debugować kod programu działającego 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

Rozważmy przykład wdrożenia koncepcji programowania asynchronicznego w 1C:Enterprise 8 w BSP na przykładzie przetwarzania „Sprawy bieżące”.

Logika jest następująca: po uruchomieniu programu inicjowany jest obszar roboczy strona główna, gdzie możesz wyświetlić formularz obsługi „Sprawy Bieżące”. Formularz ten wypełniany jest bieżącymi sprawami użytkownika, a jego wypełnienie zajmuje trochę czasu. Gdyby programiści nie mieli możliwości asynchronicznego wykonywania kodu, interfejs użytkownika zostałby zablokowany podczas wypełniania formularza przetwarzania!

Przeanalizujmy kod programu formularza.

Zdarzenie formularza „When CreatedOnServer” wywołuje procedurę „RunBackgroundTask” - tego nam potrzeba.

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

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

Aby to zrobić, programiści używają tej metody ConnectWaitHandler(<ИмяПроцедуры>, <Интервал>, <Однократно>).



W zahaczonej procedurze Connectable_CheckTaskComplete() programiści wywołują tę funkcję Zadanie ukończone (ID zadania)


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

Należy zauważyć, że BSP opracowało ogólne moduły do ​​obsługi długoterminowej pracy serwerów.

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

Niektóre zadania związane z zarządzaniem dokumentami i księgowością mogą wymagać okresowego wykonywania. Na przykład dwudziestego. Lub codziennie.

Zazwyczaj firma stara się stworzyć zasady wykonywania takich zadań – kto, kiedy i jak ma je wykonać, kto powinien je kontrolować.

Zadania takie nazywane są regulowanymi, czyli wykonywanymi zgodnie z przepisami.

W IT monitorowanie często odbywa się w sposób regulowany.

To znajome Administrator systemu- Jest specjalne programy, które okresowo sprawdzają wydajność serwerów i infrastruktury sieciowej oraz raportują SMS-y lub e-mailem administrator.

Podobne rzeczy istnieją dla webmasterów - aby sprawdzić dostępność witryny w ciągu dnia.

W 1C zadania monitorowania i wszelkie inne zadania okresowe, które powinny być wykonywane automatycznie zgodnie z harmonogramem, są wykonywane za pomocą mechanizmu zaplanowanych zadań 1C.

Porozmawiajmy o nich dzisiaj.

Zaplanowane zadania 1C

Zaplanowane zadania 1C to te, które pozwalają wykonywać je tak, jak robią, ale zgodnie z harmonogramem.

Samo zadanie rutynowe 1C w konfiguratorze pozwala określić ustawienia i ustawić harmonogram. Nawiasem mówiąc, harmonogram można później zmieniać dynamicznie w trybie 1C Enterprise.

Zadania w tle można dowolnie tworzyć z tekstu programu w języku 1C, bez zaplanowanego zadania 1C - dla Równoległe obliczenia na serwerze.

Wykonywanie rutynowych zadań 1C można tymczasowo wyłączyć - w.

Dodanie rutynowego zadania 1C

Zadania rutynowe 1C znajdują się w konfiguracji w gałęzi Zadania ogólne/rutynowe 1C. Dodajmy nowe zadanie regulacyjne 1C i podaj jego nazwę.

We właściwości zadania rutynowego 1C wskazana jest nazwa metody, tak jak w. Funkcja będzie zlokalizowana we wspólnym module z zaznaczonym we właściwościach checkboxem Serwer, czyli moduł trzeba wcześniej dodać.

Właściwość zaplanowanego zadania 1C - Nazwa zadania - określa nazwę, pod którą zadanie pojawi się w narzędziach do zarządzania zadaniami.

Właściwość zadania rutynowego 1C – Klucz – umożliwia grupowanie kilku różnych rutynowych zadań 1C. Jednocześnie można uruchomić tylko jedno zadanie z tą samą wartością klucza. Sama wartość może być dowolna. Pusta wartość nie jest brana pod uwagę podczas kontroli (tzn. jest uważana za pustą).

Właściwość rutynowego zadania 1C - Predefiniowane - określa, że ​​po uruchomieniu 1C Enterprise takie zadanie zostanie utworzone w jednym egzemplarzu z harmonogramem określonym w konfiguratorze. Zadania niepredefiniowane pojawiają się programowo w momencie ustalania harmonogramu.

W typowe konfiguracje na przykład wersja księgowa 2.0, takie rutynowe zadania 1C, jak aktualizacja konfiguracji i ponowne obliczanie sum, są predefiniowane, ale takie jak wymiana danych lub przesunięcia odroczone nie są predefiniowane.

Użycie – włącza zadanie (tzn. zostanie wykonane tylko wtedy, gdy zaznaczone jest pole wyboru Użycie).

Ponów próbę w przypadku nieprawidłowego zakończenia — jak można się domyślić, oznacza ponowne uruchomienie zadania, jeśli nie udało się go pomyślnie zakończyć za pierwszym razem — możesz określić, ile razy ma nastąpić ponowne uruchomienie i po jakim czasie od nieprawidłowego zakończenia.

Rutynowe zarządzanie i monitorowanie zadań 1C

Do zarządzania rutynowymi zadaniami 1C dostępna jest specjalna konsola zadań o standardowym przetwarzaniu. Można go również znaleźć na.

Przetwarzanie to należy do tak zwanego uniwersalnego zewnętrznego standardu przetwarzania 1C, które często nie jest uwzględnione w konfiguracji, ale jest dystrybuowane osobno, na przykład na dyskach ITS.

Korzystając z przetwarzania w konsoli zadań, możesz:

  • Włącz/wyłącz wykonywanie rutynowego zadania 1C
  • Przypisz / zmień harmonogram zaplanowanego zadania 1C (i inne parametry)
  • Określ użytkownika 1C, w imieniu którego zostanie wykonane rutynowe zadanie 1C
  • Zobacz, jakie zadania zostały wykonane, kiedy i z jakim skutkiem, błędy w wykonywaniu zadań 1C
  • Wykonać zadanie.

Kopie baz danych i rutynowe zadania 1C

Jeśli korzystasz z serwera 1C, ma miejsce następująca sytuacja:

  • Na własne potrzeby (np. do programowania) tworzona jest kopia działającej bazy danych
  • Praca, testowanie itp. w kopii bazy danych
  • Zapominasz wyłączyć rutynowe zadania 1C w takiej testowej bazie danych.

Chociaż rutynowe zadania 1C wykonują zadania związane wyłącznie z ich bazą informacyjną, to nic w tym nie ma.

Jednak rutynowe zadania 1C często mogą zapisywać dowolne pliki, dane w innych bazach danych, przeprowadzać wymiany i wysyłać e-maile.

W takim przypadku możesz uzyskać interesującą mieszankę wyniku wykonania rutynowych zadań 1C w działającej bazie danych i kopiach.

Rutynowe zadania 1C dla kopii działającej bazy danych muszą być wyłączone w .

Wypełnienie i niespełnienie zadań regulacyjnych 1C

Tworząc rutynowe zadania 1C, musisz pamiętać:

  • Zadania wykonuje się samodzielnie – trzeba je monitorować
  • Zadania realizowane są w module na serwerze
  • Zadania są wykonywane w ramach innego użytkownika systemu Windows, z różnymi uprawnieniami.

Najpierw musisz sprawdzić, czy zadanie jest wykonywane i można je wykonać jako rutynowe zadanie 1C.

Po drugie, moduł serwera sprawia, że ​​wiele rzeczy, które są dostępne na kliencie, jest niedostępnych. Czasem np. nie wszystkie dokumenty da się zamieścić tylko na serwerze, gdyż ich algorytm może przewidywać, że księgowanie będzie uruchamiane ręcznie przez użytkownika i można będzie skorzystać z funkcji pozaserwerowych, np.
Ostrzeżenie("Witam!")

Po trzecie, jeśli zadanie dotyczy czegoś spoza bazy danych 1C, wówczas ważne stają się prawa Użytkownik Windowsa, w ramach którego realizowane jest zadanie.

Trzeci punkt jest szczególnie ważny podczas opracowywania. Jeżeli moduł nie może zostać wykonany na serwerze, zadanie w ogóle nie zostanie wykonane. Aby to sprawdzić, musisz uruchomić zadanie przynajmniej raz i zobaczyć wynik „Zadanie ukończone” w przetwarzaniu Konsoli zadań.

Często przy prowadzeniu dokumentacji istnieje taka potrzeba okresowe wykonanie określone działania bez interwencji użytkownika. Zadania rutynowe i w tle w 1C to mechanizmy przewidziane w tym celu w ósmej wersji programu i umożliwiają:

  • Ustal terminowość dostarczania dokumentów;
  • Oblicz salda i sumy;
  • Zapewnij częstotliwość wysyłek;
  • Sprawdź i usuń niepotrzebne dane.

Zadanie w tle i zaplanowane - co to jest i gdzie jest konfigurowane?

Rutynowe zadanie to mechanizm wbudowany w 1C, który pozwala skonfigurować i zgodnie z ustalonym harmonogramem i częstotliwością wykonać określoną sekwencję działań.

Zadanie w tle to akcja generowana przez rutynową operację i nie wymaga bezpośredniego udziału użytkownika.

W trybie konfiguratora tworzone jest rutynowe zadanie:

  • W oknie drzewa konfiguracyjnego znajdujemy odpowiednią gałąź (rys. 1);
  • Kliknij przycisk dodawania;
  • W oknie, które zostanie otwarte należy podać nazwę pozwalającą na identyfikację obiektu w konfiguracji;

Ryc.2

  • Naprzeciwko napisu „Harmonogram” (ryc. 2) znajduje się napis „Otwórz”, po kliknięciu którego otwiera się okno umożliwiające ustawienie czasu i częstotliwości wykonywania procedury obsługi (ryc. 3);

Ryc.3

  • Konieczne jest także wypełnienie pola „Nazwa metody” (tu zostanie wpisana nazwa procedury wywoływanej z modułu ogólnego i opisującej algorytm zachowania programu);
  • Pola „Nazwa” i „Klucz” umożliwiają grupowanie obiektów;
  • Zaznaczone pole wyboru „Użyj” wskazuje aktywność zaplanowanej operacji;
  • Należy ustawić opcję „Predefiniowany”, jeśli handler ma zostać uruchomiony natychmiast po dodaniu go do bazy, w przeciwnym wypadku uruchomienie może nastąpić z poziomu odpowiedniego przetwarzania (więcej o tym poniżej);
  • Parametry „Liczba ponownych prób” i „Interwał ponownych prób” opisują zachowanie programu w przypadku wystąpienia wyjątku podczas wykonywania zadania w tle.

Tak więc, korzystając z mechanizmu rutynowych operacji, możesz ustawić harmonogram i główne działania zadań w tle. Przyjrzyjmy się teraz ich cechom.

Funkcje zadań w tle

Główną cechą tego mechanizmu jest to, że proces w tle działa asynchronicznie.

Co to znaczy? Faktem jest, że przy synchronicznym modelu pracy, jeśli zostanie wykonany jakikolwiek algorytm, następuje blokowanie interfejs użytkownika. W naszym przypadku użytkownik może kontynuować wprowadzanie i edycję danych nawet w trakcie trwania procedury. Model programowania asynchronicznego polega na separacji wątków obliczeniowych.

W ten sposób zadania w tle w 1C mogą uruchamiać własne procesy, dystrybuując obliczenia na różnych serwerach znajdujących się w tym samym klastrze.

Funkcje pracy w trybie klient-serwer

  • Planowanie i kontrola wykonania realizowana jest przez planistę z klastra serwerów;
  • Jeśli pojawi się żądanie wykonania, program planujący szuka procesów roboczych klastra przy minimalnym obciążeniu i przydziela im zadania do wykonania;
  • Każdy proces może wykonywać wiele równoległych obliczeń;
  • Po otrzymaniu zadania proces łączy się z bazą danych i wykonuje w niej algorytm;
  • Proces raportuje wyniki planiście.

Zadania w tle w trybie pliku

Przed wersją platformy 8.3.3.641 praca z zadaniami w tle w wersji plikowej stwarzała pewne trudności:

  1. Konieczne było uruchomienie osobnej sesji, która działałaby całą dobę, zastępując harmonogram;
  2. W tej sesji powinna być okresowo wykonywana metoda RunJobProcessing().

Po aktualizacji każde uruchomienie grubego i cienkiego klienta, jeśli w ustawieniach uruchamiania (rys. 4) w polu „Dodatkowe” zostanie podany kluczAllExecuteScheduledJobs, inicjuje dodatkowy wątek łączący się z bazą danych, co nie ma wpływu na bezpieczeństwo użytkownika działać w jakikolwiek sposób, ale wykonuje tylko zadania w tle.

Ryc.4

Należy wziąć pod uwagę, że nawet w plikowej wersji pracy procesy w tle nie pozwalają na interaktywną pracę z użytkownikiem (nie będą wyświetlane komunikaty serwisowe, ostrzeżenia i pytania). Oznacza to, że muszą być zakodowane tak, jakby miały być wykonywane po stronie serwera.

Jak wyłączyć zaplanowane zadania

Niewykorzystane zadania można wyłączyć, po prostu odznaczając pole wyboru „Użyj” we właściwościach obiektu.

W przypadku, gdy administrator musi zabronić stosowania operacji rutynowych i w tle dla całej bazy danych jako całości (na przykład na serwerze przechowywanych jest kilka baz danych, z których tylko jedna jest główna, a pozostałe są używane tylko do programowania) konieczne jest skorzystanie z narzędzia do administrowania bazą danych. Możesz także zaznaczyć checkbox „Ustaw blokowanie zadań rutynowych” w bazie danych utworzonej na serwerze.

Ponadto dyski ITS posiadają specjalną „Konsolę zadań” przetwarzającą, która umożliwia edycję harmonogramu procesów działających w tle i zmianę ich aktywności.