1s 8 표 부분 채우기. 외부 처리 생성

1C의 많은 개체에 대해 표 형식 부분이 있습니다.

  • 참고 도서
  • 그 문서들
  • 보고 및 처리
  • 계정과목표
  • 특성 유형 계획
  • 계산 유형 계획
  • 비즈니스 프로세스 및 작업

테이블 형식 부품을 사용하면 보관할 수 있습니다. 무제한 수량하나의 객체에 속하는 구조화된 정보.

표 형식 부분으로 작업하는 몇 가지 방법을 살펴보겠습니다.

표 부분을 우회하는 방법

루프를 사용하여 표 형식 부분을 횡단할 수 있습니다. 모두를 위해

TabularPart 루프의 각 행에 대해

보고서(String.TablePartAttribute) ;

엔드 사이클 ;

변수에 대한 각 반복에서 표 형식 부분의 다음 줄이 전송됩니다. 문자열 속성 값은 표현식으로 얻을 수 있습니다. 문자열.속성 이름.

표 섹션에서 선택한 행을 가져오고 우회하는 방법

form 요소는 개체의 표 형식 부분에서 정보를 표시하는 데 사용됩니다. 테이블 필드. 테이블 필드에서 여러 행을 선택하는 기능을 활성화하려면 값을 설정해야 합니다. 다수의그것의 재산에 선택 모드.

선택한 행 목록을 얻으려면 다음 코드를 사용하십시오.

루프는 선택한 라인을 반복하는 데 사용됩니다. 모두를 위해:

SelectedLines = FormElements. 테이블 필드 이름. 선택된 라인;

선택한 행 루프의 각 행에 대해

//루프 내용

엔드 사이클 ;

테이블 형식 부분(테이블 필드)의 행을 프로그래밍 방식으로 선택하고 선택을 제거하는 방법

테이블 필드의 행을 프로그래밍 방식으로 선택 해제하려면 다음을 수행합니다.

요소폼. 테이블 필드 이름. 선택된 문자열. 분명한() ;

테이블 필드의 모든 행을 프로그래밍 방식으로 선택하려면 다음을 수행합니다.

TabularPart 루프의 각 CurrentRow에 대해
요소폼. 테이블 필드 이름. 선택된 라인. 추가(현재 행) ;
엔드 사이클 ;

스프레드시트를 지우는 방법

표 형식 부분. 분명한() ;

표 섹션의 현재 행을 가져오는 방법

현재 라인은 사용자가 이 순간커서가 위치합니다. 이를 얻으려면 표 형식 부분과 연결된 양식의 컨트롤을 참조해야 합니다.

을 위한 일반 양식코드는 다음과 같습니다.

요소폼. 테이블 필드 이름. 현재의 데이터;

관리되는 양식의 경우:

집단. 테이블 필드 이름. 현재의 데이터;

스프레드시트에 새 행을 추가하는 방법

표 섹션 끝에 새 줄 추가:

NewRow = TablePart. 추가하다() ;

표 섹션의 아무 곳에나 새 줄 추가(이후 줄은 이동됨):

NewRow = TablePart. 붙여넣기(색인)
//색인 - 추가된 줄의 번호입니다. 줄 번호는 0부터 시작합니다.

새로운 라인. 속성1 = "값" ;

테이블 행의 세부 정보를 프로그래밍 방식으로 채우는 방법

사용자가 추가한 테이블 섹션 행의 세부 정보를 프로그래밍 방식으로 입력해야 하는 경우 테이블 섹션의 이벤트 핸들러를 사용해야 합니다. 시작 편집.

핸들러에 의해 생성된 프로시저에는 세 개의 매개변수가 있습니다.

  • 요소- 컨트롤을 포함 테이블필드.
  • 새로운 라인- 부울. 값 포함 진실, 표 섹션의 새 행이 추가되는 경우 거짓말하다,사용자가 이미 존재하는 행 편집을 시작한 경우.
  • 사자- 부울. 값 포함 진실사용자가 문자열을 복사하는 경우 거짓말하다다른 경우에.

