일회성 고객. 반복 구매를 위한 세분화

/ 노트북

1C 전문가 인증을 준비하면서 매우 중요하고 글로벌한 두 가지 주제인 차단을 앞두고 위의 개념이 불가능한 DBMS 트랜잭션을 살펴보고 싶습니다.

거래- 논리적으로 연결되어 있고 분할할 수 없는 일련의 작업입니다. 거래는 완전히 완료되거나 전혀 완료되지 않을 수 있습니다. DBMS에서는 트랜잭션을 커밋하기 위해 COMMIT 메소드를 사용합니다.

거래의 일반적인 예는 한 계좌에서 다른 계좌로 자금을 이체하는 것입니다.

  1. 거래를 시작하십시오.
  2. 계좌 번호 123의 자금 금액을 읽습니다.
  3. 계정 잔액 123을 100 루블로 줄입니다.
  4. 계좌 잔액 번호 123 저장;
  5. 계좌 번호 321의 자금 금액을 읽습니다.
  6. 잔고를 100루블씩 늘리세요.
  7. 계정 321에 새로운 금액을 기록합니다.
  8. 트랜잭션을 커밋합니다.

1C에서 267개의 비디오 강의를 무료로 받으세요:

보시다시피 거래가 완전히 완료되지 않으면 의미가 없습니다.

트랜잭션 DBMS의 주요 요구 사항(ACID)

트랜잭션 및 트랜잭션 DBMS에 대한 가장 일반적인 요구 사항 집합 중 하나는 ACID(원자성, 일관성, 격리, 내구성) 집합입니다. 모든 거래에는 다음과 같은 속성이 있어야 합니다.

  • 원자성- 거래를 부분적으로 기록해서는 안 됩니다.
  • 일관성— 시스템은 트랜잭션이 시작되기 전에 일관된 상태에 있고 트랜잭션이 완료된 후에도 일관된 상태를 유지해야 합니다.
  • 격리— 트랜잭션 실행 중에 병렬 트랜잭션이 결과에 영향을 주어서는 안 됩니다.
  • 내구성- 실패한 경우, 성공적으로 완료된 트랜잭션으로 인한 변경 사항은 시스템이 다시 작동된 후에도 저장된 상태로 유지되어야 합니다.

1C 거래

1C 8.3 및 8.2의 트랜잭션은 개발자가 자동으로 생성하고 설명합니다.

TransactionActive() 메서드를 사용하여 트랜잭션이 활성 상태인지 확인할 수 있습니다.

자동 트랜잭션의 예로는 문서 게시 처리, 데이터베이스에 디렉터리 항목 쓰기, 정보 등록 레코드 세트 쓰기 등이 있습니다.

이 기사에는 1C:Enterprise와 DBMS의 트랜잭션 및 잠금의 중요성을 이해하는 데 필요한 이론적 정보가 상당 부분 포함되어 있으며 이는 1C:Enterprise의 성능에 반영됩니다. 이 기사에서는 격리 수준과 동시성 문제를 통해 트랜잭션과 잠금 간의 관계를 널리 설명합니다.
이 문서는 특정 문제를 해결하기 위한 실용적인 조언을 제공하지는 않지만 트랜잭션 및 잠금과 관련된 1C:Enterprise 성능을 최적화하고 개선하는 단계를 설명하는 다음 문서를 이해하기 위한 기초입니다.

생산성은 1C:Enterprise 거래와 직접적인 관련이 있습니다.

"트랜잭션 중 잠금 충돌:
SQL Server용 Microsoft OLE DB 공급자: 잠금 요청 시간 초과 기간이 초과되었습니다..
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, 상태=34, 심각도=10, 기본=1222, 줄=1"

1C:Enterprise에서 이와 유사한 오류가 발생하면 차단과 관련된 성능 문제를 처리하고 있는 것입니다. 이런 종류의 문제를 해결하는 것은 항상 쉬운 일이 아니며 1C:Enterprise 프로그래머나 시스템 관리자 모두가 흔히 갖고 있지 않은 DBMS 및 1C:Enterprise 작동에 대한 특정 특별한 지식이 필요합니다. 다음 시리즈의 기사에서는 이러한 지식의 공백을 메울 것입니다.

거래 1C:기업

트랜잭션은 데이터에 대한 분할할 수 없는 일련의 작업입니다. 전부 아니면 전무 방식으로 작동하며 데이터베이스를 번역합니다.
하나의 적분 상태에서 다른 적분 상태로. 어떤 이유로 트랜잭션 작업 중 하나를 실행할 수 없거나 일종의 시스템 중단이 발생하면 데이터베이스는 트랜잭션이 시작되기 전의 상태로 돌아갑니다(트랜잭션이 롤백됨).

트랜잭션 메커니즘(약어 ACID로 알려짐)에는 여러 가지 요구 사항이 있습니다. 원자성 (원자성), 일관성 (일관성), 격리 (격리), 지속 가능성 (내구성)

