1s 8.3 конзола за рутинни задачи, управлявани форми. Универсална нормативна задача. Добавяне на планирана задача

Управление на рутинни задачи на бази данни 1C от програмата за актуализиране

2018-11-20T15:18:30+00:00

В тази бележка ще разгледаме възможностите на програмата за актуализиране за управление на рутинни задачи в бази данни.

Първо, в елемента „Още“ -> „Управление на рутинни задачи...“:

В контекстното меню на избраната база данни (или група бази данни):

И накрая, в шаблони за пакетни скриптове (това ви позволява да извършвате операции върху рутинни задачи от скрипт според график):

Ето как изглежда диалоговият прозорец за управление на рутинни задачи в бази данни:

Какви задачи позволява да се решават в необходимата група бази данни (или една база данни)?

Избор на рутинни задачи

Моля, обърнете внимание, че можете да изберете списък с рутинни задачи в много операции по-долу:

Но в диалоговия прозорец за избор може да няма рутинни задачи специално за вашата база данни:

В този случай можете да посочите имената на планираните задачи, от които се нуждаете, в секцията „Вашите задачи...“, например така:

Имената за такива рутинни задачи могат да бъдат взети директно от отчета за всички рутинни задачи (това се обсъжда).

Показва текущото състояние на задачите

За да направите това, отидете в раздела "Теглене" и щракнете върху бутона "Теглене...":

В резултатите можем да видим:

  1. Стартирането на нови планирани задачи на сървъра 1C е активирано или деактивирано.
  2. Списък с рутинни задачи в базата данни.
  3. Графикът им.
  4. Заданията са активирани или деактивирани.
  5. Ако последното изпълнение на задача е имало грешка, тази грешка се показва в червено до задачата.

Ако е необходимо, в настройките на функциите можем да стесним списъка с планирани задачи и също така да показваме само разрешени задачи:

Изключете всички или някои задачи

За да направите това, отидете в раздела „Изключване“:

За всички или избрани планирани задачи квадратчето „Използване“ ще бъде изчистено.

Ето резултата за една база (щракнете за разширяване)

Включете всички или някои задачи

За да направите това, отидете в раздела „Активиране“:

За всички или избрани планирани задачи ще бъде поставена отметка в квадратчето „Използване“.

Моля, обърнете внимание, че в този раздел флагът „Архивиране на базата данни“ е наличен в долния ляв ъгъл.

Ето резултата за една база (щракнете за разширяване)

Ние управляваме стартирането на планирани задачи на сървъра 1C

За да направите това, отидете в раздела „1C сървър“:

Изберете „блокиране“ или „деблокиране“ и щракнете върху бутона „Изпълнение“.

Създаване на график на задачите

Но какво ще стане, ако трябва да настроим график за стартиране на задача (или група от задачи) в много бази данни наведнъж?

За да направите това, отидете в раздела „Настройване на график“:

Настройваме графика (диалогът и неговите възможности напълно съвпадат със стандартния в самия 1C) и щракнете върху „Персонализиране ...“.

Пускаме задачи за изпълнение

За да направите това, отидете в раздела „Изпълнение“:

Изберете необходимите задачи и щракнете върху бутона „Изпълни“:

Запазване на настройките на задачата във външен файл

Да приемем, че имаме идеално конфигурирани рутинни задачи в една от базите данни и искаме да прехвърлим тези настройки към всички други бази данни.

За да направим това, първо качваме всички настройки на задачите в идеалната база данни във външен файл:

Възстановяване на настройките на задачата от външен файл

И след това зареждаме този файл с настройки на задачите във всички други бази данни:

Само имайте предвид, че за тази задача (прехвърляне на настройки за задание от една база данни в друга) избрах метода за съвпадение по име на задание, а не по вътрешен идентификатор.

Раздяла

В общи линии това е всичко, което исках да ви кажа. Аз самият виждам много сценарии за използване на нови функции, но тук просто прегледах накратко основните точки.

Някои задачи в управлението на документи и счетоводството може да се наложи да се изпълняват периодично. Например на двадесети. Или ежедневно.

Обикновено компанията се опитва да създаде правила за изпълнение на такива задачи – кой, кога и как трябва да изпълни задачата, кой да я контролира.

Такива задачи се наричат ​​регулирани, тоест изпълнявани в съответствие с разпоредбите.

В ИТ мониторингът често се извършва по регламентиран начин.

Това е добре известно на системния администратор - има специални програми, които периодично проверяват работата на сървърите и мрежовата инфраструктура и уведомяват администратора чрез SMS или имейл.

Подобни неща съществуват и за уеб администраторите - да проверяват наличността на сайта през деня.

В 1C задачите за наблюдение и всички други периодични задачи, които трябва да се изпълняват автоматично по график, се изпълняват с помощта на механизма за планирани задачи на 1C.

Нека поговорим за тях днес.