예를 들어 보십시오. 표 섹션의 세부 정보를 채워야 한다고 가정해 보겠습니다. 계정계정, 새 줄이 추가되는 경우. 기존 행을 편집할 때 원장 계정을 변경할 필요가 없습니다.

프로시저 TabularPartAt EditingStart(요소, NewRow, 복사)

//사용자가 기존 행을 편집하는 경우 아무 것도 하지 않음
NewString이 아닌 경우
반품;
종료하면 ;

//문자열이 새로운 경우 계정을 설정합니다.
텍스트 문자열 = 요소. 현재의 데이터; //테이블 섹션의 현재 행을 수신했습니다.
텍스트링. AccountAccount = 계정과목표. 자립. 원하는 계정;
종료 절차

다시 안녕.

이전에 Payroll 및 HR 3.0 구성의 예를 사용하여 관리되는 응용 프로그램에서 외부 인쇄 가능 항목을 만드는 방법에 대해 이야기했습니다. 이제 관리되는 충전 처리 인터페이스에서 만드는 방법을 알려 드리겠습니다. 표 부분.

왜냐하면 우리는 이미 초기화의 기본 사항에 대해 대략적으로 알고 있습니다. 나는 이것에 초점을 맞추지 않을 것입니다. 잊어버린 것이 있다면 을 참조하십시오. 물론 약간의 차이가 있을 수 있지만 가장 먼저 해야 할 일이 있습니다.

간단한 문제를 예로 들어보겠습니다.

에디션 3.0에 1C Enterprise Accounting 구성이 있습니다.
계산원에게 급여를 지급하기 위한 문서 명세서가 포함되어 있습니다.
이 문서는 선택한 단위에 대해 선택하여 직원에게 발생하는 모든 것으로 채울 수 있지만 선불을 지불할 때 여전히 발생이 없으며 수동으로 작성해야 합니다. 그러나 데이터베이스에는 계획된 발생액을 저장할 장소가 있으며 급여의 백분율로 문서 작성을 구성하는 것이 가능합니다. 물론 여기에 일한 시간의 몫을 분석하는 시간표는 없지만 작은 사무실 만 1C 회계에서 급여를 유지하고 50에서 두 줄을 조정하는 것은 문제가되지 않습니다.

작업이 명확합니다. 문서에 채우기 명령이 있을 것이며, 그러면 백분율 입력 대화 상자가 열리고 그 후에 문서가 채워집니다.

시작하자!

새 처리를 만들고 이름을 지정해 보겠습니다. 처리 양식 필드에서 "렌즈"를 클릭하여 양식을 만듭니다.

이제 일시적으로 양식을 종료하고 처리 모듈로 이동합니다. GetCommandTable() 함수와 AddCommand(CommandTable, View, Identifier, Usage, ShowAlert = False, Modifier = "") 프로시저를 그 안에 작성해 보겠습니다. 이전 기사에서 그들의 텍스트를 찾을 수 있습니다.

이제 내보내기 함수 DetailOnExternalProcessing()을 작성합니다. 다음은 그녀의 텍스트입니다.

함수 DetailOnExternalProcessing() 내보내기
RegistrationParameters = 새 구조체;
AssignmentArray = 새 배열;
과제 배열 Add("현금 데스크에 급여를 지급하기 위한 문서. 명세서");
RegistrationParameters.Insert("보기","개체 채우기");
RegistrationParameters.Insert("할당", 할당 배열);
RegistrationParameters.Insert("버전", "1.0");
RegistrationParameters.Insert("이름", "선불 입력"+RegistrationParameters.Version);
RegistrationParameters.Insert("안전 모드", False);
RegistrationParameters.Insert("Information", "Payroll to Cashier 문서에 표 형식 부분의 추가 처리");
명령 테이블 = GetCommandTable();
AddCommand(커맨드 테이블,

"사전 채우기" + 등록 옵션.버전,
"OpenForm", True);
RegistrationParameters.Insert("명령", CommandTable);
반환 매개변수등록;
EndFunctions

