1C에서 작업할 때 문서 게시 또는 사이트에서 1C로 데이터 다운로드와 같은 작업을 수행하여 일정에 따라 시작하거나 형성해야 하는 일상적인 작업이 많이 있습니다.

최근에 기사를 게시했습니다. 이제 자동화할 시간입니다.

예약 및 백그라운드 작업

작업 메커니즘은 일정에 따라 또는 비동기적으로 모든 응용 프로그램 또는 기능을 실행하도록 설계되었습니다.

작업 메커니즘은 다음 작업을 수행합니다.

  • 시스템 구성 단계에서 일상적인 절차를 결정할 수 있는 능력
  • 일정에 따라 지정된 작업 실행
  • 주어진 프로시저나 함수에 대한 호출 실행은 비동기식입니다. 완료를 기다리지 않고;
  • 특정 작업의 진행 상황을 추적하고 완료 상태(실행의 성공 또는 실패를 나타내는 값) 가져오기
  • 현재 작업 목록 가져오기
  • 하나 이상의 작업이 완료될 때까지 기다리는 능력
  • 작업 관리(취소 가능성, 실행 차단 등).

작업 엔진은 다음 구성 요소로 구성됩니다.

  • 예약된 작업의 메타데이터
  • 예정된 할당;
  • 백그라운드 작업;
  • 작업 스케줄러.

백그라운드 작업 및 애플리케이션 작업을 비동기식으로 실행하도록 설계되었습니다. 백그라운드 작업은 기본 제공 언어를 사용하여 구현됩니다.

예약된 작업 및 예약된 작업을 수행하도록 설계되었습니다. 예약된 작업은 정보 베이스에 저장되고 구성에 정의된 메타데이터를 기반으로 생성됩니다. 예약된 작업 메타데이터에는 이름, 방법, 용도 등과 같은 정보가 포함됩니다.

예약된 작업에는 예약된 작업과 연결된 메서드가 실행되어야 하는 시간을 결정하는 일정이 있습니다. 일정은 원칙적으로 정보 베이스에서 설정되지만 구성 단계(예: 미리 정의된 예약 작업의 경우)에서도 설정할 수 있습니다.

작업 스케줄러는 예약된 작업의 실행을 예약하는 데 사용됩니다. 예약된 각 작업에 대해 스케줄러는 주기적으로 다음을 확인합니다. 현재 날짜및 예약된 작업의 시간 일정. 일치하는 경우 스케줄러는 해당 작업이 실행되도록 예약합니다. 이를 위해 이 예약된 작업에 따라 스케줄러는 실제 처리를 수행하는 백그라운드 작업을 생성합니다.

설명으로 충분하다고 생각합니다. 구현을 진행해 보겠습니다.

예약된 작업 생성

메소드 이름– 지정된 일정에 따라 백그라운드 작업에서 실행될 프로시저의 경로입니다. 프로시저는 공유 모듈에 있어야 합니다. 일반적인 공통 모듈을 사용하지 않고 고유한 모듈을 만드는 것이 좋습니다. 백그라운드 작업이 서버에서 실행된다는 것을 잊지 마십시오!

용법- 예약된 작업의 사용 표시.

미리 결정된– 예약된 작업이 미리 정의되었는지 여부를 나타냅니다.

예약된 작업이 데이터베이스에 배치된 직후에 작동하도록 하려면 기호를 지정하십시오. 미리 결정된. 그렇지 않으면 "작업 콘솔" 처리를 사용하거나 작업을 호출하여 프로그래밍 방식으로 실행해야 합니다.

작업 충돌 시 재시도 횟수– 백그라운드 작업이 오류와 함께 실행된 경우 다시 시작된 횟수.

작업 중단 재시도 간격– 백그라운드 작업이 오류와 함께 실행된 경우 다시 시작되는 빈도입니다.

일정 설정

일정작업 완료:

매시간 단 하루재시도 PeriodDays = 0, Retry PeriodDuringDay = 3600
매일 하루에 한 번재시도 PeriodDays = 1, Retry PeriodDuringDay = 0
어느 날, 한 번재시도 기간 일수 = 0
격일에 하루에 한 번재시도 기간 일 = 2
매일 01.00에서 07.00까지 매시간RetryPeriodDays = 1RepeatPeriodDay = 3600StartTime = 01.00

