간략한 정보 1C-Enterprise에서 OLE 사용에 대해.

외부 응용 프로그램에서 OLE 자동화 서버로 1C-Enterprise 시스템을 시작하려면 다음 작업 순서가 수행됩니다.

  1. 개체는 OLE 식별자로 생성됩니다(대소문자는 중요하지 않음).
  • V1CEnterprise.Application - 버전 독립 키.
  • V77.Application - 버전 종속 키;
  • V77S.Application - 버전 종속 키, SQL 버전;
  • V77L.Application - 버전 종속 키, 로컬 버전
  • V77M.Application - 버전 종속 키, 네트워크 버전.
  • 1C-Enterprise 시스템은 Initialize() 메서드를 사용하여 초기화됩니다.
  • 1C-Enterprise 시스템의 속성 및 방법을 OLE 자동화 서버라고 합니다.
  • OLE 자동화 서버로서의 1C-Enterprise에는 4가지 방법이 있습니다.

    • Initialize() - 1C-Enterprise 시스템을 초기화합니다.
    • CreateObject() - 1C-Enterprise 집계 데이터 유형의 개체를 만들고 이에 대한 참조를 반환합니다.
    • EvalExpr() - 1C-Enterprise 시스템의 표현을 계산합니다.
    • ExecuteBatch() - 1C-Enterprise 시스템 운영자의 시퀀스를 실행합니다.

    행동 양식:

    1. Initialize() - 데이터베이스를 엽니다.

    메서드의 구문은 다음과 같습니다.

    초기화(<Имя объекта>.RMTrade,<Командная строка>, <Пустая строка>)

    <Имя объекта>.RMTrade - 변수 이름 및 RMTrade 키워드.
    <Командная строка> - 명령줄, 데이터베이스 경로, 사용자 이름 및 암호를 지정할 수 있습니다.
    <Пустая строка>) - 빈 문자열 또는 "NO_SPLASH_SHOW" - 부팅 시 시작 화면을 표시하지 않습니다.

    OLE를 통해 데이터베이스를 열기 위해서는 OLE 식별자로 객체를 생성하고, 데이터베이스를 초기화하고, 초기화 성공 여부를 확인해야 한다. 내 예에서는 아무 것도 지정하지 않습니다. 추가 옵션, 베이스 선택을 위한 사각형 창이 열리면 사용자를 선택하고 암호를 입력하라는 메시지가 표시됩니다.

    OtherBase=CreateObject("V77.Application"); 열림=OtherBase.Initialize(OtherBase.RMTrade,); If Open=0 then // True=-1, False=0. 모든 OLE 명령에 대해. Show("데이터베이스가 열리지 않았습니다."); 반품; EndIf;

    2. CreateObject() - 집계 유형의 개체를 만듭니다.

    이 방법은 1C-Enterprise 시스템의 집계 데이터 유형의 개체를 만들고 이에 대한 참조를 반환합니다.

    메서드의 구문은 다음과 같습니다.

    객체 생성(<ИмяАгрегатногоТипа>)

    <ИмяАгрегатногоТипа>- 값이 구성자에 지정된 집계 데이터 유형의 이름을 포함하는 문자열 표현식. 예: "디렉토리. 명명법", "문서. 송장".

    3. EvalExpr() - 표현식을 평가합니다.

    메서드의 구문은 다음과 같습니다.

    평가(<СтрокаВыражения>)

    <СтрокаВыражения>- 1C-Enterprise의 내장 언어로 작성된 문자열 표현식.

    표현식의 결과는 숫자, 문자열, 날짜 또는 집계 데이터 유형의 값일 수 있습니다. 정의되지 않은 유형의 결과는 문자열 유형으로 변환됩니다.

    4. ExecuteBatch() - 일련의 명령문을 실행합니다.

    메서드의 구문은 다음과 같습니다.

    일괄 실행(<СтрокаОператоров>)

    <СтрокаОператоров>- 문자열 표현식, 1C-enterprise의 내장 언어로 된 프로그램 텍스트.

    부울 값을 반환합니다. 명령문 시퀀스가 ​​성공하면 TRUE, 실패하면 FALSE입니다. OLE 자동화에서 TRUE 및 FALSE는 각각 -1(-1) 및 0 값을 갖습니다.

    예: OLE를 통해 열린 다른 데이터베이스에 문서 만들기.

    처리에서 언로드가 발생합니다. SelectDocument - 다른 데이터베이스에 업로드하기 위해 사용자가 선택한 문서입니다.

    OtherBase=CreateObject("v77.application"); 열림=OtherBase.Initialize(OtherBase.RMTrade,); If Open=0 Then Report("데이터베이스가 열리지 않았습니다."); 반품; EndIf; dDoc=OtherBase.CreateObject("문서.송장"); dItem=OtherBase.CreateObject("카탈로그.명칭"); dDoc.New(); dDoc.DateDoc=SelectDocument.DateDoc; dDoc.Firm=OtherBase.evalexpr("Constant.MainFirm"); dDoc.Warehouse=OtherBase.evalexpr("Constant.MainWarehouse"); dDoc.PriceCategory=OtherBase.evalexpr("Constant.IncomingPriceCategory"); dDoc.Tax 계산 변형=OtherBase.evalexpr("Constant.Main 세금 계산 변형"); dDoc.Currency=OtherBase.evalexpr("Constant.BaseCurrency");//루블 dDoc.Date_rate=dDoc.DateDoc; doc.AccountingType=1; dDoc.Author=OtherBase.evalexpr("gUser"); dDoc.Invoice 속성=OtherBase.evalexpr("Transfer.RecognitionInc.Inc.Purchase"); dDoc.Rate=1;//루블 dDoc.Comment=SelectDocument.Comment; SelectDocument.SelectRows(); 동안 SelectDocument.GetString()=1 루프 dDoc.NewString(); ItemCode=ShortLP(SelectDocument.Item.Code); If dItem.FindByCode(ItemCode)=0 Then Report("코드가 있는 제품"+ItemCode를 찾을 수 없음); 반품; EndIf; dItem.UseDate(dDoc.DateDoc); dDoc.Item=dItem.CurrentItem(); dDoc.Quantity=문서 선택.수량; dDoc.Unit=dProduct.UnitDefault; dDocument.Price=문서 선택.가격; dDoc.계수=1; dDoc.Total=문서 선택.금액; dDoc.Amount=SelDocument.Amount-SelekDocument.NW; dDoc.VAT 세율=dProduct.VAT 세율; dDocument.VAT=문서 선택.VAT; dDoc.NR 비율=dProduct.NR 비율; ddDocument.NrAmount=문서 선택.Nr; 종료 주기; dDoc.SetNewNumber(OtherBase.evalexpr("회계 문서 번호의 상수.접두사")); 알림(""+dDoc.DocNumber); dDoc.Write();

    이 예제는 100% 작동합니다. 한 구성에서 다른 구성으로 문서를 업로드하는 데 사용합니다.

    OLE 데이터베이스에서의 비교. 상수, 열거, 디렉토리 요소.

    Ole를 통해 연 데이터베이스의 집계 데이터 유형 값을 비교하려면 등호 및 등호(=,<>) 작동하지 않습니다. 출구는 간단합니다. 집계 데이터 유형 비교에서 날짜, 문자열 및 숫자와 같은 단순 데이터 유형으로 이동해야 합니다.

    따라서 결론: 우리는 요소 자체를 비교하는 것이 아니라 요소의 고유한 속성을 비교합니다. 예를 들어, 디렉토리 요소의 경우 이것은 코드(있는 경우) 또는 이름입니다. 열거를 위해 Identifier() 메서드가 사용됩니다. 다음은 두 가지 예입니다.

    // dItem.AccountingCurrency.Code인 경우 BaseCurrency 상수와 항목 속성 비교<>Other.Constant.BaseCurrency.Code 다음 dItem.AccountingCurrency=Other.Constant.BaseCurrency; EndIf; //항목 속성과 열거형 비교 If dItem.ItemType.Identifier()<>Other.Enumeration.ProductTypes.Single.Identifier() 다음 dProduct.ProductType=Other.Enumeration.ProductTypes.Single; EndIf;

    세션 매개변수 1C 8.3- 사용자 세션 기간 동안 원하는 매개변수의 값을 저장하는 변수입니다. 사실 이것은 현재 사용자의 세션에 묶인 일종의 전역 변수입니다.

    1C에서 세션 매개변수 사용

    세션 매개변수는 프로그래밍 방식으로만 설정되며 시스템에 세션 매개변수를 설정하기 위한 범용 인터페이스는 없습니다. 일반적으로 "세션 모듈"에서 시스템 시작 시 설정됩니다. 매개변수가 정의되지 않은 경우 액세스하는 동안 오류가 발생합니다.

    세션 매개변수 1C 설정의 예

    현재 사용자를 설정하는 세션 매개변수의 일반적인 사용 사례를 살펴보겠습니다. 를 준비하면서 예를 들겠습니다.

    메타데이터 트리에서 생성 새 매개변수세션 - CurrentUser, 유형 지정 - DirectoryLink.Individuals:

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

    세션 모듈에서 현재 세션 매개변수를 결정하는 프로시저를 생성해 보겠습니다.

    절차 코드:

    프로시저 SettingSessionParameters(RequiredParameters) //우리는 물리적인 것을 찾고 있습니다. 사용자 이름으로 얼굴 CurrentUser = 디렉토리. 개인. FindByName(사용자 이름()) ; // 발견되지 않으면 새로 생성현재 사용자인 경우. Empty() 그러면 NewUser = 디렉터리입니다. 개인. 생성 요소() ; 새로운 사용자. 이름 = 사용자 이름() ; 새로운 사용자. 쓰다() ; 현재 사용자 = NewUser. 링크; 종료하면 ; // CurrentUser 세션 매개변수에 개인의 디렉토리에 대한 링크를 할당합니다.세션 매개변수. 현재 사용자 = 현재 사용자; 종료 절차

    1. 문제 진술

    이 기사에서는 간단한 작성 과정을 살펴보겠습니다. 외부 처리의 표 부분 채우기 1C 8일반 응용 프로그램을 사용하는 구성의 경우. 예를 들어 다음 작업을 수행해 보겠습니다. 1C: 회계 2.0표 섹션을 채우는 외부 처리 생성 제품문서에서 채울 데이터는 표 섹션에서 가져옵니다. 제품문서 재화 및 용역의 수령". 따라서 우리는 수령한 상품을 기반으로 판매 상품을 작성해야합니다. 이러한 작업은 1C 프로그래머의 실제 관행에서 매우 일반적입니다.

    2. 외부 처리 생성

    가자 1C 8모드에서 구성자. 메뉴 사용하기 파일 -> 새로 만들기또는 픽토그램 새 문서새로 만들기 외부 처리.

    현장에서 이름우리는 "표 형식 부분에서 가장 간단한 채우기"를 지정하고 외부 처리를 다음 위치에 저장합니다. HDD메뉴를 사용하여 파일 -> 저장또는 아이콘 구하다또는 키보드 단축키 Ctrl+s.

    지점 선택 요건처리 메타데이터 트리에서 버튼 클릭 추가하다(녹색 더하기 버튼) 새 외부 처리 속성 생성 - 문서영수증, 유형을 선택하십시오. DocumentReference.수령 서비스, 문서를 선택하려면 이 속성이 필요합니다. 재화 및 용역의 수령, 구현을 기반으로 작성됩니다.

    영수증 문서를 선택하려면 별도의 양식이 필요합니다. 지점 선택 양식동일한 버튼을 사용하여 - 추가하다외부 처리 양식을 만들어 보겠습니다. 양식 디자이너 창이 열리므로 디자이너의 첫 페이지에서 변경할 필요가 없으므로 버튼을 클릭하기만 하면 됩니다. 더 나아가.

    생성자의 두 번째 페이지에서 소품을 선택해야 합니다. 문서영수증(생성된 폼에 나타나게 하기 위해) 버튼을 누른다 준비가 된.

    그런 다음 생성 된 양식이 열리고 사용자가 영수증 문서를 선택하고 닫아야합니다. 그래서 버튼을 눌렀을 때 운영양식을 닫아야 합니다. 이를 구현하려면 버튼을 선택하십시오. 운영, 그것을 클릭 마우스 오른쪽 버튼으로 클릭마우스로 항목 선택 속성. 버튼의 속성에서 줄에 동작행동을 선택 닫다. 이것은 양식 작업을 완료하고 닫습니다.

    3. 프로그래밍

    표 부분을 채우는 처리 프로그래밍을 시작하겠습니다. 가자 개체 모듈외부 처리(하단 처리 패널의 버튼 작업 -> 개체 모듈 열기).

    그것에서 우리는 수출 절차를 만들어야합니다 초기화.

    절차 초기화 내보내다종료 절차

    참고 절차 초기화, 모든 매개 변수는 표 섹션 작성의 외부 처리에 필수입니다., 생성하지 않거나 모든 매개변수를 제공하지 않으면 처리가 작동하지 않습니다.

    이제 글을 시작해 볼까요? 프로그램 코드. 먼저 문서의 표 형식 부분에 대한 변수를 생성해 보겠습니다. 상품 및 서비스 판매우리가 채울 것입니다.

    TablePart = 개체[TablePartName];

    매개변수에서 프로시저를 실행할 때 객체우리가 채우는 문서 객체와 매개변수를 포함할 것입니다. 테이블 파트 이름채우고 있는 표 형식 부분의 이름이 있는 문자열입니다. 따라서 이 코드 줄은 채워진 문서의 표 형식 부분을 이름으로 가져옵니다.

    사용자가 문서를 선택해야 합니다. 재화 및 용역의 수령, 문서 선택 양식을 여는 코드를 작성해 보겠습니다. 먼저 외부 처리 방법을 사용하여 이 형식을 변수로 가져옵니다. GetForm(<Форма>, <Владелец>, <КлючУникальности>) . 이 메소드의 첫 번째 매개변수만 채우고 거기에 양식 이름이 있는 문자열을 전달하는 것으로 충분합니다.

    IncomingSelectionForm = GetForm("양식");

    이제 모달 열기를 사용하여 결과 양식을 열어 보겠습니다(양식이 열려 있는 동안 다른 모든 1C 창은 사용할 수 없음). 이 열기 방법을 사용하면 절차의 추가 코드가 있기 때문입니다. 초기화사용자가 양식을 닫을 때까지 실행되지 않습니다.

    입학선택폼.OpenModally();

    사용자가 양식을 닫은 후 속성이 채워졌는지 확인해야 합니다. 문서영수증(영수증 문서가 선택되지 않은 경우). 확인 후 문서영수증비어 있으면 추가 처리가 의미가 없으므로 중단되어야 합니다.

    ValueFilled(ReceiptDocument)가 아니면 Report(); 반품 ; 종료하면 ;

    속성의 충만도를 확인하기 위해 전역 컨텍스트 함수가 여기에 사용됩니다. 값이 채워진(<Значение>) , 매개변수에 전달된 값이 동일한 유형의 기본값과 다른지 확인합니다. 절차 신고하기메시지 상자 1C 8에 지정된 텍스트를 표시합니다. 예어 반품프로시저의 실행을 중단합니다.

    테이블 형식 부분의 데이터를 선택하는 쿼리 작성을 시작해 보겠습니다. 제품문서 재화 및 용역의 수령. 새 요청을 만들어 보겠습니다.

    요청 = 새 요청;

    요청.SetParameter( "영수증 문서",영수증 문서);

    요청의 텍스트를 작성해 보겠습니다. 요청 생성자. 수동으로 요청 텍스트를 작성하는 것은 권장되지 않으며, 비효율적이며 시간이 많이 걸립니다. 한 줄부터 시작하겠습니다.

    요청.텍스트 = "" ;

    따옴표 문자 사이에 커서를 놓고 마우스 오른쪽 버튼을 눌러 항목을 선택합니다. 요청 생성자.... 그런 다음 새 요청을 생성하라는 메시지가 표시되면 "확인" 버튼을 클릭합니다. 생성자 창이 열리고 왼쪽 부분에 사용 가능한 모든 데이터베이스 테이블이 있습니다. 문서가 필요합니다. 입고 상품 서비스. 그것을 찾아 "+"기호로 열고 표 형식 부분을 선택하십시오. 제품디자이너 화면의 두 번째 부분으로 드래그합니다. 테이블(">" 버튼을 사용하여 원하는 테이블을 이동할 수도 있습니다.)

    이제 "+"( 입고 상품 서비스 상품) 탭 부분을 채우는 데 필요한 필드를 생성자 화면의 세 번째 부분으로 드래그합니다. 필드. 사용 가능한 모든 필드를 선택하지 않고 다음 세트로 제한합니다. 명칭, 수량, 가격, 금액, VAT 세율, VAT 금액.

    하나의 영수증 문서(채우기를 시작하기 전에 선택한)의 데이터만 필요하므로 "조건" 탭에서 전달한 매개변수를 사용하여 문서 링크에 조건을 부과합니다.

    이제 생성자에서 쿼리 텍스트 생성이 완료되었으므로 "확인" 버튼을 클릭합니다. 결과적으로 다음과 같은 요청 텍스트가 있습니다.

    Query.Text = "SELECT |FROM |WHERE ;

    생성된 요청은 실행하고 변수로 언로드하기만 하면 됩니다.

    결과 = Request.Execute().Upload();

    변수에서 결과값 테이블은 테이블 부분의 행과 함께 저장됩니다. 제품우리가 선택한 문서 재화 및 용역의 수령. 이제 스프레드시트 작성을 시작할 수 있습니다. 제품우리의 구현. 그러나 데이터를 채우기 전에 이미 행이 있는 경우 데이터를 지워야 합니다.

    TablePart.Clear();

    주기로 모두를 위해쿼리 결과로 값 테이블을 살펴 보겠습니다.

    결과 루프의 각 결과 요소에 대해 루프 끝 ;

    이 주기에서는 문서의 표 형식 부분의 줄을 만들고 채울 것입니다. 상품 및 서비스 판매. 만들다 개행우리는 변수를 사용할 수 있습니다 표 형식, 이를 통해 모든 작업을 수행할 수 있습니다.

    NewStringPT = TabularPart.Add();

    생성된 라인 탭을 채웁니다. 프로시저를 사용하여 쿼리 결과 문자열의 데이터 부분 글로벌 컨텍스트FillPropertyValues(<Приемник>, <Источник>) .

    FillPropertyValues(NewStringPT, 결과 요소);

    그러나 우리가 채운 데이터가 충분하지 않습니다. 문서를 수행하려면 더 많이 채워야합니다. 재고 회계 계정. 이를 위해 내보내기를 사용합니다.

    절차 청구서 작성AccountingInRowTabParts문서 개체 모듈에서 상품 및 서비스 판매. 매개변수로 호출하자 객체(참고해야 할

    우리만 부를 수 있는 내보내다문서 개체 모듈의 절차).

    Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True);

    이것으로 표 부분을 채우는 프로그래밍이 완료됩니다. 1C 8완전한. 처리를 사용할 수 있습니다. 절차 전문 초기화, 다음과 같이 보입니다.

    절차 초기화 (개체, TabularPartName = 정의되지 않음, 개체 TableField = 정의되지 않음) 내보내다 TablePart = 개체[TablePartName]; IncomingSelectionForm = GetForm("양식"); 입학선택폼.OpenModally(); 값이 채워지지 않은 경우(수신 문서) 다음 보고( "선택된 영수증 문서가 없습니다"); 반품 ; 종료하면 ; 요청 = 새 요청; 요청.SetParameter( "영수증 문서",영수증 문서); Query.Text = "선택 | 상품, 서비스, 상품 수령. | 상품, 서비스, 상품의 수령 수량, | 상품, 서비스, 상품 수령 VAT 세율, | 상품, 서비스, 상품의 수령 금액, | 상품, 서비스, 상품 수령 VAT 금액, | 상품, 서비스, 상품 수령 가격| 부터 | Document.Receipt of GoodsServices.Goods AS Receipt of GoodsServiceGoods|어디 | GoodReceiptServicesGoods.Reference = ReceiptDocument(&ReceiptDocument)"; 결과 = Request.Execute().Upload(); TablePart.Clear(); 결과 루프의 각 결과 요소에 대해 NewRowPT = TabularPart.Add(); FillPropertyValues(NewStringPT, 결과 요소); Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True); 엔드 사이클 ; 종료 절차

    기사의 다음 부분에서는 표 형식 부분을 채우는 과정을 디버깅하는 방법과 문서에 연결하는 방법을 설명합니다.

    4. 디버깅

    종종 작성한 코드를 디버그해야 합니다. 표 형식 부분을 채우는 처리를 디버그하려면 1C 8그녀의 소품 만들기 개체 참조유형 DocumentReference.Realization of GoodsServices

    디버깅 중에 구현 문서를 선택하려면 이 문서가 필요합니다. 이 문서는 작성합니다. 다음으로 디버깅을 위한 양식을 만들고 생성된 props를 거기에 배치해야 합니다. 개체 참조, 디버깅 양식을 작성하는 과정은 영수증 문서 선택 양식을 작성하는 것과 다르지 않으므로 자세히 다루지 않습니다.

    양식이 생성되면 해당 모듈로 이동합니다. 거기에서 자동으로 생성된 프로시저를 찾을 수 있습니다. ButtonExecutePushing. 이 절차는 버튼을 눌렀을 때 실행됩니다. 운영. 그것에서 프로시저를 호출하자 초기화, 처리 모듈에 있는 문서 객체를 매개변수에 전달합니다. 상품 및 서비스 판매(우리는 소품에서 얻을 것입니다 개체 참조) 및 채울 표 형식 부분의 이름이 있는 줄(우리의 경우 제품).

    절차 ButtonExecuteClick(버튼)초기화(ReferenceToObject.GetObject(), "상품" ); 종료 절차

    이제 생성된 양식을 기본 처리 양식으로 만들어야 합니다. 이렇게 하려면 "양식 처리" 필드에서 선택합니다.

    이제 중단점을 설정할 수 있습니다. 올바른 장소절차 초기화또는 절차 ButtonExecutePushing디버그 양식 및 디버그 모드에서 표 섹션 채우기 처리 시작 1C:기업.

    5. 문서에 연결하기

    채우기 처리가 작성되고 디버그된 후 실행될 문서에 연결되어야 합니다. 이렇게 하려면 다음으로 이동하십시오. 1C 8모드에서 회사, 메뉴로 이동 서비스 -> 추가 보고 및 처리 -> 표 형식 부분의 추가 외부 처리그리고 추가 새로운 요소예배 규칙서. 버튼으로 외부 처리 파일 교체우리가 만든 표 섹션을 채우는 처리 파일을 추가합시다.

    버튼을 사용하여 처리 소속을 입력하십시오. 선택문서를 선택 상품 및 서비스 판매

    그리고 우리는 채우기가 표 부분을위한 것임을 나타냅니다. 제품.

    우리는 버튼을 누릅니다 확인그게 다야 메뉴에서 채우기 처리를 사용할 수 있습니다. 채우다표 부분 제품문서 상품 및 서비스 판매. 에서 이 예제에 사용된 처리를 다운로드할 수 있습니다.

    따라서 1C에는 디렉토리가 있습니다. 예를 들어, 상품의 참고서(명명). 거기에서 우리 조직이 판매하는 상품 목록을 표시합니다.

    이러한 디렉토리의 도움으로 우리는 고객을 위한 가격 목록과 관리를 위한 판매 보고서를 구성할 수 있습니다.

    상품이 다릅니다. 예를 들어, 제품 및 화학. 관리자가 보고서를 작성하도록 요청하면 어떻게해야합니까? 제품에서 얼마나 많은 돈을 벌었고 화학에서 얼마를 벌었습니까?

    용이하게! 우리는 대답할 것입니다. 당신은 상품의 유형의 디렉토리를 추가해야 하고, 명명법 디렉토리에 그러한 속성을 추가해야 합니다. 이제 우리가 들어갈 때 신상품- 상품의 종류를 선택하셔야 합니다.

    그러나 소녀들은이 혁신에 만족하지 않습니다. 이제는 전체 추가 필드를 채워야하고 이미 많은 작업을 수행하고 아무 것도 할 시간이 없기 때문입니다. 그리고 일반적으로! - 그들은 말합니다 - 우리는 900개의 제품 항목과 50개의 화학 항목만 가지고 있습니다! 바보라도 기본 제품 유형을 제품으로 설정해야 한다는 것은 분명합니다.

    훌륭한! - 우리는 주목한다. 그리고… 무엇을 해야 할까요?

    상수 1C

    상수를 편집하려면 기본 상수 양식이 열립니다. 이러한 양식의 각 필드는 하나의 상수입니다.

    상수 형식을 추가하는 방법에는 두 가지가 있습니다.

    • 1C 상수 분기를 마우스 오른쪽 버튼으로 클릭하고 상수 생성 메뉴 항목을 선택합니다.
    • 일반/일반 양식 분기에 양식을 추가하고 마법사에서 양식 유형 - 상수 양식을 선택하십시오.

    다음과 같이 상수 형식을 보고 선택할 수 있습니다.

    • 구성 속성을 입력하고(프로그래머가 일반적으로 "헤드"라고 부르는 구성의 최상위 루트 분기를 마우스 오른쪽 버튼으로 클릭) 상수 기본 양식 속성을 사용합니다.

    상수 형식은 형식의 기본 속성이 "ConstantsSet" 유형을 갖는다는 점에서 다릅니다. 이를 통해 1C 상수를 개별적으로가 아니라 세트로 즉시 작성할 수 있습니다.

    그건 그렇고, form 속성의 Data 속성에 지정되어 있으면 form 속성이 "main"이 됩니다.

    1C 프로그램에서 모든 상수에 쉽고 간단하게 액세스할 수 있습니다.

    값 = Constants.DesiredConstant.Get(); //읽다
    상수.DesiredConstant.Set(Vn); //쓰다

    세션 매개변수 1C

    따라서 문제는 간단하고 우아하게 해결됩니다. 기본 유형의 제품을 저장할 상수를 만듭니다.

    새 제품을 만들 때 1C 언어의 프로그램은 OnOpeningForm()의 제품 유형 필드 값을 상수에 할당된 값으로 설정합니다. 짜잔!

    이제 프로그램이 작동하지만 여기서 멈추지 않을 것입니다! 여전히 - 우리는 멋진 프로그래머입니다. 우리는 프로그램이 작동할 뿐만 아니라 빠르게 작동하기를 원합니다!

    1C 상수는 어디에 저장됩니까? 데이터베이스의 특수 테이블에서. 운영자가 새 제품을 만들 때마다 서버에 침입하여 1C 상수 값을 읽습니다. 운영자가 200명이라면? 최적인가요?

    그럼 어떻게 할까요?

    그리고 여기에서 1C 세션의 매개 변수를 기억합니다. 엔터프라이즈 모드에서 1C를 시작할 때 채워지고 클라이언트에서 즉시 사용할 수 있는 상수와 같은 값입니다. 즉, 클라이언트 측의 일종의 캐시입니다.

    또한 값 저장소에만 상수로 목록을 저장할 수 있다면 고정 배열 유형을 사용하여 동적이지는 않지만 이미 1C 세션 매개변수로 압축을 풀 수 있습니다.

    1C 세션 매개변수는 일반/1C 세션 매개변수 분기에 있는 구성 창에도 있습니다.

    1C 세션 매개변수를 추가하는 것만으로는 충분하지 않습니다. 채워지지 않으면 프로그램에 오류가 표시되기 때문입니다.

    1C 세션의 매개변수 채우기(설정)는 엔터프라이즈 모드에서 1C 시작 시 완료되어야 합니다. 구성의 맨 위 분기(프로그래머는 이를 "헤드"라고 함)를 마우스 오른쪽 버튼으로 클릭하고 세션 모듈 열기 메뉴 항목을 선택합니다.

    모듈에 이미 SetSessionParameters() 함수가 있을 수 있습니다. 아직 이벤트가 없으면 해당 드롭다운 목록에서 이 이벤트를 선택합니다. 다음은 1C 세션 매개변수의 값을 설정하는 예입니다.

    SessionParameters.RequiredParameter = 값; // 처음에 한 번 기록
    값 = SessionParameters.RequiredParameter; //읽기, 엄밀히 말하면 쓰기 후.