"대상"으로 문서를 " 출납원에 대한 급여 지급 명세서 "처리 유형"FillingObject". 사용법 - "양식 열기". 안전 모드우린 필요로하지 않아.

인쇄된 양식과의 차이점 - 최소. 이제 양식으로 돌아갑니다.

이론적으로 양식 매개변수에서 채워야 하는 개체가 전송됩니다. "Destination Objects" 속성에 액세스하여 가져올 수 있습니다. 이론상으로도 많이 있을 수 있습니다. 채우기 명령은 문서 형태뿐만 아니라 목록 형태로도 나타나며 다중 선택이 가능하다. "채우기" 버튼을 누른 창은 양식의 소유자 역할도 합니다. 문서 양식 또는 목록 양식이 될 수 있습니다.

이것은 이론입니다. 실제로 고객은 선지급을 위해 한 번에 세 가지 명세서를 작성할 필요가 없습니다. :)) 따라서 목록 양식의 예에서 처리 오류가 발생합니다. 나는 당신에게 이것을 촉구하지 않습니다. 기사에서 가장 중요한 것은 본질을 전달하는 것이고 고객에게 가장 중요한 것은 결과라는 것입니다.

그래서 우리는 진술이 항상 하나라는 데 동의했고 목록이 아닌 문서의 버튼을 누릅니다. 목록에서 zhmakanya의 경우를 직접 완료하십시오))

양식에 "명세서" 및 "백분율"과 같은 세부 정보가 필요합니다.

"채우기" 명령도 필요합니다. props "percentage"와 "fill" 명령을 폼으로 끌어다 놓습니다.

양식에서 "CreateOnServer" 처리기를 추가하고 채울 개체의 수신을 거기에 씁니다.

서버에서(&O)
CreationOnServer에 대한 절차(실패, StandardProcessing)
만약 Parameters.Property("DestinationObjects") 다음
시트 = Parameters.Destination 개체;
EndIf;
종료 절차

사실, 여기에 당신의 손에 깃발이 있고 전송 된 개체의 수를 분석합니다)) 물론 원하는 경우.

"OnCreateOnServer" 핸들러에는 링크 배열이 있습니다. 우리는 또한 채우기 전에 개체가 기록되었음을 보장합니다. 문서가 수정되는 경우 작성하기 전에 작성하거나 작성을 거부하도록 제안됩니다. 나는 그것을 좋아하지 않는다, 왜냐하면 각 리필에는 쓰기가 필요하지만 쓸 필요가 없다면 어떻게 될까요? 좋은 패딩은 기록된 개체의 데이터가 아니라 양식 데이터와 함께 작동해야 합니다. 그러나 수정 제어를 취소하려면 지원에서 conf를 제거하고 이 확인에 대해 설명해야 합니다. 이 모든 문제 때문에 우리는 갈림길에 서 있습니다. 데이터베이스의 개체를 수정한 다음 양식을 업데이트하거나(데이터를 다시 읽거나) 컨텍스트에서 소유자인 양식의 데이터를 수정할 수 있습니다. 처리 양식의.

아마도 옳은 일은 다음과 같습니다.

서버에서 처리 양식을 생성할 때 처리가 시작되는 위치를 목록에서 또는 문서 양식에서 분석하십시오. 목록에 있는 경우 데이터베이스로 작업하고 문서 형식에 있는 경우 처리 양식 소유자와 작업합니다.

첫 번째 옵션(데이터베이스의 개체로 작업할 때)에서는 실행 후 기록해야 하는데 항상 허용되는 것은 아닙니다. 이것은 채우기 결과를 본 후에 그것을 포기하는 것을 허용하지 않습니다. 그러나 목록 양식에는 다른 옵션이 없습니다.