원자성 (원자성). 이 요구 사항은 트랜잭션이 작동하는 모든 데이터가 확인되어야 한다는 것입니다( 저지르다) 또는 취소됨( 롤백). 일부 변경사항이 확정되고 일부 변경사항이 취소되는 상황이 있어서는 안 됩니다.

1C:Enterprise의 경우 트랜잭션의 원자성 속성은 데이터의 논리적 무결성을 보장합니다. 예를 들어, 문서를 기록할 때 해당 문서의 헤더 데이터는 하나의 물리적 DBMS 테이블에 기록되고, 테이블 형식 부분의 데이터는 다른 테이블에 기록됩니다. 트랜잭션에 문서를 기록하면 두 물리적 테이블(헤더 및 테이블 부분)의 데이터가 일관되게 유지됩니다(헤더 없이 테이블 부분을 쓰는 것은 불가능하며 그 반대도 마찬가지입니다).

격리 (격리). 거래는 다른 거래와 독립적으로 자율적으로 수행되어야 합니다. 많은 경쟁 트랜잭션이 동시에 실행되는 경우 특정 트랜잭션에 대한 업데이트는 해당 트랜잭션이 커밋될 때까지 다른 트랜잭션에서 숨겨집니다. 성능 및 데이터 무결성 측면에서 가장 최적의 솔루션을 선택할 수 있는 여러 수준의 트랜잭션 격리가 있습니다. 이러한 수준을 구현하는 주요 방법은 잠금을 사용하는 것입니다. 이에 대해서는 이 문서에서 설명합니다.

트랜잭션 로그(SQL Server)

모든 SQL Server 데이터베이스에는 각 트랜잭션에서 발생한 모든 데이터 변경 사항을 기록하는 트랜잭션 로그가 있습니다. 어떤 이유로 트랜잭션이 완료되지 않은 경우(롤백 또는 중단됨) SQL Server는 트랜잭션 로그를 사용하여 모든 트랜잭션 작업을 역순으로 순차적으로 취소합니다. 이는 장기 실행 쓰기 트랜잭션이 오랜 시간이 걸리고 취소됨을 의미합니다.

트랜잭션 로그는 데이터베이스의 중요한 구성 요소이며, 시스템 오류가 발생할 경우 데이터베이스를 일관된 상태로 만드는 데 필요할 수 있습니다. 가능한 결과가 알려지지 않은 한 트랜잭션 로그를 삭제하거나 수정해서는 안 됩니다.

데이터베이스 설정(복구 모델)에 따라 트랜잭션 트랜잭션 로그를 자동 또는 수동(복구 모델=FULL)으로 잘라낼 수 있습니다(오래된 트랜잭션 데이터 삭제). 때때로 시스템 관리자가 로그 정리를 잊어버리고 다음과 같은 오류가 발생할 수 있습니다. 데이터베이스의 트랜잭션 로그가 가득 찼습니다."

물리적으로 MS SQL Server DBMS 트랜잭션 로그는 .LDF 파일에 있습니다(데이터 파일은 .MDF임).

1C:Enterprise 시스템의 거래

1C:Enterprise 시스템은 데이터베이스에 저장된 정보 수정과 관련된 작업을 수행할 때 암시적으로 트랜잭션을 호출합니다. 예를 들어 데이터베이스 데이터 수정과 관련된 개체 및 레코드 집합 모듈에 있는 모든 이벤트 처리기는 트랜잭션에서 호출됩니다.

암시적 트랜잭션의 예: 양식에서 문서를 게시할 때의 이벤트 순서

실제로 다음 실험을 수행하여 1C:Enterprise 개체 레코드(예: 문서)가 TV 트랜잭션인지 확인할 수 있습니다. 게시하지 않을 것임을 사전에 통보합니다(예: 대량의 상품을 삭제해야 함을 표시). 문서 게시 단계에서 잔액을 확인하기 때문에 "Processing Posting()" 핸들러에서 문서 자체가 이미 데이터베이스에 기록되어 있어야 합니다. 문서는 "BeforeWriting()"과 "BeforeWriting()" 사이에 먼저 작성되었기 때문입니다. "OnWriting()" 이벤트. 그러나 오류 메시지가 표시된 후(필요한 수량이 누락됨) 문서가 데이터베이스에 기록되지 않은 것을 알 수 있습니다(수정 플래그 "*"가 남아 있고 문서가 목록에 표시되지 않음). 이는 오류가 발생한 후 트랜잭션이 롤백(롤백)되기 때문에 발생합니다.

명시적 트랜잭션 호출 사용

방법 트랜잭션 시작()거래를 개시할 수 있습니다. 후속 명령문에 의해 수행된 데이터베이스 정보의 모든 변경사항은 전체적으로 승인되거나 완전히 폐기될 수 있습니다. 변경 사항을 수락하려면 다음 메소드를 사용하십시오. 커밋트랜잭션().
열려 있는 트랜잭션의 모든 변경 사항을 취소하려면 다음 메소드를 사용하세요. 취소거래().