Планирани задачи 1C

Планираните задачи 1C са тези, които ви позволяват да ги изпълнявате както правят, но по график.

Самата рутинна задача на 1C в конфигуратора е начин за задаване на настройки и задаване на график. Между другото, графикът може да се променя динамично по-късно в режим 1C Enterprise.

Фоновите задания могат да бъдат създадени от текста на програма на езика 1C произволно без планирано 1C задание - за паралелни изчисления на сървъра.

Изпълнението на рутинни 1C задачи може да бъде деактивирано временно - в.

Добавяне на рутинна задача на 1C

Рутинните 1C задачи се намират в конфигурацията в клона Общи/Рутинни 1C задачи. Нека добавим нова регулаторна задача 1C и да посочим нейното име.

В свойството на рутинната задача 1C е посочено името на метода, точно както в. Функцията ще бъде разположена в общ модул с отметка в квадратчето Сървър в свойствата, т.е. модулът трябва да бъде добавен предварително.

Свойството на планираната задача 1C - Име на задача - определя името, под което задачата ще се показва в инструментите за управление на задачи.

Свойството на 1C рутинна задача – Ключ – ви позволява да групирате няколко различни 1C рутинни задачи. Само едно задание със същата стойност на ключ може да бъде стартирано в даден момент. Самата стойност може да бъде произволна. Празна стойност не се взема предвид по време на контрола (т.е. счита се за празна).

Свойството на рутинна задача на 1C - Предварително дефинирано - определя, че когато се стартира 1C Enterprise, такава задача ще бъде създадена в едно копие с графика, посочен в конфигуратора. Непредефинираните задачи се появяват програмно в момента на графика.

В типичните конфигурации, например Accounting edition 2.0, такива рутинни задачи на 1C като Актуализация на конфигурацията и Преизчисляване на суми са предварително дефинирани, но като Обмен на данни или Отложени движения не са предварително дефинирани.

Използване – активира задачата (т.е. тя ще бъде изпълнена само ако има отметка в квадратчето Използване).

Повторен опит при необичайно прекратяване - както може би се досещате, означава рестартиране на задачата, ако не може да завърши успешно първия път - можете да посочите колко пъти да рестартирате и колко време след необичайното прекратяване.

1C управление на рутинни задачи и мониторинг

За управление на рутинни задачи на 1C има специална стандартна конзола за обработка на задания. Може да се намери и на.

Тази обработка принадлежи към така наречената универсална външна стандартна 1C обработка, която често не е включена в конфигурацията, а се разпространява отделно, например на ITS дискове.

С помощта на обработка на конзолата за задания можете:

  • Активиране/деактивиране на изпълнението на рутинна 1C задача
  • Присвояване/промяна на графика на планирана 1C задача (и други параметри)
  • Посочете потребителя на 1C, от чието име ще се изпълнява рутинната задача 1C
  • Вижте кои задачи са изпълнени кога и с какъв резултат, грешки при изпълнение на задачи на 1C
  • Изпълнение на задача.

Копия на бази данни и 1C рутинни задачи

Ако използвате сървър 1C, възниква следната ситуация:

  • За вашите собствени цели (например за програмиране) се прави копие на работната база данни
  • Работа, тестване и др. в копие на базата данни
  • Забравяте да изключите рутинните 1C задачи в такава тестова база данни.

Докато рутинните задачи на 1C изпълняват задачи, свързани само с тяхната информационна база, тогава в нея няма нищо.

Рутинните задачи на 1C обаче често могат да записват всякакви файлове, данни в други бази данни, да извършват обмен и да изпращат имейли.

В този случай може да получите интересна комбинация между резултата от изпълнението на рутинни 1C задачи в работната база данни и копията.

Рутинните 1C задачи за копия на работната база данни трябва да бъдат деактивирани в .

Изпълнение и неизпълнение на регулаторните задачи на 1C

Когато създавате рутинни 1C задачи, трябва да запомните:

  • Задачите се изпълняват сами - те трябва да бъдат наблюдавани
  • Задачите се изпълняват в модул на сървъра
  • Задачите се изпълняват под друг потребител на Windows с различни права.

Първо, трябва да проверите дали задачата се изпълнява и може да бъде изпълнена като рутинна 1C задача.

Второ, сървърният модул означава, че много неща, които са налични на клиента, не са налични. Например, понякога не всички документи могат да бъдат публикувани само на сървъра, тъй като техният алгоритъм може да предвижда, че публикуването се стартира ръчно от потребителя и могат да се използват несървърни функции, напр.
Предупреждение ("Здравей!")

Трето, ако дадена задача се занимава с нещо извън базата данни на 1C, тогава правата на потребителя на Windows, под който се изпълнява задачата, стават важни.