종료 시간 = 07.00

매주 토, 일요일 09:00기간 반복 = 1요일 = 6, 7StartTime = 09.00
매일 1주일, 1주일 지나기간 반복 = 1 주 기간 = 2
01.00에 한 번시작 시간 = 01.00
매월 말일 9:00.반복 일수 = 1DayInMonth = -1StartTime = 09.00
매월 5일 오전 9시반복 기간 = 1DayInMonth = 5StartTime = 09.00
매월 둘째 수요일 오전 9시PeriodDays = 1DayWeekInMonth = 2DaysWeek = 3 반복

시작 시간 = 09.00

파일 및 클라이언트-서버 버전에서 백그라운드 작업 수행의 특성

파일 및 클라이언트-서버 버전에서 백그라운드 작업을 실행하는 메커니즘이 다릅니다.

파일 형식으로백그라운드 작업을 수행할 전용 클라이언트 프로세스를 만들어야 합니다. 이렇게 하려면 클라이언트 프로세스에서 전역 컨텍스트 함수 ExecuteJobProcessing을 주기적으로 호출해야 합니다. 당 하나의 클라이언트 프로세스만 정보 기반백그라운드 작업을 처리해야 합니다(따라서 이 함수를 호출해야 함). 백그라운드 작업을 처리하기 위해 생성된 클라이언트 프로세스가 없는 경우 프로그래밍 방식으로 작업 엔진에 액세스할 때 "작업 관리자가 활성화되지 않았습니다" 오류가 생성됩니다. 다른 기능을 위해 백그라운드 작업을 처리하는 클라이언트 프로세스를 사용하지 않는 것이 좋습니다.

백그라운드 작업을 처리하는 클라이언트 프로세스가 실행된 후 다른 클라이언트 프로세스에 프로그램 액세스백그라운드 작업 메커니즘, 즉 백그라운드 작업을 실행하고 관리할 수 있습니다.

클라이언트-서버 버전에서백그라운드 작업을 수행하기 위해 클러스터 관리자에 물리적으로 위치한 작업 스케줄러가 사용됩니다. 대기 중인 모든 백그라운드 작업의 스케줄러는 로드가 가장 적은 작업자 프로세스를 가져와 해당 백그라운드 작업을 실행하는 데 사용합니다. 작업자 프로세스는 작업을 실행하고 실행 결과를 스케줄러에 알립니다.

클라이언트-서버 버전에서는 예약된 작업의 실행을 차단할 수 있습니다. 예약된 작업의 실행 차단은 다음과 같은 경우에 발생합니다.

  • 정보 베이스에서 예약된 작업의 명시적 차단이 설정되었습니다. 잠금은 클러스터 콘솔을 통해 설정할 수 있습니다.
  • 정보 베이스에 연결 차단이 설정되었습니다. 잠금은 클러스터 콘솔을 통해 설정할 수 있습니다.
  • SetExclusiveMode() 메서드는 True 매개 변수를 사용하여 기본 제공 언어에서 호출되었습니다.
  • 일부 다른 경우(예: 데이터베이스 구성 업데이트 시).

예약된 작업의 시작 및 보기 처리여기에서 다운로드할 수 있습니다.

1C의 백그라운드 작업은 일정에 따라 자동으로 시작될 수 있습니다(즉, 예약된 작업의 인스턴스일 수 있음), 또는 개발자 자신이 백그라운드 작업 시작을 시작하여 임의의 알고리즘을 실행할 수 있습니다(보고서 생성의 생생한 예 배경).
중요한!!!파일 기반의 경우 플랫폼 버전 8.3.3.641부터 백그라운드 작업이 수행될 별도의 세션을 시작할 필요가 없습니다. 저것들. 이전에 파일 데이터베이스에서 백그라운드 작업을 시작하려면 전역 컨텍스트 메서드를 실행해야 했습니다. "PerformProcessingJobs()". 이 링크의 세부 정보.

백그라운드 작업에서 임의의 알고리즘을 실행하는 절차