일반적으로 명령 실행 소스를 분석하면 두 가지 다른 채우기 절차를 작성해야 합니다. 하나는 서버에, 하나는 클라이언트에 있습니다.

그러나 내가 말했듯이 목록 양식에서 여는 옵션에 점수를 매겼으므로 양식 데이터로 작업합니다. 폼 속성 "statement"와 핸들러 "whenCreatingOnServer"가 헛되이 썼습니다.)))

충전 절차는 다음과 같습니다.

클라이언트에서(&A)

프로시저 채우기(명령)
m = GetData(양식 소유자.Object.RegistrationPeriod);
양식 소유자.Object.Salary.Clear();
양식 Owner.Object.Payout 방법 = 지불 방법();
m 루프의 각 행 데이터에 대해
StrDocument = 양식 소유자.Object.Salary.Add();
Documentstr.Employee = Datastring.Employee;
StrDocument.Division = stringData.Division;
strDocument.TOPayout = stringData.Size / 100 * 백분율;
종료 주기;
ThisForm.Close();
종료 절차

첫 번째 줄에서 - 이 기사의 요점. Form Owner.Object 구성을 통해 양식 데이터에 액세스합니다. 그것에서 우리는 표 부분과 헤더로 돌아가 읽고 씁니다.

"GetData()" 절차는 서버에서 실행되고 계획된 적치금에 따라 채워질 금액을 수집합니다. 왜냐하면 값 테이블은 서버에서 클라이언트로 전송할 수 없으므로 구조 배열을 사용합니다.

다음은 데이터 수집 절차의 텍스트입니다.