Третата точка е особено важна при разработването. Ако модулът не може да бъде изпълнен на сървъра, задачата изобщо няма да бъде изпълнена. За да проверите, трябва да стартирате задачата поне веднъж и да видите резултата „Задачата е завършена“ в обработката на конзолата за задачи.

1 Механизъм на работа
2 фонови задачи
3 планирани задачи
4 Характеристики на изпълнение на фонови задачи във файлови и клиент-сървърни версии
5 Създаване на метаданни за рутинна задача
6 Конзола за работа
7 Работа с рутинни задачи
7.1 Работни обекти
7.2 Получаване на списък със задачи
7.3 Създаване
7.4 Деинсталиране
7.5 Получаване на обект за работа

Механизъм на работа

Машината за работа е проектирана да изпълнява всяко приложение или функционалност по график или асинхронно.

Механизмът на задачите решава следните задачи:

  • Възможност за дефиниране на регулаторни процедури на етап конфигуриране на системата;
  • Изпълнение на определени действия по график;
  • Извикване на дадена процедура или функция асинхронно, т.е. без да чака завършването му;
  • Проследяване на напредъка на конкретна задача и получаване на нейния статус на изпълнение (стойност, показваща дали е била успешна или не);
  • Получаване на списък с текущи задачи;
  • Възможност за изчакване за изпълнение на една или повече задачи;
  • Управление на работата (възможност за анулиране, блокиране на изпълнението и др.).

Работният механизъм се състои от следните компоненти:

  • Метаданни за рутинни задачи;
  • Редовни задачи;
  • Фонови работни места;
  • Планировчик на задачи.

Фоновите задачи са проектирани да изпълняват задачи на приложението асинхронно. Фоновите задачи се изпълняват с помощта на вградения език.

Планирани задачи – предназначени за изпълнение на приложени задачи по график. Рутинните задачи се съхраняват в информационната база и се създават въз основа на метаданни, дефинирани в конфигурацията. Метаданните на регулаторна задача съдържат информация като име, метод, употреба и др.

Рутинната задача има график, който определя кога трябва да се изпълни методът, свързан с рутинната задача. Графикът, като правило, е посочен в информационната база, но може да бъде посочен и на етапа на конфигурация (например за предварително зададени рутинни задачи).

Планировчикът на задачи се използва за планиране на изпълнението на рутинни задачи. За всяко планирано задание планировчикът периодично проверява дали текущата дата и час съответстват на графика на планираното задание. Ако съвпада, планировчикът присвоява тази задача за изпълнение. За да направи това, за тази планирана задача планировчикът създава фонова задача, която изпълнява действителната обработка.

Фонови задачи

Фоновите задачи са удобни за използване за извършване на сложни изчисления, когато получаването на резултата от изчислението може да отнеме много време. Машината за работа има средствата да извършва такива изчисления асинхронно.

Свързан с фоново задание е метод, който се извиква, когато се изпълнява фоновото задание. Метод на фоново задание може да бъде всяка процедура или функция на неглобален общ модул, който може да бъде извикан на сървъра. Параметрите на фоновото задание могат да бъдат всякакви стойности, които могат да бъдат предадени на сървъра. Параметрите на фоново задание трябва точно да съвпадат с параметрите на процедурата или функцията, която извиква. Ако методът на фоновото задание е функция, нейната върната стойност се игнорира.

Фоновата работа може да има ключ - произволна стойност на приложението. Ключът въвежда ограничение за стартиране на фонови задания - само едно фоново задание може да бъде изпълнено за единица време с определена стойност на ключ и дадено име на метод на фоново задание (името на метода се състои от името на модула и името на процедурата или функция). Ключът ви позволява да групирате фонови задания, които имат едни и същи методи според конкретна характеристика на приложение, така че не повече от едно фоново задание да се изпълнява в рамките на една група.

Фоновите задачи се създават и управляват програмно от всяка връзка. На всеки потребител е разрешено да създава фоново задание. Освен това той се изпълнява от името на потребителя, който го е създал. Получаването на задачи, както и изчакването за тяхното изпълнение, е разрешено от всяка връзка към потребител с администраторски права или към потребителя, който е създал тези фонови задачи.

Фоновото задание е чисто сесиен обект и не принадлежи към никоя потребителска сесия. За всяка задача се създава специална системна сесия, която се изпълнява от името на потребителя, който е направил повикването. Фоновите задачи нямат постоянно състояние.

Едно фоново задание може да създаде други фонови задания. Във версията клиент-сървър това ви позволява да паралелизирате сложни изчисления в клъстерни работни процеси, което може значително да ускори процеса на изчисление като цяло. Паралелизирането се осъществява чрез създаване на няколко дъщерни фонови задания и изчакване всяко от тях да завърши в основното фоново задание.

Задачи във фонов режим, които завършват успешно или неуспешно, се съхраняват за 24 часа и след това се изтриват. Ако броят на завършените фонови задания надвиши 1000, най-старите фонови задания също се изтриват.

