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

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

Планирани и фонови задачи

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

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

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

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

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

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

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

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

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

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

Създаване на планирана работа

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

Използване- знак за използване на планирана задача.

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

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

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

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

Настройка на графика

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

Всеки час, само един денRetry PeriodDays = 0, Retry PeriodDuringDay = 3600
Всеки ден по веднъж на денRetry PeriodDays = 1, Retry PeriodDuringDay = 0
Един ден, един пътДни на период за повторен опит = 0
През ден веднъж на денДни на период за повторен опит = 2
На всеки час от 01.00 до 07.00 всеки денRetryPeriodDays = 1RepeatPeriodDay = 3600StartTime = 01.00

Краен час = 07.00

Всяка събота и неделя от 09.00чПериод на повторение от дни = 1 дни от седмицата = 6, 7 начален час = 09.00
Всеки ден минава една седмица, седмицаПериод на повторение от дни = 1 Период от седмици = 2
Еднократно в 01.00 чНачален час = 01.00
Последен ден от всеки месец в 9:00ч.Период на повторение от дни = 1 ден в месеца = -1 начален час = 09.00
Пети всеки месец в 9:00Период на повторение от дни = 1 ден в месеца = 5 начален час = 09.00
Всяка втора сряда от месеца в 9:00 чПовторете PeriodDays = 1DayWeekInMonth = 2DaysWeek = 3

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

Особености при изпълнение на фонови задачи във файлови и клиент-сървърни версии

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

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

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

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

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

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

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

Фоновите задачи в 1C могат да се стартират автоматично по график (т.е. те могат да бъдат екземпляри на планирани задачи) или самият разработчик може да инициира стартирането на фонова задача, за да изпълни произволен алгоритъм (ярък пример за генериране на отчети в Фонът).
ВАЖНО!!!За файлови бази, започвайки от версия на платформата 8.3.3.641, не е необходимо да стартирате отделна сесия, в която ще се изпълняват фонови задачи. Тези. по-рано във файловите бази данни, за стартиране на фонови задачи, беше необходимо да се изпълни методът на глобалния контекст "PerformProcessingJobs()". Подробности на този линк.

Процедура за изпълнение на произволен алгоритъм във фоново задание

За да изпълним нашия алгоритъм в отделно фоново задание, ще използваме метода "Run()"мениджър на фонови задачи: Синтаксис:Изпълни(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>)
  • <ИмяМетода>(задължително); Тип: низ
    Името на експортирана процедура или функция на неглобален споделен модул, който може да бъде изпълнен на сървъра, във формата ModuleName.MethodName.
  • <Параметры>(по избор); Тип: масив
    Масив от параметри за предаване на метода. Броят и типовете параметри трябва да съответстват на параметрите на метода. (прочетете повече в помощника за синтаксис)
  • <Ключ>(по избор); Тип: низ
    Ако е зададен, ключът трябва да е уникален сред ключовете за активни фонови задания, които имат същото име на метод като фоновото задание.
  • <Наименование>(по избор); Тип: низ.
    Описание на задачата.

Процедура за изпълнение на фоново задание

В нашия случай ще използваме процедурата за експортиране, намираща се в общия модул "CommonModuleServer"(Мисля, че е излишно да обяснявам, че модулът трябва да е от страна на сървъра) Процедура Write InformationFROMProductsInBackground(BackgroundTaskParameter) ExportDataQuery = New Request("SELECT | Products.Reference AS Nomenclature |FROM | Catalog.Nomenclature AS Products"); Избор = RequestData.Execute().Select(); Докато Selection.Next() Loop MZ =RegistersInformation.DataFROMGoods.CreateRecordManager(); MZ.Period = CurrentDate(); MZ.Номенклатура = Избор.Номенклатура; MZ.Information = BackgroundJobParameter; MZ.Write(); EndCycle; Край на процедурата За да демонстрираме как работи фоновото задание, ще генерираме записи в нашия информационен регистър за всеки елемент, докато параметърът ще бъде предаден от формата, в която се стартира фоновото задание.

Команда за стартиране на фонова работа

Параметърът, който ще предадем на процедурата за изпълнение, ще бъде взет от атрибута управлявана форма(реквизити с тип "String"):

Кодът на модула за управляван формуляр ще изглежда така: &OnClient Процедура RunBackgroundJob(Command) RunBackgroundJobOnServer(); EndProcedure &AtServer Процедура StartBackgroundJobAtServer() // Формиране на масив с параметриJobParameters = Нов масив; JobParameters.Add(JobParameter); // Стартиране на фоновото изпълнение на BackgroundTasks.Run(// Нашият метод за експортиране в общия модул "CommonModuleServer.WriteInformationFROMProductsInBackground", // Подаване на масив с параметрите TaskParameters, // Посочване на ключа на задачата New UniqueIdentifier, // Посочване на името на фоновата задача „Нашата фонова задача“); EndProcedure

Резултат от изпълнението

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

Платформи: 1C:Enterprise 8.3, 1C:Enterprise 8.2, 1C:Enterprise 8.1
Конфигурации: Всички конфигурации

2012-11-13
53988

В работния процес има задачи, които изискват периодично изпълнение - например на двадесети или ежедневно. По правило в компаниите специално за това се създават определени правила, които посочват кога и как трябва да се изпълни необходимата задача и кой трябва да контролира процеса. Такива задачи се изпълняват съгласно разпоредбите и се наричат ​​регламентирани.

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