별도의 백그라운드 작업에서 알고리즘을 실행하려면 다음 방법을 사용합니다. "운영()"백그라운드 작업 관리자: 통사론:실행하다(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>)
  • <ИмяМетода>(필수의); 유형: 문자열
    내보낸 프로시저의 이름 또는 서버에서 실행할 수 있는 비전역 공유 모듈의 함수 이름으로 ModuleName.MethodName 형식입니다.
  • <Параметры>(선택 과목); 유형: 배열
    메서드에 전달할 매개변수의 배열입니다. 매개변수의 수와 유형은 메소드의 매개변수와 일치해야 합니다. (구문 도우미에서 더 읽어보기)
  • <Ключ>(선택 과목); 유형: 문자열
    설정된 경우 키는 백그라운드 작업과 동일한 메소드 이름을 가진 활성 백그라운드 작업 키 중에서 고유해야 합니다.
  • <Наименование>(선택 과목); 유형: 문자열.
    과업 설명.

백그라운드 작업 실행 절차

우리의 경우 공통 모듈에 있는 내보내기 절차를 사용합니다. "공통 모듈 서버"(모듈이 서버측이어야 한다고 설명할 필요는 없다고 생각합니다.) Procedure Write InformationFROMProductsInBackground(BackgroundTaskParameter) ExportDataQuery = New Request("SELECT | Products.Reference AS Nomenclature |FROM | Catalog.Nomenclature AS Products"); 선택 = RequestData.Execute().Select(); 동안 Selection.Next() 루프 MZ =RegistersInformation.DataFROMGoods.CreateRecordManager(); MZ.Period = 현재 날짜(); MZ. 명명법 = 선택. 명명법; MZ.Information = BackgroundJobParameter; MZ.Write(); 종료 주기; 절차 종료 백그라운드 작업이 어떻게 작동하는지 보여주기 위해 정보 레지스터에 각 항목에 대한 항목을 생성하고 매개변수는 백그라운드 작업이 실행되는 양식에서 전달됩니다.

백그라운드 작업 시작 명령

실행 프로시저에 전달할 매개변수는 속성에서 가져옵니다. 관리되는 양식("문자열" 유형의 소품):

관리되는 양식 모듈 코드는 다음과 같습니다. &OnClient Procedure RunBackgroundJob(Command) RunBackgroundJobOnServer(); EndProcedure &AtServer 프로시저 StartBackgroundJobAtServer() // 매개변수를 사용하여 배열 구성JobParameters = New Array; 작업매개변수.추가(작업매개변수); // BackgroundTasks.Run(// 공통 모듈의 내보내기 메서드 "CommonModuleServer.WriteInformationFROMProductsInBackground"의 백그라운드 실행 시작, // 매개변수가 있는 배열 전달TaskParameters, // 작업 키 지정 New UniqueIdentifier, // 이름 지정 백그라운드 작업 "우리의 백그라운드 작업"); 종료 절차

실행 결과

백그라운드 작업 실행의 결과로 정보 레지스터(우리가 필요로 하는 것)에 레코드가 생성됩니다.

플랫폼: 1C:엔터프라이즈 8.3, 1C:엔터프라이즈 8.2, 1C:엔터프라이즈 8.1
구성: 모든 구성

2012-11-13
53988

워크플로에는 정기적으로 실행해야 하는 작업이 있습니다(예: 20일 또는 매일). 일반적으로 이를 위해 특별히 회사에서는 필요한 작업을 언제, 어떻게 수행해야 하는지, 누가 프로세스를 제어해야 하는지를 나타내는 특정 규칙이 생성됩니다. 이러한 작업은 규정에 따라 수행되며 규제 대상이라고 합니다.

종종 IT는 모니터링 규칙을 따릅니다. 이 방법은 관리자에게 잘 알려져 있습니다. 특별 프로그램네트워크 인프라 및 서버의 상태를 주기적으로 확인하는 데 사용됩니다. 그들은 SMS 또는 이메일을 통해 감지된 문제에 대해 관리자에게 알립니다.