Планирани задачи

Планираните задачи се използват, когато е необходимо да се извършват определени периодични или еднократни действия по график.

Планираните задачи се съхраняват в информационната база и се създават въз основа на метаданните на рутинната задача, дефинирана в конфигурацията. Метаданните определят такива параметри на рутинна задача като: извикан метод, име, ключ, възможност за използване, знак за предварително определяне и т.н. Когато създавате рутинна задача, можете допълнително да посочите графика (може да бъде посочен в метаданните), стойности ​на параметрите на метода, име на потребителя, от чието име се изпълняват рутинни задачи и др.

Създаването и управлението на планирани задачи се извършва програмно от всяка връзка и е разрешено само на потребители с администраторски права.

Забележка. Когато работите във файловата версия, е възможно да създавате и редактирате рутинни задачи, без да стартирате планировчика на задачи.

С рутинна задача е свързан метод, който се извиква, когато рутинната задача се изпълни. Методът на рутинна задача може да бъде всяка процедура или функция на неглобален общ модул, който може да бъде извикан на сървъра. Параметрите на рутинна задача могат да бъдат всякакви стойности, които могат да бъдат предадени на сървъра. Параметрите на рутинна задача трябва точно да съвпадат с параметрите на процедурата или функцията, която извиква. Ако методът на рутинната задача е функция, тогава нейната върната стойност се игнорира.

Една рутинна задача може да има ключ - всяка стойност на приложението. Ключът въвежда ограничение за стартиране на планирани задачи, т.к за единица време, сред рутинни задачи, свързани с един и същ обект на метаданни, може да се изпълни само една рутинна задача със специфична стойност на ключ. Ключът ви позволява да групирате рутинни задачи, свързани с един и същ обект на метаданни, според конкретна характеристика на приложението, така че в рамките на една група да не се изпълнява повече от една рутинна задача.

По време на конфигурацията можете да дефинирате предварително дефинирани рутинни задачи. Предварително дефинираните рутинни задачи не се различават от обикновените рутинни задачи, освен че не могат да бъдат изрично създадени или изтрити. Ако в метаданните на планираната задача е зададено знак за предварително определена рутинна задача, тогава при актуализиране на конфигурацията в информационната база автоматично ще се създаде предварително зададена рутинна задача. Ако предварително зададеният флаг е изчистен, тогава при актуализиране на конфигурацията в информационната база, предварително дефинираната рутинна задача ще бъде автоматично изтрита. Първоначалните стойности на свойствата на предварително дефинирана планирана задача (например график) са зададени в метаданните. В бъдеще, когато приложението работи, те могат да бъдат променяни. Предварително дефинираните рутинни задачи нямат параметри.

Графикът на рутинната задача определя в кои часове трябва да се изпълнява рутинната задача. Графикът ви позволява да зададете: дата и час на начало и край на задачата, период на изпълнение, дни от седмицата и месеци, до които планираната задача трябва да бъде изпълнена и др. (вижте описанието на вградения на езика).

Примери за графици на рутинни задачи:

Всеки час, само един ден

Период на повтарящи се дни = 0, Период на повтарящи се дни = 3600

Всеки ден по веднъж на ден

Период на повторение на дни = 1, период на повтаряне на дни = 0

Един ден, един път

PeriodRepeatDays = 0

През ден веднъж на ден

PeriodRepeatDays = 2

На всеки час от 01.00 до 07.00 всеки ден

PeriodRepeatDays = 1
Период на повторение през деня = 3600
Начален час = 01.00ч
Краен час = 07.00

Всяка събота и неделя от 09.00ч

PeriodRepeatDays = 1
Дни от седмицата = 6, 7
Начален час = 09.00ч

Всеки ден в продължение на една седмица, пропускайте една седмица

PeriodRepeatDays = 1
Период седмици = 2

В 01.00 веднъж

Начален час = 01.00ч

Последен ден от всеки месец в 9:00ч.

PeriodRepeatDays = 1
Ден в месеца = -1
Начален час = 09.00ч

Пети ден от всеки месец в 9:00ч

PeriodRepeatDays = 1
Ден В Месеца = 5
Начален час = 09.00ч

Всяка втора сряда от месеца в 9:00ч

PeriodRepeatDays = 1
Ден СедмицаВМесец = 2
Дни от седмицата = 3
Начален час = 09.00ч

Можете да проверите дали дадена задача се изпълнява за дадена дата (методът RequiredExecution на обекта ScheduleTasks). Планираните задачи винаги се изпълняват под името на конкретен потребител. Ако потребителят на планираната задача не е посочен, тогава изпълнението се извършва от името на потребителя по подразбиране, който има административни права.

Рутинните задачи се изпълняват с помощта на фонови задачи. Когато планировчикът определи, че планирана задача трябва да бъде стартирана, автоматично се създава фонова задача въз основа на тази планирана задача, която извършва цялата по-нататъшна обработка. Ако тази рутинна задача вече се изпълнява, тя няма да бъде стартирана отново, независимо от нейния график.