트랜잭션 격리 정도는 격리 수준에 따라 결정됩니다. 최고 수준의 격리는 동시에 실행되는 다른 트랜잭션으로부터 트랜잭션의 완전한 독립성을 보장하지만 동시성 수준도 크게 감소합니다. 즉, 다른 트랜잭션은 현재 트랜잭션에서 사용되는 리소스에 액세스할 때까지 기다려야 합니다. 가장 낮은 수준의 격리는 그 반대입니다. 최대 수준의 병렬 작업을 제공하여 다른 트랜잭션이 현재 트랜잭션에 심각한 영향을 미치고 병렬 액세스 문제가 발생하게 됩니다. 다중 사용자 시스템에서는 동시성(리소스에 대한 동시 액세스)과 트랜잭션 격리 수준 간에 균형을 맞춰야 합니다. SQL 언어 표준은 설정된 경우 특정 동시성 문제를 방지하는 격리 수준을 정의합니다.

동시성 문제

트랜잭션을 병렬로 실행할 때 다음과 같은 문제가 발생할 수 있습니다.
- 업데이트 손실(eng. 업데이트 손실) - 하나의 데이터 블록이 다른 트랜잭션에 의해 동시에 변경되면 변경 사항 중 하나가 손실됩니다.
- "더러운" 독서(eng. 더티 읽기) - 나중에 확인되지 않은 트랜잭션에 의해 추가되거나 변경된 데이터 읽기(롤백)
- 비반복 읽기(영어 비반복 읽기) - 한 트랜잭션 내에서 다시 읽으면 이전에 읽은 데이터가 변경되는 것으로 나타납니다.
- 환상의 독서(영어 팬텀 읽기) - 하나의 트랜잭션이 실행되는 동안 동일한 기준에 따라 여러 행을 여러 번 선택합니다. 이러한 선택 사이에 또 ​​다른 트랜잭션이 첫 번째 트랜잭션의 선택 기준에 해당하는 행을 추가하거나 삭제하고 성공적으로 종료됩니다. 결과적으로 첫 번째 트랜잭션에서 동일한 선택이 다른 행 집합을 생성하는 것으로 나타났습니다.

이러한 문제가 발생할 수 있는 상황을 고려해 보겠습니다.

업데이트 손실

더러운 독서

데이터를 쓸 때 이전 문제가 발생하면 한 트랜잭션이 다른 동시 트랜잭션이 작업 중인 데이터를 읽으려고 할 때 더티 읽기가 가능합니다.
다음 SQL 문이 실행되는 서로 다른 애플리케이션에서 열린 두 개의 트랜잭션이 있다고 가정합니다.

비반복 읽기

다음 SQL 문이 실행되는 서로 다른 애플리케이션에서 열린 두 개의 트랜잭션이 있다고 가정합니다.

거래 1 거래 2
f1=1인 경우 tbl1에서 f2를 선택합니다.
업데이트 tbl1 SET f2=f2+1 WHERE f1=1;
f1=1인 경우 tbl1에서 f2를 선택합니다.

Transaction2에서 필드 f2의 값이 선택된 다음 Transaction1에서 필드 f2의 값이 변경됩니다. 트랜잭션 1에서 f2 필드의 값을 다시 선택하려고 하면 다른 결과를 얻게 됩니다. 이러한 상황은 부분적으로 수정하여 데이터베이스에 다시 쓰려는 의도로 데이터를 읽을 때 특히 허용되지 않습니다.

환상의 독서

다음 SQL 문이 실행되는 서로 다른 애플리케이션에서 열린 두 개의 트랜잭션이 있다고 가정합니다.

거래 1 거래 2
tbl1에서 SUM(f2)을 선택합니다.
INSERT INTO tbl1(f1,f2) 값(15,20);
tbl1에서 SUM(f2)을 선택합니다.

Transaction2는 f2 필드의 모든 값을 사용하는 SQL 문을 실행합니다. 그런 다음 새 행이 트랜잭션 1에 삽입되어 SQL 문이 트랜잭션 2에서 다시 실행되어 다른 결과가 생성됩니다. 이러한 상황을 가상 삽입이라고 하며 비반복 읽기의 특별한 경우입니다.

트랜잭션 격리 수준

격리 수준은 병렬로 실행되는 다른 트랜잭션으로부터 해당 트랜잭션의 독립성을 결정하는 트랜잭션의 속성입니다.