Подобна система е валидна за уеб администратори, като наличността на сайта се проверява в рамките на 24 часа. С помощта на механизма "Редовни задачи" в 1C се изпълняват задачи за наблюдение, както и периодични задачи, които са планирани в автоматичен режимв 1C. Нека разгледаме тази тема по-подробно.

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

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

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

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

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

Добавяне на планирана работа

Планираните задачи се намират в — Конфигуратор — Общи — Планирани задачи. Добавете нова „задача“ и дайте име. След това трябва да отидете на свойствата на „Задачи“. И изберете Име на метода. Тук трябва да посочите функцията за обработка, точно както се случва в абонамента за събитие. Тази функцияще се намира в общия модул и маркиран с "птица" Сървър в свойствата. Това означава, че необходимият модул трябва да бъде добавен предварително.

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

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

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

Инструменти за наблюдение и управление на планираната задача 1C

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

С негова помощ можете да извършвате следните действия:

Включете и изключете планираната задача;

Задаване и промяна на графика;

Посочете името на потребителя, с който ще се изпълнява планираната задача;

Вижте изпълнени задачи (кога и с какъв резултат), както и грешки в задачите;

Планирани задачи и копия на бази данни

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

За програмиране трябва да направите копие на работещата база данни;

Необходимостта от работа в копия на базата данни (тестване);

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

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

Изпълнени и неизпълнени рутинни задачи

Когато създавате планирани задачи, е важно да проверите дали задачата може да се изпълни като планирана задача. Важно е да знаете, че сървърният модул не предоставя много от нещата, които са възможни на клиента. След това задача, която се занимава с нещо, което е извън основата - правата играят важна роля в това. потребител на Windows, по който се изпълнява задачата.

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

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

Подробни инструкции с пример можете да намерите по-долу.

Какво представляват планираните и фоновите задачи в 1C

  • Планирани задачие специален механизъм 1C enterprise 8.3, предназначен да изпълнява конкретно действие по даден график.
  • Фонова работа- обекти, генерирани от планирана задача, която директно изпълнява присъщото действие без участието на потребителя или програмиста 1C 8.2.

Механизмът на планираните и фоновите задачи работи в режим на работа клиент-сървър (SQL), благодарение на функционалността на СУБД. Ако имате файлова база данни, тогава задачата също може да бъде конфигурирана, но по малко по-различен начин.

Настройка на фонови задачи в режим клиент-сървър на работа 1C

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

Вземете 267 1C видео урока безплатно:

  • Име на метода— път до процедурата, която ще бъде изпълнена във фоновата задача според зададения график. Процедурата трябва да е в споделен модул. Препоръчително е да не използвате стандартни, а да създадете свои собствени. Не забравяйте, че фоновите задачи се изпълняват на сървъра!
  • Използване- знак за използване на планирана задача.
  • предварително определениПоказва дали планираното задание е предварително дефинирано. Ако искате планираната задача да работи веднага след поставянето й в базата данни, посочете този флаг. В противен случай ще трябва да използвате обработката на "Job Console" или да извикате заданието за програмно изпълнение.
  • Брой повторни опити при срив на задание— колко пъти е било рестартирано фоновото задание, ако е било изпълнено с грешка.
  • Интервал за повторен опит за прекратяване на задание- колко често ще се рестартира фоновата задача, ако е била завършена с грешка.

И най-интересната обстановка - График:

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

внимание!Не забравяйте да деактивирате блокирането на планирани и фонови задания на ниво СУБД!

Това може да се направи в помощната програма за администриране на версията клиент-сървър или при създаване на нова база данни:

Настройка на планирани задачи във файловия режим на работа 1C

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

Във файловия режим инициализирането на планираното задание се извършва, когато се стартира методът "ExecuteJobProcessing()".

За конкретен потребителМожете да конфигурирате този метод да работи с друг метод −

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

  • Име на процедурата— името на процедурата, свързана като манипулатор на изчакване. Името на експортираната процедура за управляван приложен модул (обикновен приложен модул) или глобален споделен модул. Процедурата трябва да се намира на клиента.
  • Интервал— период между изпълнение на операциите в секунди.
  • веднъж- как да изпълните задачата, веднъж или не.

ConnectWaitingHandler, 3600 );

Двуминутен видеоклип, показващ как да настроите планирана задача в конфигуратора на 1C:

Как да ускорите работата в 1C: Счетоводство 8.3 (версия 3.0) или да деактивирате рутинни и фонови задачи

2019-01-15T13:28:19+00:00

Тези от вас, които вече са успели да преминат към новото издание на 1C: Счетоводство 8.3 (версия 3.0), са забелязали, че е станало по-бавно от двойката. Някакви странни забавяния, безкрайни фонови задачи по няколко пъти на ден, които никой не я е карал да изпълнява без наше знание.

Веднага след прехода моите счетоводители ми казаха, че новото издание на 1C: Accounting 3.0 откровено се забавя в сравнение с предишните! И е невъзможно да се работи.

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

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

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

Същото важи и за постоянния опит на 1C да се свърже със сайта и да провери и актуализира банковите класификатори. За какво? Аз самият ще натисна бутона за актуализиране на класификаторите, ако не намеря правилната банка по нейния BIC.

За това как да го направите в точките по-долу.

1. Отидете в секцията „Администриране“ и изберете елемента „Поддръжка“ в панела за действие ():

2. В прозореца, който се отваря, намерете и изберете елемента "Редовни и фонови задачи":

3. Отворете всяко задание, което има колоната Вкл. струва една чавка.

4. Премахнете отметката от „Активирано“ и щракнете върху бутона „Запазване и затваряне“.

5. Направете това с всяка от включените задачи и се насладете на новото издание. Като цяло според мен е много по-добър от двойката.

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