Планираните задачи могат да бъдат рестартирани. Това е особено вярно, когато трябва да се гарантира, че методът на рутинната задача ще бъде изпълнен. Рутинна задача се рестартира, когато приключи необичайно или когато работният процес (във версията клиент-сървър) или клиентският процес (във файловата версия), на който е била изпълнена рутинната задача, бъде прекратен необичайно. В планираната задача можете да посочите колко пъти трябва да се рестартира, както и интервала между рестартиранията. Когато прилагате метода на рестартируема рутинна задача, трябва да имате предвид, че при рестартиране изпълнението му ще започне отначало, а не ще продължи от момента на необичайно прекратяване.

Важно е да запомните това Крайно временяма непременно да завърши фоновата работа в определеното време. Някои твърдения:
* Фоново задание може да игнорира автоматичното си анулиране, ако не е блокирало, но продължава да се изпълнява по някаква причина
че не всички операции на платформата могат да бъдат обърнати. Ако вграденият езиков цикличен код се изпълни, отменете заданието
може би иначе не. Всичко зависи от това какво върши работата.
* Краен час - границата, в която задачата може да започне, а не да завърши?
* Принудителното прекратяване на задача връща промените, направени в началото на транзакцията?

Характеристики на изпълнение на фонови задания във варианти файл и клиент-сървър

Механизмите за изпълнение на фонови задачи във файловата и клиент-сървърната версия са различни.

  • Във файловата версия трябва да създадете специален клиентски процес, който ще изпълнява фонови задачи. За да направи това, клиентският процес трябва периодично да извиква функцията за глобален контекст ExecuteJobProcessing. Само един клиентски процес на информационна база трябва да обработва фонови задания (и съответно да извиква тази функция). Ако клиентски процес не е създаден за обработка на фонови задания, тогава при програмен достъп до машината за задания ще се покаже грешката „Мениджърът на задания не е активен“. Не се препоръчва използването на клиентски процес, който обработва фонови задания за други функции.

След като клиентският процес, обработващ фонови задания, е стартиран, други клиентски процеси могат да получат програмен достъп до механизма за фонови задания, т.е. може да изпълнява и управлява фонови задания.

Във версията клиент-сървър се използва планировчик на задачи за изпълнение на фонови задания, който физически се намира в мениджъра на клъстера. За всички поставени на опашка фонови задания планировчикът получава най-малко натоварения работен процес и го използва, за да изпълни съответното фоново задание. Работният процес изпълнява задачата и уведомява планировчика за резултатите от изпълнението.

Във версията клиент-сървър е възможно да се блокира изпълнението на рутинни задачи. Изпълнението на рутинни задачи се блокира в следните случаи:

  • В информационната база е инсталирано изрично блокиране на рутинни задачи. Заключването може да се настрои чрез клъстерната конзола;
  • В информационната база има блок за връзка. Заключването може да се настрои чрез клъстерната конзола;
  • Методът SetExclusiveMode() с параметър True беше извикан от вградения език;
  • В някои други случаи (например при актуализиране на конфигурацията на базата данни).

Създаване на метаданни за рутинна задача

Преди да създадете програмно рутинна задача в информационната база, трябва да създадете обект на метаданни за нея.

За да създадете обект с метаданни за рутинна задача в конфигурационното дърво в клона „Общи“ за клона „Рутинни задачи“, изпълнете командата „Добавяне“ и попълнете следните свойства на рутинната задача в палитрата със свойства:

Име на метода - посочете името на метода на рутинната задача.

Ключ - задайте произволна стойност на низ, която ще се използва като ключ на планираната задача.

График - показва графика на рутинната задача. За да създадете график, щракнете върху връзката „Отвори“ и във формуляра за график, който се отваря, задайте необходимите стойности.

В раздела „Общи“ са посочени началната и крайната дата на задачата и режимът на повторение.

В раздела „Ежедневно“ е посочен дневният график на задачата.

Посочете графика:

  • начален и краен час на задачата;
  • време за изпълнение на задачата, след което тя ще бъде принудително прекратена;
  • период на повторение на задачите;
  • продължителност на паузата между повторенията;
  • продължителност на изпълнение.

Позволено е да се зададе произволна комбинация от условия.

В раздела „Седмично“ е посочен седмичният график на задачата.

Поставете отметка в квадратчетата за дните от седмицата, в които ще се изпълнява задачата. Ако искате да повторите задачата, посочете интервала на повторение в седмици. Например, задачата се изпълнява за 2 седмици, стойността на повторение е 2.

В раздела „Месечно“ е посочен месечният график на задачата.