표준은 다음과 같은 네 가지 격리 수준을 도입하며 이를 사용하면 특정 동시성 문제를 방지할 수 있습니다.
- READ_UNCOMMITTED- 고정되지 않은 독서. 이 격리 수준은 "업데이트 손실" 문제를 해결하지만 트랜잭션 커밋("더티 읽기" 문제)에 관계없이 동일한 쿼리에 대해 다른 결과를 얻을 수 있습니다. 이는 DBMS에서 사용되는 가장 낮은 격리 수준이며 최대 동시성을 제공합니다.
- READ_COMMITTED- 고정 독서. 이 격리 수준은 "더티 읽기" 문제를 방지하지만 트랜잭션의 동일한 요청에 대해 다른 결과를 얻을 수 있도록 합니다("반복되지 않는 읽기" 가능성은 유지됩니다).
- REPEATABLE_READ- 반복해서 읽는다. 이 격리 수준은 "반복되지 않는 읽기" 문제를 해결합니다. 이 수준에서는 "가상 삽입" 충돌 상황을 초래하는 INSERT 문을 실행할 수 있습니다. 이 수준은 SQL 문 실행이 새 행 추가의 영향을 받지 않는 경우 유용합니다.
- 직렬화 가능- 순차적 실행. 세 번째 수준. 이 수준은 위에서 설명한 모든 동시성 문제의 방지를 보장하지만, 트랜잭션 처리(동일한 리소스에 대한 액세스 포함)가 순차적으로만 수행되므로 그에 따라 가장 낮은 수준의 동시성이 관찰됩니다.

테이블 형식의 병렬 트랜잭션 액세스 및 격리 수준 문제에 대한 솔루션은 다음과 같이 설명할 수 있습니다("+" - 문제가 제거됨).

동시성 문제 및 격리 수준 환상의 독서 비반복 읽기 더러운 독서 업데이트 손실
직렬화 가능 + + + +
REPEATABLE_READ - + + +
READ_COMMITTED - - + +
READ_UNCOMMITTED - - - +

SQL Server 수준에서는 격리 수준을 직접 설정할 수 있습니다.
예를 들어 지시문을 통해 전체 세션에 대해
트랜잭션 격리 수준을 직렬화 가능으로 설정

WITH 구문을 사용하는 특정 쿼리의 경우
직렬화가 가능한 계약에서 이름 선택

현재 세션에 설정된 격리 수준을 확인하세요.
sys.dm_exec_sessions에서 transaction_isolation_level을 선택합니다.
여기서 session_id = @@spid

데이터 잠금 관리의 자동 모드(8.0에서 사용된 이전 모드)는 트랜잭션 격리 수준을 사용합니다. REPEATABLE_READ그리고 직렬화 가능데이터베이스 관리 시스템에서 제공합니다. 이러한 트랜잭션 격리 수준은 개발자의 추가 잠금 관리 노력 없이도 일관되고 일관된 데이터 읽기를 보장합니다.

관리형 잠금 모드(버전 8.1부터)를 사용하면 더 낮은 수준의 데이터베이스 트랜잭션 격리를 사용하여 클라이언트-서버 모드에서 사용자 동시성을 높일 수 있습니다( READ_COMMITTED); 기본적으로 동일한 격리 수준이 설정됩니다.
그리고 MS SQL 서버에서. 트랜잭션에 데이터를 쓸 때 내장된 언어 개체는 필요한 데이터를 자동으로 잠급니다. 그러나 읽을 때 개발자는 비즈니스 논리가 트랜잭션에서 일관되고 일관된 데이터 읽기를 요구하는 경우 데이터 잠금을 관리해야 합니다.

버전 8.3의 경우 관리 모드는 격리 수준을 사용합니다. READ_COMMITTED_SNAPSHOT.

결론

트랜잭션은 1C:Enterprise에서 적극적으로 사용되는 필수 DBMS 메커니즘입니다. 동시성 문제를 해결하기 위해 DBMS의 트랜잭션은 다양한 격리 수준으로 수행될 수 있습니다.

1C:Enterprise에서 사용되는 격리 수준 READ_COMMITTED"업데이트 손실" 및 "더티 읽기" 문제를 해결합니다. 변경된 데이터는 읽기 및 수정 모두에 대해 트랜잭션이 끝날 때까지 잠겨 있습니다(배타적 잠금이 적용됨).

격리 수준 READ_COMMITTED"비반복 읽기" 및 "팬텀 읽기" 문제는 해결되지 않습니다. 이러한 문제를 해결하려면 프로그래밍 방식으로 설치된 1C:Enterprise 제어 잠금을 사용해야 합니다.

8.3에서는 보다 유연한 격리 수준을 사용합니다. READ_COMMITTED_SNAPSHOT.

2017-08-12

OM 개체를 유지 관리하기 위한 사용자 정의 트랜잭션을 만듭니다.

소개

많은 기능적 SAP 컨설턴트가 조직 관리 개체를 유지 관리하는 거래에 직면했다고 생각합니다. 즉, 거래 PP01

이 트랜잭션을 사용하면 자동화되는 비즈니스 프로세스에 사용되는 개체 유형에 대한 조직 관리 정보 유형을 관리할 수 있는 기능이 사용자에게 제공됩니다. 이 트랜잭션은 모든 유형의 조직 관리 개체에 대한 작업을 위한 단일 진입점으로 사용되는 경우가 많지만 실제로는 그다지 좋은 방법이 아닙니다. 글쎄요, 아니면 그다지 편리하지 않습니다. 확실히 일반적이지만. 다음으로 대안이 무엇인지 말씀 드리겠습니다.