유사한 시스템이 웹마스터에게 유효하며 사이트의 가용성은 24시간 이내에 확인됩니다. 1C의 "정기 작업" 메커니즘의 도움으로 모니터링 작업과 에서 예약된 정기 작업이 수행됩니다. 자동 모드 1C에서. 이 주제를 더 자세히 고려해 보겠습니다.

예약된 작업 1C

"정규 작업"이라고 하는 Object 1C는 문제가 발생한 후가 아니라 일정에 따라 정보를 처리할 수 있도록 합니다. Configurator에서 예약된 작업은 설정 및 일정을 설정하는 방법입니다. 또한 이후에 1C 엔터프라이즈 모드에서 일정을 변경할 수 있습니다.

파일 데이터베이스를 사용하는 경우 작업이 자동으로 실행되지 않습니다. 프로세스를 시작하려면 1C 엔터프라이즈 모드에서 1C 세션을 시작하고 그 안에서 예약된 작업의 실행을 시작해야 합니다.

모든 일반적인 구성에는 1C가 실행 중일 때 일상적인 작업이 자동으로 수행됨을 명확히 할 수 있는 사용자 설정이 있습니다.

1C의 클라이언트-서버 버전을 사용하면 자동 실행서버의 작업. 예약된 시간에 - 필요한 작업을 수행하는 백그라운드 작업이 시작됩니다. 서버에서 병렬 컴퓨팅의 경우 예약된 1C 작업을 사용하지 않고 1C 언어를 사용하여 프로그램 텍스트에서 백그라운드 작업을 만들 수 있습니다. 이를 위해 1C 서버 관리 콘솔을 사용하여 예약된 작업의 작업을 일시적으로 비활성화할 수 있습니다.

예약된 작업 추가

예약된 작업은 — 구성 관리자 — 일반 — 예약된 작업에 있습니다. 새 "작업"을 추가하고 이름을 제공하십시오. 다음으로 "작업"의 속성으로 이동해야 합니다. 그리고 메서드 이름을 선택합니다. 여기에서 이벤트 구독에서 발생하는 것처럼 핸들러 함수를 지정해야 합니다. 이 기능일반 모듈에 있으며 속성에서 "새" 서버로 표시됩니다. 즉, 필요한 모듈을 미리 추가해야 합니다.

예약된 작업의 속성에 있는 작업 이름을 사용하면 나중에 작업 관리 도구에 표시될 이름을 정의할 수 있습니다. 예약된 작업 속성 기능은 여러 예약된 작업을 그룹화할 수 있는 키입니다. 이 경우 동일한 키 값을 가진 하나의 작업만 동시에 시작할 수 있습니다. 여기서 값은 임의적일 수 있지만 시스템에서 빈 값을 고려하지 않기 때문에 반드시 입력해야 합니다.

일반적인 구성인 Accounting 2.0 에디션에서는 '총계 재계산', '구성 업데이트'와 같은 예정된 작업이 미리 정의되어 있고, '지연된 이동', '데이터 교환'과 같은 예약된 작업은 미리 정의되어 있지 않습니다.

충돌 재시도 - 실행 중인 작업을 다시 시작합니다. 처음에 성공적으로 완료되지 않은 발사를 위해 제공됩니다. 여기에는 다시 시작할 수 있는 횟수와 충돌 후 시간이 표시됩니다.

예약된 작업 1C에 대한 모니터링 및 관리 도구

ITS 디스크에서 찾을 수 있는 표준 처리 "작업 콘솔"은 예약된 작업을 관리하는 역할을 합니다. 이 처리범용 외부 표준 처리 1C입니다. 원칙적으로 구성에 포함되어 있지 않으며 별도로 구매합니다.

도움을 받아 다음 작업을 수행할 수 있습니다.

예약된 작업을 켜고 끕니다.

일정 할당 및 변경

예약된 작업을 수행할 사용자의 이름을 나타냅니다.

완료된 작업(언제, 어떤 결과)과 작업 오류를 확인합니다.

예약된 작업 및 데이터베이스 복사본

서버 1C를 사용할 때 다음 순간이 발생할 수 있습니다.

프로그래밍을 위해서는 작업 데이터베이스의 복사본을 만들어야 합니다.

데이터베이스 사본에서 작업해야 할 필요성(테스트)