Поставете отметки в квадратчетата за месеците, в които ще се изпълнява задачата. Ако е необходимо, можете да посочите конкретен ден (месец или седмица) на изпълнение от началото на месеца/седмицата или края.

Използване - ако е зададено, задачата ще се изпълнява по график.

Предефинирано - ако е зададено, задачата е предварително дефинирана.

Брой повторения в случай на необичайно прекъсване - показва броя повторения в случай на необичайно прекъсване.

Retry interval on abnormal termination - определя интервала на повторен опит при необичайно прекъсване. Примери

Създаване на фоново задание „Актуализиране на индекса за търсене в пълен текст“:

BackgroundTasks.Run("UpdatingFullTextSearchIndex");

Създаване на рутинна задача „Възстановяване на последователности“:

График = Нова ScheduleTask;
Schedule.PeriodRepeatDays = 1;
Schedule.RepeatPeriodDuringDay = 0;

Задача = RoutineTasks.CreateRoutineTask("Възстановяване на последователности");
Job.Schedule = График;
Task.Write();

Конзола за работа

Обработка с ITS, управлява рутинни задачи: ConsoleTasks.epf

Работа с рутинни задачи

Обекти на работа

Обектите на работа не се препращат, но се съхраняват в базата данни в някакво специално хранилище.

Ако флагът "Предварително зададен" е активиран в метаданните, тогава такъв обект се създава автоматично при стартиране на 1C:Enterprise и винаги съществува точно в един екземпляр. Такъв обект не може да бъде изтрит.

Ако флагът "Предварително дефиниран" не е зададен, тогава обектите на такава задача се създават и изтриват програмно, като се посочват графикът и параметрите.

Получаване на списък със задачи

Списъкът със задачи може да бъде получен чрез метода Вземете RoutineTasksглобален мениджър по работа Рутинни задачи

ScheduledJobsManager

Вземете ScheduledJobs (GetScheduledJobs)

Синтаксис:

Вземете RoutineTasks(<Отбор>)

Настроики:

<Отбор>(по избор)

Тип: Структура. Избор, определящ структурата. Стойностите на структурата могат да бъдат: UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Ако изборът не е посочен, се получават всички рутинни задачи.

Ако филтрирате по метаданни, тогава като стойност на метаданни можете да посочите или обекта на метаданни на рутинната задача, или неговото име.

Върната стойност:

Тип: масив.

Описание:

Получава набор от рутинни задачи за дадена селекция. Получаването на планирани задачи е възможно само за администратора.

Наличност:

За всяко редовно от регулаторния цикъл
NewLine = Списък на ScheduledTasks.Add();
NewRow.Metadata = Regular.Metadata.View();
NewLine.Name = Regular.Name;
NewString.Key = Regular.Key;
NewLine.Schedule = График.График;
NewLine.User = Regular.UserName;
NewString.Predefined = Regular.Predefined;
NewString.Use = Regular.Use;
NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask;
Ако LastTask е Undefined Тогава
NewLine.Running = LastTask.Start;
NewRow.State = LastTask.State;
endIf;
EndCycle;

Създаване

Създаден от метода Create RoutineTask за мениджър на рутинни задачи:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

RegularTask.Name = Име;
RegularTask.Key = Ключ;
RegularTask.Use = Използване;
RoutineTask.UserName = UsersSelection;
RoutineTask.Number ofRepetitionsAtEmergencyCompletion =Брой на повторенията при спешно завършване;
ScheduledTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion;
ScheduleTask.Schedule = График;
RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

TaskObject.Name = Име;
JobObject.Use = True;

Обектът на задачата има поле "Параметри", в което са посочени параметрите на метода:

ScheduledJob

Параметри

Употреба:

Чети и пиши.

Описание:

Тип: масив. Масив от параметри за планирана задача. Броят и съставът на параметрите трябва да съответстват на параметрите на метода на рутинната задача.

Наличност:

Сървър, дебел клиент, външна връзка.

Забележка:

Възможностите за четене и запис са достъпни само за администратора.

Премахване

Изтрито чрез метода Delete() на обекта на задачата:

ScheduledTask.Delete();

Получаване на обект за работа

  • списък чрез метода GetRoutineTasks:
    Рутина = RoutineTasks.GetRoutineTasks(Избор);
  • чрез FindByUniqueIdentifier на метода на диспечера на задачите:
    Задача = ScheduledTasks.FindByUniqueIdentifier(UID);

[трябва да се регистрирате, за да видите връзката]

Създаване на рутинна задача

Нека създадем рутинна задача „Извършване на обработка“.

Нека деактивираме използването на планираната задача, така че при актуализиране на конфигурацията тя да не се изпълнява автоматично.

Нека зададем процедура, която ще се задейства при стартиране на рутинна задача:Модул на RoutineTasks.RoutineTaskExecutionProcessing.

Самата процедура изглежда така:

Процедура RoutineTaskExecutionProcessing(Key) Export