테이블 T77S0, 그룹 "TCODE"

OM 개체 개체를 설정할 때 아마도 다음 경로에 있는 설정을 터치하게 될 것입니다. 에스프로:

IMG: 인사 관리 -> 조직 관리 -> 기본 설정 -> 데이터 모델 강화 -> 객체 유형 유지 관리

여기서는 새 OM 개체를 생성하고 해당 개체의 이름을 정하고 아이콘을 선택하고 일부 설정을 정의합니다... 현재 우리는 "노드"에 관심이 있습니다. 객체 유형 키 + 트랜잭션"

설정 보기의 일부가 눈앞에 열립니다. T77S0필터링된 그룹 값 포함

그룹에 주목할 가치가 있습니다 TCODE여기서 자세히 살펴보면 작업해야 할 가능성이 가장 높은 트랜잭션의 기술 이름을 찾을 수 있습니다. 게다가 칼럼에는 특정 트랜잭션이 의도된 객체 유형을 나타냅니다.

이러한 거래의 특별한 점은 무엇입니까?

특정 유형의 객체를 유지하도록 설계된 트랜잭션을 사용하면 더 이상 트랜잭션에서 기본적으로 사용 가능한 바로 이러한 유형의 객체를 선택할 필요가 없습니다. PP01. 즉, 예를 들어 거래를 시작함으로써 PO09,즉시 다음과 같은 개체로 작업을 시작합니다.

자신의 조직 관리 개체에 대한 새 트랜잭션 생성

이전 게시물 중 하나에서 새 OM 개체를 만들고 구조 검색을 추가하는 방법에 대해 설명했습니다.

나는 이 자료에서 멀리 가지 않을 것이다. 데모로서 객체를 유지하기 위해 새 트랜잭션을 생성하겠습니다. 91.

T77S0에서 새 객체 유형 정의

설정 보기에서 향후 거래의 이름을 정의하세요. T77S0

이 경우 "ZP91M" 값은 객체를 유지하기 위한 향후 트랜잭션의 이름입니다. 91 . 변경 사항을 저장합니다.

OM 객체를 유지하기 위해 새 트랜잭션 생성

거래를 통해 SE93객체를 유지하기 위해 트랜잭션을 생성합니다. 다음은 해당 거래를 생성하기 위해 수행해야 하는 일련의 작업이 포함된 비디오 조각입니다.

필드에 사용된 값을 기록해 두십시오. 프로그램, 화면 번호,승인 객체. 이제 새로운 거래를 시작해 보세요

사용자는 특정 유형의 개체로만 작업할 수 있는 기회가 있으며, 이는 어떤 의미에서는 편리하다고 할 수 있으며 원하는 경우 원하는 개체를 선택하기 위한 추가 작업을 최소화할 수 있습니다.

2017-10-31

다음을 사용하여 거래에 대한 변형을 생성하는 방법 SHD0?

질문에 대한 설명

내 노트 중 하나에서 나는 거래에서 필드를 숨기기 위해 수행해야 하는 일련의 작업을 설명했습니다. 이 작업을 수행할 수 있는 메커니즘은 많은 컨설턴트에게 잘 알려져 있습니다. 이 메커니즘의 이름은 트랜잭션이라는 점을 상기시켜 드리겠습니다. SHD0.

이 노트에서는 요구 사항을 구현하기 위해 수행해야 하는 일련의 작업을 고려하고 싶습니다.

  • 해당 정보 유형에 대해 동일한 수준의 권한을 갖고 있는 경우 해당 정보 유형을 사용하는 두 사용자 그룹이 해당 정보 유형의 필드에 대해 별도로 액세스할 수 있습니다. 즉, 일부 사용자는 일부 필드를 사용할 수 있고 다른 사용자는 다른 필드를 사용할 수 있습니다.

소스 데이터에서: 사용자가 작업하는 트랜잭션은 다음과 같습니다. PA30. 이 경우 infotype은 중요하지 않습니다. 특히 제 예에서는 HR 관리 정보 유형을 사용하겠습니다.

정보 유형이 좋은 예입니다. 0002 - "개인 데이터"

소위 권력 경계 문제를 다음과 같이 공식화합시다.

  • 필드 3월현황 Infotype 0002 "개인 데이터"는 편집할 수 없도록 설정해야 합니다(즉, 읽기 전용).
  • 필드 현재 결혼 상태의 유효일부터 Infotype 0002 "개인 데이터"는 숨겨야 합니다.

문제 해결

위에 제기된 문제를 해결하려면 몇 가지 순차적인 작업을 수행해야 하며 이에 대해서는 아래에서 설명합니다. 간단히:

  1. 정보 유형 필드에 대한 액세스 수준을 변경해야 하는 사용자 그룹에 대해 별도의 트랜잭션을 생성합니다.
  2. 필드의 가시성을 구성할 화면 변형을 생성한 다음 생성된 트랜잭션 변형에 화면 변형을 할당합니다(너무 어색했지만 실제로는 복잡하지 않았습니다).
  3. 이 트랜잭션에 대한 변형을 생성하여 적절한 필드 가시성이 구성된 화면 변형을 할당합니다.
  4. 트랜잭션을 포함하고 이를 사용자에게 할당할 사용자 정의 역할을 생성합니다.
  5. 테스트를 수행합니다.