어떤 이유로 예약된 작업이 테스트 데이터베이스에서 활성화되지 않았습니다.

자체 데이터베이스에만 연결된 예약된 작업에 의해 작업을 실행하는 동안 이러한 상황 중 하나가 발생한 경우 이는 부정적인 결과를 수반하지 않습니다. 그러나 종종 예약된 작업은 파일 또는 기타 데이터를 저장하고 이메일을 보내고 교환할 수 있습니다. 이 경우 "작업"의 결과와 사본 사이에 혼동이 있을 수 있습니다. 이를 방지하려면 서버 관리 콘솔에서 "작업"을 비활성화해야 합니다.

완료 및 완료되지 않은 일상적인 작업

예약된 작업을 생성할 때 해당 작업을 예약된 작업으로 실행할 수 있는지 확인하는 것이 중요합니다. 서버 모듈이 클라이언트에서 가능한 많은 것을 제공하지 않는다는 것을 아는 것이 중요합니다. 다음으로, 기지 밖의 것을 다루는 작업 - 권리는 여기서 중요한 역할을 합니다. 윈도우 사용자, 작업이 실행되고 있는 하위 항목입니다.

마지막 요소가 특히 중요합니다. 서버에서 모듈이 실행되지 않으면 원칙적으로 작업을 실행할 수 없기 때문입니다. 확인하려면 하나의 작업을 실행하고 결과를 평가해야 합니다.

아마도 모든 1C 8.3 프로그래머는 조만간 일정에 따라 특정 작업의 실행을 설정해야 할 것입니다. 아래에 나는 줄 것이다 상세 설명이러한 메커니즘이 있기를 바랍니다. 유용한 정보초보 프로그래머용 1C. 이것은 사람의 작업이 필요하지 않기 때문에 매우 편리합니다. 예약된 작업은 한 번 구성되고 일정에 따라 작동합니다.

예제가 포함된 자세한 지침은 아래에서 찾을 수 있습니다.

1C에서 예정된 작업 및 백그라운드 작업

  • 예정된 과제주어진 일정에 특정 작업을 수행하도록 설계된 특수 1C 엔터프라이즈 8.3 메커니즘입니다.
  • 백그라운드 작업- 사용자 또는 프로그래머의 참여 없이 고유한 작업을 직접 수행하는 예약된 작업에 의해 생성된 개체 1C 8.2.

예약 및 백그라운드 작업의 메커니즘은 DBMS의 기능 덕분에 클라이언트-서버 작동 모드(SQL)에서 작동합니다. 파일 데이터베이스가 있는 경우 작업도 구성할 수 있지만 방식은 약간 다릅니다.

클라이언트-서버 작동 모드 1C에서 백그라운드 작업 설정

먼저 예약된 작업인 새 메타데이터 개체를 만들어 보겠습니다. 내 작업의 이름을 "LoadingCurrency Rates"로 지정하겠습니다. 이 구성 개체의 속성 팔레트를 고려하십시오.

267개의 1C 비디오 레슨을 무료로 받으십시오:

  • 메소드 이름— 지정된 일정에 따라 백그라운드 작업에서 실행될 프로시저의 경로입니다. 프로시저는 공유 모듈에 있어야 합니다. 표준을 사용하지 말고 직접 만드는 것이 좋습니다. 백그라운드 작업이 서버에서 실행된다는 것을 잊지 마십시오!
  • 용법- 예약된 작업의 사용 표시.
  • 미리 결정된예약된 작업이 미리 정의되었는지 여부를 나타냅니다. 예약된 작업이 데이터베이스에 배치된 직후에 작동하도록 하려면 이 플래그를 지정하십시오. 그렇지 않으면 "작업 콘솔" 처리를 사용하거나 작업을 호출하여 프로그래밍 방식으로 실행해야 합니다.
  • 작업 충돌 시 재시도 횟수— 백그라운드 작업이 오류와 함께 실행된 경우 다시 시작된 횟수입니다.
  • 작업 중단 재시도 간격- 백그라운드 작업이 오류로 완료된 경우 얼마나 자주 다시 시작되는지.

그리고 가장 흥미로운 설정 - 일정:

여기에서 "방법 이름" 필드에 지정된 절차 시작 간격을 설정할 수 있습니다. 내가 설정하자

주목! DBMS 수준에서 예약 및 백그라운드 작업 차단을 비활성화하는 것을 잊지 마십시오!

이는 클라이언트-서버 버전의 관리 유틸리티에서 또는 새 데이터베이스를 생성할 때 수행할 수 있습니다.

작업 1C의 파일 모드에서 예약된 작업 설정

파일 모드에서는 이러한 작업을 설정하는 것이 다소 어렵습니다. 이러한 작업의 경우 1C 프로그램의 별도 세션을 시작해야 합니다. 종종 이것은 세션이 항상 실행되는 "기술적"사용자의 기관에 의해 해결됩니다.

파일 모드에서 예약된 작업의 초기화는 "ExecuteJobProcessing()" 메서드가 실행될 때 발생합니다.

을 위한 특정 사용자다른 방법을 사용하여 실행하도록 이 방법을 구성할 수 있습니다.

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

  • 프로시저 이름— 대기 핸들러로 연결된 프로시저의 이름. 관리되는 응용 프로그램 모듈(일반 응용 프로그램 모듈) 또는 전역 공유 모듈에 대해 내보낸 프로시저의 이름입니다. 프로시저는 클라이언트에 있어야 합니다..
  • 간격— 작업 실행 사이의 시간(초).
  • 한 번- 한 번이든 아니든 작업을 완료하는 방법.

ConnectWaitingHandler, 3600) ;

1C 구성기에서 예약된 작업을 설정하는 방법을 보여주는 2분 길이의 비디오:

1C에서 작업 속도를 높이는 방법: Accounting 8.3(버전 3.0) 또는 예약 및 백그라운드 작업 비활성화

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

이미 1C: Accounting 8.3(버전 3.0)의 새 버전으로 전환한 적이 있는 사용자는 이것이 듀스보다 느려졌다는 것을 알아차렸습니다. 이상한 속도 저하, 하루에 여러 번 끝없는 백그라운드 작업, 아무도 그녀에게 우리 지식 없이 수행하도록 요청하지 않았습니다.

전환 직후 회계사는 1C: Accounting 3.0의 새 버전이 이전 버전에 비해 솔직히 느려진다고 말했습니다! 그리고 일하는 것은 불가능합니다.

나는 그것을 알아내기 시작했고, 정지 및 후속 사용자 불만족의 주요 원인은 일상적인 백그라운드 작업이라는 것을 곧 알게 되었습니다. 대부분의 회계사에게는 필요하지 않지만 기본적으로 활성화되어 있는 작업이 많습니다.

예를 들어, 데이터베이스의 모든 개체에 대해 전체 텍스트(회계사, 겁먹지 마세요) 검색을 수행하지 않는 경우 "텍스트 추출" 작업을 하루에 수백 번 실행해야 하는 이유는 무엇입니까?

또는 통화 거래가 없거나 가끔 수행하는 경우 환율을 지속적으로 다운로드하는 이유는 무엇입니까(그 전에 우리 스스로 환율 다운로드 버튼을 클릭할 수 있음).

1C가 사이트에 연결하고 은행 분류자를 확인하고 업데이트하려는 지속적인 시도에도 동일하게 적용됩니다. 무엇 때문에? BIC로 올바른 은행을 찾지 못하면 나 자신이 버튼을 눌러 분류자를 업데이트할 것입니다.

아래 사항에 대한 방법에 대해.

1. "관리" 섹션으로 이동하여 작업 패널()에서 "유지 관리" 항목을 선택합니다.

2. 열리는 창에서 "일반 및 백그라운드 작업" 항목을 찾아 선택합니다.

3. On 열이 있는 각 작업을 엽니다. 갈까마귀의 가치.

4. "사용"의 선택을 취소하고 "저장 후 닫기" 버튼을 클릭합니다.

5. 포함된 각 작업으로 이 작업을 수행하고 새 버전을 즐기십시오. 일반적으로 제 생각에는 듀스보다 훨씬 낫습니다.

동시에 플랫폼은 사용자가 비활성화한 예약된 작업 중 일부를 계속 켭니다.