Параметри на RoutineTasks.PerformProcessingWithParameters(Key);

Край на процедурата

Създаваме справочник за рутинни задачи

Нашата рутинна задача може да породи много фонови процеси - по един за всяка обработка. Всяка задача в платформата 1C8 има ключ. Но методът за планирано задание не знае ключа за фоново задание, така че трябва да използвате параметрите на фоновото задание. В резултат на това можем да видим фоновото задание в конзолата за задания, но не можем ръчно да създадем фоново задание от тази конзола, тъй като заданията с параметри не се създават ръчно.

Справочник „Параметри на планираните задачи“ :

Реквизити :

· Код преди стартиране- неограничен низ - код на езика 1C, който трябва да се изпълни преди стартиране.

· Обработка от конфигурацията - ред (100) - идентификатор на обработка от конфигурацията

· Обработка от директорията - ред (100) - връзка към елемента на директория “Външна обработка”, ако има такъв в конфигурацията

· Изпълнете чрез приложението 1C - Boolean - ще бъде създадено отделно приложение 1C и в него ще бъде стартирана рутинна задача. Създаден за 8.1, където не всички методи на приложение са налични на сървъра, където се изпълнява планираното задание.

· Код за стартиране- - неограничен ред - код на езика 1C, който ще бъде изпълнен при стартиране на планирана задача.

Нека създадем формата на елемента :

Като щракнете върху „Създаване на рег. задача" рутинна задача с ключов код се създава програмно:

Процедура BasicActionsFormCreateReglTask(Button)

Променлива работа;

Ключ = AbbrLP(код);

Задача = RoutineTasks.CreateRoutineTask("Извършване на обработка");

Task.Name = Ключ;

Task.Key = Ключ;

Параметри = Нов масив();

Parameters.Add(Key);

Task.Parameters = Параметри;

Task.Write();

Край на процедурата

Стартиране на планирана задача

Всяка рутинна задача, която създаваме, има ключ:

Този ключ съответства на кода в директорията „Параметри на рутинни задачи“, използва се за търсене при стартиране на задача. Ако записът в директорията не бъде намерен, задачата не се изпълнява.

След това, ако кодът е даденКод преди стартиранетогава този код ще бъде изпълнен. След това, ако променливата Изпълнетесе оценява като false, задачата няма да бъде изпълнена. Променлива, достъпна за анализ Настроики, където се съхранява връзка към намерения елемент от директорията „Параметри на рутинни задачи“.

В зависимост от избраните стойности на детайлите ще се изпълнява или кодът на езика 1C, или ще започне обработка от конфигурацията, или ще започне обработка от стандартната справочна книга „Външна обработка“.

За 1C81 е осигурено изпълнение в ново приложение - така че можете да използвате код, който е наличен само на клиента, включително използването на външна обработка. За да направите това, трябва да поставите отметка в квадратчето „Изпълняване на приложението 1C“. В противен случай насрочената задача ще бъде изпълнена на сървъра.

Препоръчвам да зададете потребител в полето „Потребител“ за новосъздадена рутинна задача, така че задачата да се изпълнява с определени права. Препоръчвам да дадете на такъв потребител пълни права. Използвам потребителя "робот».

Графикът на рутинната задача се създава с помощта на хипервръзката „График“ от формуляра на рутинната задача. Можете да използвате обработката на „Конзолата за рутинни задачи“.

Когато работите в 1C, има много рутинни операции, които трябва да бъдат стартирани или планирани за извършване на едно или друго действие, например: публикуване на документи или зареждане на данни в 1C от уебсайт.

Наскоро публикувах статия: Време е да автоматизирам това:

Рутинни и фонови задачи

Машината за работа е проектирана да изпълнява всяко приложение или функционалност по график или асинхронно.

Механизмът на задачите решава следните задачи:

  • Възможност за дефиниране на регулаторни процедури на етап конфигуриране на системата;
  • Изпълнение на определени действия по график;
  • Извикване на дадена процедура или функция асинхронно, т.е. без да чака завършването му;
  • Проследяване на напредъка на конкретна задача и получаване на нейния статус на изпълнение (стойност, показваща дали е била успешна или не);
  • Получаване на списък с текущи задачи;
  • Възможност за изчакване за изпълнение на една или повече задачи;
  • Управление на работата (възможност за анулиране, блокиране на изпълнението и др.).

Работният механизъм се състои от следните компоненти:

  • Метаданни за рутинни задачи;
  • Редовни задачи;
  • Фонови работни места;
  • Планировчик на задачи.

Фонови задачи и са проектирани да изпълняват задачи на приложенията асинхронно. Фоновите задачи се изпълняват с помощта на вградения език.

Планирани задачи и са предназначени да изпълняват задачи на приложението по график. Рутинните задачи се съхраняват в информационната база и се създават въз основа на метаданни, дефинирани в конфигурацията. Метаданните на регулаторна задача съдържат информация като име, метод, употреба и др.