1. 새로운 거래 생성

주요 거래이기 때문에 PA30, 이를 기초로 삼아 새 것으로 복사해 보겠습니다. 거래를 통해 가능합니다 SE93

테이블에 T588A새 레코드에 대해 트랜잭션 코드 PA30을 사용하여 기존 레코드를 복사하고 새 트랜잭션을 다시 시작해 보세요.

거래가 성공적으로 시작됩니다. 다음 요점으로 넘어 갑시다.

2. 새 거래에 대한 변형 생성

infotype 필드에 대한 액세스 수준을 정의하는 새 트랜잭션에 대한 변형을 만듭니다. 필드의 액세스 수준을 변경해야 한다는 점을 상기시켜 드리겠습니다." 3월현황" 그리고 " 현재 결혼 상태의 날짜부터 유효합니다.". 이러한 작업은 트랜잭션에서 수행되어야 합니다. SHD0.

현장에서 거래 코드새 트랜잭션의 이름을 나타냅니다(포인트 #1. 새 트랜잭션 생성 참조).

2.1 화면 변형 생성

"화면 변형" 탭에서 infotype 0002에 사용되는 화면 변형을 생성해야 합니다. 이 변형에서는 필드에 대해 원하는 표시 규칙을 적용해야 합니다. 알아야 할 것은 해당 모듈 풀과 화면 번호뿐입니다. (이를 위해서는 infotype 편집 화면에서 메뉴에서 선택합니다. 시스템 -> 상태)

다음 비디오 조각은 화면 변형을 생성하기 위해 수행해야 하는 일련의 작업을 보여줍니다.

화면 옵션이 생성되었습니다. 아직 변화가 관찰되지 않았습니다.

2.2 거래 변형에 화면 변형 할당

생성된 화면 변형을 거래 변형에 할당한 다음 생성된 거래 변형을 활성화합니다.

2.3 테스트

테스트 스크립트는 매우 간단합니다.

  • 거래 시작 PA30, 직원 번호를 선택하고 편집할 정보 유형을 엽니다. 0002 위 필드가 변경 없이 표시되는지 확인하세요.
  • 거래 시작 ZPA30, 정확히 동일한 작업 순서를 수행합니다.

차이점은 명백합니다. 이는 작업이 성공적으로 완료되었음을 의미합니다.

'트랜잭션'이라는 단어가 우리에게 등장한 것은 90년대 후반이 되어서였습니다. 이는 현대 은행 시스템이 발전하고 일반 컴퓨터 붐이 일어나는 시기였습니다. 그런 다음이 개념은 구어체 및 문학 연설에 나타나기 시작했습니다. 그리고 일반 사람들은 프로그래머와 문제를 거의 겪지 않지만 모든 사람은 은행을 상대해야 합니다. 계좌 상태 확인부터 복잡한 은행 내 결제 이체까지 거의 모든 작업이 거래로 간주될 수 있습니다. 이 단어는 "돈"이나 "신용"과 같은 개념보다 은행 업무에 더 자주 사용됩니다. 그러나 은행 고객 중 그 본질을 완전히 이해하는 사람은 거의 없습니다.

단어의 의미

트랜잭션은 특정 기간 동안 개체의 상호 작용을 위한 특정 절차입니다. 이러한 절차는 프로그래머에 의해 구성되었습니다. 그들은 명확한 절차적 성격을 가지고 있습니다. 모든 거래는 세 가지 필수 구성 요소의 조합입니다.

  • 요구;
  • 실행;
  • 보고서.

일반적인 트랜잭션의 프로세스는 상당히 복잡할 수 있지만 이 절차의 결과에는 두 가지 상태만 있습니다. 즉, 거래가 완료될 수도 있고 완료되지 않을 수도 있습니다.

은행 거래

"거래"라는 단어는 무엇을 의미합니까? 발생하면 어떤 프로세스가 발생합니까? 정확하게 말하면 거래는 자금 이동과 관련된 모든 은행 업무입니다. 그러나 이 용어는 전자 송장을 사용할 때 가장 자주 사용됩니다. 또는 은행 카드를 사용한 거래를 직접 가리킵니다.

“거래를 한다”라 함은 전자계좌를 이용한 거래를 말한다. 여기에는 공과금 납부, 플라스틱 카드를 사용하여 상점에서 물건 구매, 급여 및 장학금 입금, 기타 여러 금전 거래가 포함됩니다.

거래 유형

은행업무에는 두 가지 유형의 업무가 있습니다.

  1. 온라인 거래는 실시간으로 은행센터에 접속해 비현금을 조작하는 행위다. 가장 확실한 예는 터미널 작업입니다.
  2. 오프라인 거래는 참가자 간의 직접적인 접촉 없이 은행 거래를 실행하는 것입니다. 예를 들어, 직원의 급여를 인정합니다. 자금은 조직의 계좌에서 인출되며 직원은 당좌 계좌 잔액 보충에 대한 알림만 받습니다.

은행 거래의 본질을 더 잘 이해하기 위해 몇 가지 옵션을 고려해 보겠습니다.

자금 이체

이러한 작업의 가장 간단한 예는 자신의 계좌 간 이체, 돈 수령 또는 입금, ATM 또는 단말기를 통한 현금 입금입니다. 이러한 거래는 일반적으로 수수료 없이 은행에서 수행됩니다. 서로 다른 두 사람 간의 이체의 경우 상황은 더 복잡합니다. 동일한 금융 기관 내에서 이체 수수료는 3%에 달할 수 있습니다. 국내의 다른 은행에 대해 이야기하고 있다면 수수료는 훨씬 더 높아질 것입니다. 가장 비싼 송금은 외국 기관으로의 송금입니다. 왜냐하면 수수료 외에 소위 거래 수수료를 부과하는 경우가 많기 때문입니다.

번역

한 계정에서 다른 계정으로 이체하면 때때로 성가신 오류가 발생합니다. 수취인의 성 철자가 조금이라도 부정확하면 전자 보안 시스템의 조작이 차단될 수 있습니다. 자동 거래로 문제가 해결됩니다. 예를 들어 은행 카드 번호를 사용하여 수취인의 잔액에 자금이 입금되는 경우에 이런 일이 발생합니다. 이렇게 하면 오류 가능성이 크게 줄어듭니다. 거래가 재설정되면 해당 금액은 소유자의 잔액으로 반환됩니다. 사실, 이 일이 달력 기준으로 10일에서 15일 이내에 발생합니다.

보내는 사람이 은행 계좌가 없는 경우에는 송금 서비스를 이용하실 수 있습니다. 가장 유명한 국제 운영자로는 MoneyGram, Western Union, Anelik, Contact 등이 있습니다. 이러한 작업의 주요 장점은 높은 트랜잭션 속도입니다. 가장 큰 단점은 다소 높은 수수료입니다.

거래가 실패하면 어떻게 해야 하나요?

자금 이체와 관련하여 비정상적인 상황이 발생한 경우 즉시 은행이나 터미널 운영자에게 이를 신고해야 합니다. 이 경우 송금인의 잔액으로 자금이 반환되거나 원래 목적에 맞게 사용될 가능성이 높습니다.
다음과 같은 경우 교환원이 도움을 드릴 것입니다:

  • 거래 도중 오류가 발생했지만(프로그램이 정지되고 전기가 끊김) 돈은 이미 사라졌습니다. 핫라인으로 전화하면 귀하의 요청이 녹음됩니다. 오류를 확인하고 제거한 후 전문가가 수동으로 작업을 완료할 수 있습니다.
  • 단말기나 ATM에서 거래 영수증을 발행하지 않았습니다. 그 이유는 사소한 것일 수 있습니다. 기계에 금전 등록기 테이프가 없기 때문입니다. 교환원에게 연락하시면 영수증 사본을 받으실 수 있습니다. 일반적으로 지정된 이메일 주소로 전송됩니다.
  • 지정된 세부정보에 오류가 있습니다. 돈은 없어졌지만 받는 사람은 돈을 본 적이 없습니다.
    교환원은 이 문제를 해결하는 데 도움을 줄 수 있습니다. 예를 들어 수취인의 계좌 번호에서 오류를 찾습니다. 이 경우 보안 규칙 때문에 돈이 고객에게 전달되지 않습니다. 이러한 자금은 은행에서 인출되지 않으며 특별 임시 계좌에 10일 동안 보관됩니다. 송금인이 정시에 금융 기관에 연락하여 거래 시간, 송금 금액을 표시하고 몇 가지 질문에 답변하면 금액이 차단 해제됩니다. 거래 수수료를 공제한 후 해당 금액은 송금인의 잔액으로 반환됩니다.

보시다시피 은행 거래는 우리 각자의 삶에서 흥미롭고 필요한 절차입니다. 다음번에는 간단하게 이체하거나 카드에서 돈을 인출할 때 이런 조작이 우리 삶을 얼마나 쉽게 만들어 주는지 생각해 보세요. 결국, 지금쯤이면 당신은 이미 트랜잭션이 무엇인지 알고 있을 것입니다. 그 단어의 의미는 당신에게 비밀이 아닙니다.

많은 사람들이 거래가 무엇인지 궁금해합니다. 결국, 이 단어는 항상 등장합니다. 특히 사람이 돈을 가지고 일하는 경우에는 더욱 그렇습니다. 전 세계적으로 살펴보면 시스템 변경이 이루어진 후 데이터 교환 작업의 순서입니다.

이 용어의 가장 일반적인 사용은 돈을 이체하고 물건을 구매할 때입니다. 다음과 같을 수 있습니다.

  • ATM이나 은행 지점에서 현금 인출
  • 증권 거래소에서 특정 수의 주식을 구매합니다.
  • 매장에서 카드결제.

작업이 확인되고 금액이 전송되면 거래가 성공적으로 완료된 것으로 간주됩니다. 기관의 구매자 또는 고객의 계좌에서 돈이 인출되고 상품이 개인에게 양도됩니다. 거래는 개인의 계좌에서 서비스를 제공하는 사람에게 자발적으로 돈을 이체하는 방법이라고 말할 수 있습니다. 모든 거래는 금융기관의 데이터베이스에 기록됩니다. 수술의 성공 여부는 중요하지 않습니다. 예를 들어, 은행 카드에 자금이 잘못 입금된 경우입니다.

하지만 거래의 개념이 금융분야에만 적용된다고 생각하지 마세요. IT 회사에서는 특히 데이터베이스 프로그래밍과 관련하여 이 용어를 자주 사용합니다. 이 경우, 이 용어는 데이터베이스에 대한 특정 변경 순서를 의미합니다.

여기에는 두 가지 신청 옵션도 있습니다. 작업이 승인되면 "Commit"이 할당되지만 어떤 이유로 거부가 발생하면 "Rollback"이 할당됩니다. 대부분의 경우 이는 숫자 중 하나를 0으로 나누고 싶거나 이전에 데이터베이스에 입력한 내용과 일치하지 않는 금액을 입력했을 때 발생합니다.


거래를 사용하는 가장 일반적인 경우는 쇼핑 센터, 상점 또는 금융 기관 영역의 은행에서 결제 카드를 사용하여 결제하는 것입니다. 작업은 소유자가 상품 대금을 지불하기를 원할 때 시작되며, 그 후 금전 등록기를 담당하는 직원에게 은행 카드를 제공합니다.

다음으로, 카드는 후속 작업을 확인하기만 하면 되는 특수 터미널에 배치됩니다. 이렇게 하려면 데이터와 미리 결정된 PIN 코드를 입력해야 합니다. 다음으로 단말기는 입력된 비밀번호가 올바른지 아니면 거부해야 하는지 결정합니다. 어떤 경우에도 거래에 대한 정보는 특정 데이터베이스에 기록됩니다. 이는 이 카드를 서비스하는 결제 시스템으로 데이터가 전송되기 때문에 발생합니다. 그리고 이미 이 단계에서 입력된 데이터의 신뢰성에 대한 완전한 검증이 이루어집니다. 결국, 지불 전표에 있을 수도 있고 없을 수도 있습니다.

그러나 모든 것이 정확하면 거래가 성공적으로 완료되고 발행 은행으로 바로 전송됩니다. 이번 결제카드 제작은 그를 통해 이뤄졌다. 그런 다음 거래에 대한 정보가 프레싱 센터로 전송되어 결제 시스템 사용 권한에 대한 정보가 설정됩니다.

단계 중 하나에서 오류나 데이터 불일치가 감지되면 거래가 단순히 거부된다는 점은 주목할 가치가 있습니다.

응용

다양한 적용 영역에서 "트랜잭션"이라는 단어에 대해 다양한 표기법이 사용됩니다.

  • 경제학은 한 흐름 계정에서 다른 흐름 계정으로 자금을 이체하는 것을 의미합니다. 이는 특히 구매 및 판매 거래에 해당됩니다.
  • ATM을 이용한 운영으로 인해 은행 카드나 계좌 번호를 사용하여 현금을 받은 고객에게 현금이 발행됩니다.
  • 정치적 설명은 두 당사자 간의 상호 이익이 되는 조건에 대한 합의를 수반합니다.

대부분은 은행이 발행한 카드에 따라 다릅니다. 직불카드와 신용카드는 다르게 취급됩니다. 카드를 발급한 금융기관이 설정한 로그인 우선순위도 직접적인 영향을 미칩니다. 이러한 요소에 따라 작업 속도가 달라집니다.

소액의 거래가 더 단순해 보입니다. 매개변수에 특정 설정을 지정한 경우 거래 중에 비밀번호를 입력하지 않을 수 있습니다. 이는 자동으로 수행되며 계정에 충분한 금액이 있으면 상각되고 작업에 대한 정보가 데이터베이스에 기록됩니다.

금융과 전혀 관련이 없는 분야라도 '거래'라는 개념으로 운영된다. 심리학을 예로 들겠습니다. 이 분야의 전문가들은 거래를 두 개인 간의 대화 중에 발생하는 자극의 교환이라고 부릅니다. 이 응용 프로그램은 다소 믿기지 않지만 존재할 권리가 있습니다. 이제 거래가 무엇인지 알았습니다.

현대 사회에서는 거래 없이는 불가능하기 때문에 최소한 위의 거래 정보를 알아야합니다. 이는 여전히 최소한의 아이디어가 있어야 함을 의미합니다.

© 2024 ermake.ru - PC 수리 정보 - 정보 포털