서버에서(&O)
함수 GetData(기간)
요청 = 새 요청("SELECT
|PlannedAccrualsSliceLast.Employee,
| 계획된 적치휴가 마지막 조각. 개인,
|PersonnelHistoryEmployeesSliceLast.Department,
|예상 발생 슬라이스 마지막 크기
| 부터
|정보 Register.TargetedAccruals.SliceLast(&Period,) AS PlannedAccrualsSliceLast
| 왼쪽 조인
|소프트웨어 PlannedAccrualsSliceLast.Employee = PersonnelHistoryEmployeesSliceLast.Employee
|어디
|PersonnelHistoryEmployeesSliceLast.ViewEvents<>VALUE(PersonnelEvents.Firing의 열거.유형)
|
|주문하기
|스케줄된 발생 마지막 슬라이스.개별.이름");
Query.SetParameter("기간", 기간);
res = 요청.실행();
m = 새 어레이;
선택 = res.Select();

select.Next() 루프 동안
datastructure = New Structure("직원, 개인, 부서, 크기");
FillPropertyValues(데이터 구조, 선택);
m.추가(데이터 구조);
종료 주기;
리턴 m;
EndFunctions

여기서 모든 것이 명확해야 합니다. 유일한 KNOW-HOW는 쿼리 결과를 서버에서 클라이언트로 전송하는 방법입니다. 여기서 요청은 간단합니다. 왜냐하면 Bukhia의 ZUP과 달리 레지스터에 종료 날짜가 없으므로 데이터를 얻는 작업이 간소화됩니다.

표 형식 외에도 "결제 방법" 속성도 채우고 서버에서도 받아야 합니다.

서버에서(&O)
지불 방법() 함수
반품
EndFunctions

그게 다야.

이제 요약:

1. 구성이 더 이상 사용되지 않는 경우 채우기 처리를 호출하기 전에 개체가 작성되었는지 여부를 확인하는 것을 비활성화합니다.

2. 양식 데이터를 변경할 수 있는 경우 데이터베이스 개체를 변경하지 마십시오. 사용자가 쓰기를 누르지 않는 한 해당 작업을 취소할 수 있어야 합니다.

3. 시간과 에너지가 있는 경우 목록 양식과 개체 양식에서 호출하는 두 경우 모두에 대한 처리를 작성합니다. 개체 양식의 경우 양식 데이터를 수정하고 목록 양식의 경우 데이터베이스 데이터를 수정합니다. 제 경우에는 명령이 오류와 함께 목록 형식에서 떨어지며 이것은 올바르지 않습니다.

지금까지 모두 감사합니다!

돈과 상품을 고려하기 위해 다양한 테이블이 비즈니스에서 널리 사용됩니다. 거의 모든 문서는 테이블입니다.

한 테이블에는 창고에서 배송할 상품이 나열되어 있습니다. 다른 표에서 - 이러한 상품에 대한 지불 의무.

따라서 1C에서는 테이블 작업이 눈에 띄는 위치를 차지합니다.

1C의 테이블은 "테이블 부분"이라고도 합니다. 참고서, 문서 및 기타에 있습니다.

쿼리는 두 가지 다른 방법으로 액세스할 수 있는 실행 결과로 테이블을 반환합니다.

첫 번째 - 더 빠른 - 선택에서 행을 가져오는 것은 순서대로만 가능합니다. 두 번째는 쿼리 결과를 값 테이블로 언로드한 다음 이에 대한 임의 액세스입니다.

//옵션 1 - 쿼리 결과에 대한 순차적 액세스

// 테이블 가져오기
선택 = Query.Execute().Select();
// 쿼리 결과의 모든 행을 순서대로 무시
동안 Selection.Next() 루프
보고서(선택.이름);
종료 주기;

//옵션 2 - 값 테이블에 업로드
Query = New Query("SELECT Name FROM Directory.Nomenclature");
// 테이블 가져오기
테이블 = Query.Execute().Upload().
// 모든 라인을 우회할 수도 있습니다.
테이블 루프의 각 행에 대해
보고서(문자열.이름);
종료 주기;
//또는 임의로 문자열에 액세스
String = Table.Find("삽", "이름");

중요한 기능은 쿼리 결과에서 얻은 테이블에서 모든 열에 강력한 형식이 지정된다는 것입니다. 즉, 명명법 조회에서 이름 필드를 요청하면 허용 가능한 길이가 N 문자 이하인 문자열 유형의 열을 받게 됩니다.

양식의 테이블(일반 클라이언트)

사용자는 테이블이 양식에 배치될 때 테이블을 사용합니다.

에 대한 단원과 에 대한 단원에서 양식 작업의 기본 원칙에 대해 논의했습니다.

자, 이제 폼에 테이블을 배치해 보겠습니다. 이렇게 하려면 제어판에서 표를 드래그하면 됩니다. 마찬가지로 메뉴에서 Form/Insert 컨트롤을 선택할 수 있습니다.

데이터를 구성에 저장할 수 있습니다. 그런 다음 양식을 편집 중인 구성 개체의 기존(이전에 추가된) 표 형식 부분을 선택해야 합니다.

데이터 속성에서 "..." 버튼을 클릭합니다. 표 형식의 부분 목록을 보려면 개체 분기를 확장해야 합니다.

표 형식의 부분을 선택할 때 1C 자체가 양식의 표에 열을 추가합니다. 사용자가 이러한 테이블에 입력한 문자열은 디렉토리/문서와 함께 자동으로 저장됩니다.

동일한 Data 속성에서 임의의 이름을 입력하고 ValueTable 유형을 선택할 수 있습니다.

이는 임의의 값 테이블이 선택되었음을 의미합니다. 자동으로 열을 추가하지 않고 자동으로 저장되지 않지만 원하는 대로 할 수 있습니다.

테이블을 마우스 오른쪽 버튼으로 클릭하면 열을 추가할 수 있습니다. 열 속성에서 해당 이름(1C 코드 참조용), 양식의 열 머리글, 표 형식 부분의 속성과의 연결(후자는 임의의 표가 선택되지 않은 경우 표 형식 부분).

폼의 테이블 속성에서 사용자가 행을 추가/삭제할 수 있는지 여부를 지정할 수 있습니다. 고급 양식은 ViewOnly 확인란입니다. 이러한 속성은 정보를 표시하기 위한 것이지만 편집용이 아닌 테이블을 구성하는 데 유용합니다.

테이블을 관리하려면 폼에 명령 패널을 표시해야 합니다. 메뉴 항목 양식/삽입 컨트롤/명령 패널을 선택합니다.

패널의 버튼이 자동으로 나타나도록 명령 모음의 속성에서 자동 완성 확인란을 선택합니다.

양식의 테이블(씬/관리 클라이언트)

관리되는 양식에서 지정된 작업조금 다르게 봐. 양식에 표 형식 섹션을 배치해야 하는 경우 개체 분기를 확장하고 표 형식 섹션 중 하나를 왼쪽으로 끕니다. 그리고 그게 다야!

값 테이블을 배치해야 하는 경우 새 양식 속성을 추가하고 속성에 유형(값 테이블)을 지정합니다.

열을 추가하려면 이 양식 속성에서 마우스 오른쪽 버튼 메뉴인 속성 열 추가 항목을 사용합니다.

그런 다음 테이블도 왼쪽으로 끕니다.

테이블에 명령 모음이 있도록 하려면 테이블 속성에서 사용법 - 명령 모음 위치 섹션에서 값을 선택합니다.

표를 Excel로 내보내기

양식에 있는 모든 1C 테이블을 인쇄하거나 Excel에 업로드할 수 있습니다.

이렇게 하려면 테이블의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 목록 표시를 선택합니다.

관리되는(씬) 클라이언트에서는 메뉴 항목 모든 작업/표시 목록을 사용하여 유사한 작업을 수행할 수 있습니다.

이 기사의 프레임워크 내에서 일반적인 1C: ERP 2.1 구성에 대해 1C 8.3의 표 형식 부분을 채우는 처리를 작성합니다. 작업의 목표가 이 문서의 모든 재고 항목에 대해 5%의 수동 할인을 설정하는 것이라고 가정합니다. 기사의 예는 에 의해 다운로드되거나 에 의해 기타 유사한 처리를 받을 수 있습니다.

이 지침은 관리되는 양식(8.2 및 8.3)에 대한 것입니다. 일반 양식(8.1, 8.2)의 경우 .

새 치료를 만들고 컴퓨터에 저장합니다. 먼저 몇 가지 등록 단계를 수행해야 합니다.

개체 모듈을 열고 아래 코드를 작성합니다(위에서 주어진 처리에서 가져올 수도 있음). 일반적으로 구조는 상황에 따라 변경되지 않습니다. 필요한 경우 변수 이름뿐만 아니라 일부 설정 매개변수만 편집됩니다.

이 기사의 틀 내에서 1C의 외부 처리 및 인쇄 양식 등록에 대해서는 다루지 않을 것입니다. 이 모든 정보는 다른 기사에 있습니다.

문서의 표 부분 채우기

새로운 처리 양식을 만들어 봅시다.

이제 생성된 양식에 새 명령을 추가해야 합니다. 하나 및 여러 문서(목록 형식)의 표 형식 부분에 있는 데이터를 동시에 자동으로 변경하고 나중에 기록한다고 가정합니다.

이 예의 일부로 이미 존재하는 "제품" 부분이 처리됩니다. 각 라인에 대해 5%의 수동 할인이 설정됩니다. 또한 라인의 상품 합계와 0.05를 곱한 할인 금액을 계산합니다.

&A 서버 프로시저 대상 개체 루프에서 각 고객 주문에 대해 명령(명령, 대상 개체) 실행 고객 주문 개체 = 고객 주문. GetObject() ; CustomerOrderObject의 각 TK 라인에 대해. 상품 주기 스트링 TZ. PercentManualDiscount = 5 ; 문자열 TZ. 수동 할인 금액 = 문자열 TK. 금액 * 0 . 05; 엔드 사이클 ; 주문 고객 개체. 쓰다() ; 엔드 사이클 ; 종료 절차

외부 처리 등록

"엔터프라이즈" 모드에서 1C를 실행하고 "추가 보고서 및 처리" 디렉토리를 엽니다. "모든 기능" 메뉴를 통해 찾으십시오.

열리는 디렉토리에 새 요소를 만들고 같은 이름의 버튼을 사용하여 파일에서 처리를 로드합니다. 목록 양식과 문서 카드 자체의 양식에 동시에 배치합시다.

이제 "고객 주문"문서 목록의 형태로 "채우기 ..."버튼이 나타나 여러 문서에 대한 상품의 수동 할인을 한 번에 변경할 수 있습니다.

또한 이 버튼은 문서 자체의 카드에서 사용할 수 있습니다.

1C 굿윌 블로그

여기에서는 1C 8.3(관리되는 양식의 경우)에서 문서의 표 부분을 처음부터 작성하기 위한 외부 처리를 만드는 방법을 배웁니다. 고려된 처리 예제는 링크에서 다운로드할 수 있습니다.

가장 간단한 예를 들어보겠습니다. "요구 사항 송장" 문서의 "재료" 표 섹션에서 모든 행의 수량에 값 100을 할당합니다.

1C 8.3의 외부 처리 준비

그래서 우리는 외부 처리를 만듭니다. 우리는 그것을 디스크에 저장합니다.

외부 처리 또는 1C 데이터베이스의 보고서를 등록해야 합니다. 이것은 내보내기 기능 ExternalProcessingDetails에 포함된 구조를 사용하여 수행됩니다.

"작업" 버튼을 클릭하면 객체 모델로 이동하여 함수를 생성합니다.

ExternalProcessingDetails() 함수 내보내기 대상 = 새 배열; Assignments.Add("Document.RequirementInvoice") ; RegistrationParameters = 새 구조체; RegistrationParameters.Insert("보기" , "객체 채우기") ; RegistrationParameters.Insert("할당", 할당) ; RegistrationParameters.Insert("이름" , "문서 작성" ); RegistrationParameters.Insert("버전" , "1.0" ); RegistrationParameters.Insert("정보", "요청의 표 형식 부분에 대한 추가 처리") ; RegistrationParameters.Insert("안전 모드" , True) ; 명령 = GetCommandTable() ; AddCommand(Commands, "문서 채우기" , "FillDocument" , "ClientMethod 호출" , False,) ; RegistrationParameters.Insert("팀", 명령) ; 반환 매개변수등록; EndFunctions

필드의 의미에 대해 조금 이야기해 보겠습니다.

유형 - 처리 목적에 따라 다음 값을 사용할 수 있습니다.

보고서 개체 작성 양식 인쇄 추가 처리 관련 개체 생성 추가 보고서

우리의 경우 표 형식 부분의 채우기를 처리하려면 "Filling Object" 처리 유형이 필요합니다.

목적 - 이 필드는 이 처리가 의도된 문서를 나열합니다(여기에 등록 후 표시됩니다. 정보 기반). 이러한 문서를 열거하기 위해 "Assignments" 배열을 만들고 여기에 "Invoice Requirement" 문서를 추가합니다.

이름 - 이 이름은 추가 처리 목록에 표시됩니다.

버전 - 새 소프트웨어 제품의 버전입니다.

정보 - 구조의 이 키는 처리에 대한 추가 정보를 포함합니다.

안전 모드 - True/False 값을 사용합니다. 우리는 안전 모드를 사용할 것입니다.

명령 - 이 구조 키는 처리에서 제공하는 명령 목록을 포함합니다. 명령의 경우 GetCommandTable() 함수와 AddCommand() 프로시저를 만듭니다.

명령 값 테이블의 필드를 자세히 살펴보겠습니다.

보기는 사용자에 대한 명령의 표현이며 인터페이스에 표시될 이름입니다.

ID는 처리 내에서 명령의 내부 ID입니다.

사용법 - 명령의 사용에 따라 다음 값을 사용할 수 있습니다.

ServerMethod 호출 - 서버 프로시저가 처리 모듈에서 호출됩니다. OpenForm - 처리 양식을 여는 데 사용 클라이언트 메서드 호출 - 처리 모듈에서 클라이언트 프로시저를 호출합니다. 안전 모드의 스크립트 - 안전 모드의 서버 프로시저

우리의 경우 1C 8.3 개체의 형태로 작업하고 있으므로 ClientMethodCall을 사용하여 외부 처리 명령을 호출해야 합니다.

ShowAlert - True/False의 두 값 중 하나가 있습니다.

수정자 - 추가 명령 수정자. 개체 모듈에서 처리의 최종 목록은 다음 형식을 취합니다.

ExternalProcessingDetails() 함수 내보내기 대상 = 새 배열; Assignments.Add("Document.RequirementInvoice") ; RegistrationParameters = 새 구조체; RegistrationParameters.Insert("보기" , "객체 채우기") ; RegistrationParameters.Insert("할당", 할당) ; RegistrationParameters.Insert("이름" , "문서 작성" ); RegistrationParameters.Insert("버전" , "1.0" ); RegistrationParameters.Insert("정보", "요청의 표 형식 부분에 대한 추가 처리") ; RegistrationParameters.Insert("안전 모드" , True) ; 명령 = GetCommandTable() ; AddCommand(Commands, "문서 채우기" , "FillDocument" , "ClientMethod 호출" , False,) ; RegistrationParameters.Insert("팀", 명령) ; 반환 매개변수등록; EndFunction 함수 GetCommandTable() 명령 = 새 ValueTable; Commands.Columns.Add("보기", NewTypeDescription("문자열")) ; Commands.Columns.Add("식별자", NewTypeDescription("문자열")) ; Commands.Columns.Add("사용법" , NewTypeDescription("문자열")) ; Commands.Columns.Add("ShowAlert" , NewTypeDescription("부울")) ; Commands.Columns.Add("수정자", NewTypeDescription("문자열")) ; 팀 복귀; EndFunction 프로시저 AddCommand(CommandTable, 보기, 식별자, 사용법, ShowAlert = False, 수정자 = "") NewCommand = CommandTable.Add() ; NewCommand.View = 보기; NewCommand.Identifier = 식별자; NewCommand.Use = 사용; NewCommand.ShowAlert = ShowAlert; NewCommand.Modifier = 수정자; 절차 끝 표 섹션을 채우는 명령 만들기

모양 처리 필드에서 렌즈를 클릭하여 모양을 만듭니다.

양식에 RunCommand 명령을 추가합니다.

채우기 명령의 처리 본문에서 양식 소유자를 통해 양식 데이터에 액세스하고 자료의 표 형식 부분에서 수량 값을 변경합니다.

&AtClient 프로시저 ExecuteCommand(CommandID, DestinationObjectsArray) FormOwner.Object.Materials 루프에서 각 CurrentRow에 대해 내보내기 CurrentRow.Count = 100 ; 알림(CurrentLine.Quantity) ; 종료 주기; 절차 종료 1C 8.3의 외부 처리 등록 및 확인

이제 1C 엔터프라이즈 모드에서 표 형식 부분을 채우기 위해 외부 처리를 등록합니다.

외부 처리 목록에서 만들기 버튼을 클릭합니다.

열리는 새 외부 처리 양식에서 파일에서 외부 처리를 로드한 다음 새 처리를 작성합니다.

이제 "요구사항 송장" 문서에서 정보 베이스에 처리를 등록한 결과를 관찰할 수 있습니다. 그리고 "문서 채우기" 버튼을 누르면 표 형식 부분을 채우는 처리 작업을 관찰할 수 있습니다.

기록 처리 표 부분 1C 8.3 채우기 관리되는 양식처음으로 1C GOODWILL 회사의 블로그가 예제에 나타났습니다.

관련 출판물