Рутинната задача има график, който определя кога трябва да се изпълни методът, свързан с рутинната задача. Графикът, като правило, е посочен в информационната база, но може да бъде посочен и на етапа на конфигурация (например за предварително зададени рутинни задачи).

Планировчикът на задачи се използва за планиране на изпълнението на рутинни задачи. За всяко планирано задание планировчикът периодично проверява дали текущата дата и час съответстват на графика на планираното задание. Ако съвпада, планировчикът присвоява тази задача за изпълнение. За да направи това, за тази планирана задача планировчикът създава фонова задача, която изпълнява действителната обработка.

Мисля, че това е достатъчно с описанието - нека да преминем към изпълнението:

Създаване на рутинна задача

Име на метода– път до процедурата, която ще се изпълнява във фоново задание по зададен график. Процедурата трябва да е в общ модул. Препоръчително е да не използвате стандартни общи модули, а да създадете свои собствени. Не забравяйте, че фоновите задачи се изпълняват на сървъра!

Използване– знак за използване на рутинна задача.

Предопределено– показва дали рутинната задача е предварително определена.

Ако искате рутинната задача да работи веднага след поставянето й в базата данни, посочете атрибута Предопределено. В противен случай ще трябва да използвате обработката на „Job Console“ или да задействате задачата да се изпълнява програмно.

Брой повторения при необичайно прекратяване на задание– колко пъти е било рестартирано фоновото задание, ако е било изпълнено с грешка.

Интервал за повторен опит, когато заданието приключи необичайно– колко често ще се рестартира фоновото задание, ако е завършено с грешка.

Създаване на график

Графикизпълнение на задачата:

Всеки час, само един денПериод на повтарящи се дни = 0, Период на повтарящи се дни = 3600
Всеки ден по веднъж на денПериод на повторение на дни = 1, период на повтаряне на дни = 0
Един ден, един пътPeriodRepeatDays = 0
През ден веднъж на денPeriodRepeatDays = 2
На всеки час от 01.00 до 07.00 всеки денPeriodRepeatDays = 1RepeatPeriodDuringDay = 3600StartTime = 01.00

Краен час = 07.00

Всяка събота и неделя от 09.00чПериод на повторение на дните = 1 дни от седмицата = 6, 7 начален час = 09.00
Всеки ден в продължение на една седмица, пропускайте една седмицаPeriodRepeatDays = 1PeriodWeeks = 2
В 01.00 веднъжНачален час = 01.00ч
Последен ден от всеки месец в 9:00ч.PeriodRepeatDays = 1DayInMonth = -1StartTime = 09.00
Пети ден от всеки месец в 9:00чPeriodRepeatDays = 1DayInMonth = 5StartTime = 09.00
Всяка втора сряда от месеца в 9:00чPeriodRepeatDays = 1DayWeekMonth = 2DaysWeek = 3

Начален час = 09.00ч

Характеристики на изпълнение на фонови задания във варианти файл и клиент-сървър

Механизмите за изпълнение на фонови задачи във файловата и клиент-сървърната версия са различни.

Във файлова версиятрябва да създадете специален клиентски процес, който ще изпълнява фонови задачи. За да направи това, клиентският процес трябва периодично да извиква функцията за глобален контекст ExecuteJobProcessing. Само един клиентски процес на информационна база трябва да обработва фонови задания (и съответно да извиква тази функция). Ако клиентски процес не е създаден за обработка на фонови задания, тогава при програмен достъп до машината за задания ще се покаже грешката „Мениджърът на задания не е активен“. Не се препоръчва използването на клиентски процес, който обработва фонови задания за други функции.

След като клиентският процес, обработващ фонови задания, е стартиран, други клиентски процеси могат да получат програмен достъп до механизма за фонови задания, т.е. може да изпълнява и управлява фонови задания.

Във версия клиент-сървърЗа изпълнение на фонови задания се използва планировчик на задачи, който се намира физически в мениджъра на клъстера. За всички поставени на опашка фонови задания планировчикът получава най-малко натоварения работен процес и го използва, за да изпълни съответното фоново задание. Работният процес изпълнява задачата и уведомява планировчика за резултатите от изпълнението.

Във версията клиент-сървър е възможно да се блокира изпълнението на рутинни задачи. Изпълнението на рутинни задачи се блокира в следните случаи:

  • В информационната база е инсталирано изрично блокиране на рутинни задачи. Заключването може да се настрои чрез клъстерната конзола;
  • В информационната база има блок за връзка. Заключването може да се настрои чрез клъстерната конзола;
  • Методът SetExclusiveMode() с параметър True беше извикан от вградения език;
  • В някои други случаи (например при актуализиране на конфигурацията на базата данни).

Обработка на стартирането и преглед на планираните задачиможете да изтеглите тук.