1s 8.3에서 Excel 파일 읽기. 1C와 Excel 중 어느 것이 더 낫습니까? DIY 전송 처리 옵션

1C에는 MS Excel 파일을 작업하는 두 가지 방법이 있습니다. COM 개체를 사용하고 스프레드시트 문서 개체를 사용하는 내장 1C 도구를 사용하는 것입니다. 이 두 가지 방법을 더 자세히 살펴보겠습니다.

1. COM 개체를 통해 작업합니다.

이 방법을 사용하려면 MS Excel이 설치되어 있어야 하며, 서버에서 파일로 작업하는 경우 서버에 MS Excel이 설치되어 있어야 하고, 클라이언트의 경우 클라이언트 측에도 MS Excel이 설치되어 있어야 합니다.

예(기사 마지막 부분에서 텍스트 형식으로 볼 수 있습니다):

COM 개체 "Excel.Application"이 제공하는 모든 개체, 메서드 및 속성은 MS Office 프로그래밍 언어인 VBA의 개체, 메서드 및 속성이라는 점에 유의해야 합니다.

메모:

때로는 기존 템플릿을 사용하여 작업해야 하는 경우도 있습니다. 그런 다음 필요한 모든 사용자가 액세스할 수 있도록 이 템플릿을 어딘가에 저장해야 합니다. 그러나 더 간단한 해결 방법이 있습니다. 템플릿을 바이너리 레이아웃으로 저장하는 것입니다.

2. 표 형식 문서 1C를 통해 작업합니다.

1C 스프레드시트 문서는 플랫폼 8부터 기록하기 위해 MS Excel 형식을 지원하지만 플랫폼 8.3.6에서만 열 수 있습니다. 또한 열면 모든 시트가 하나의 스프레드시트 문서에 로드됩니다. 버전 8.3.10부터 로드 시 서로 다른 시트가 서로 다른 영역으로 로드됩니다.

예제 항목은 매우 간단하며 특별한 주의가 필요하지 않습니다.

그러나 여기에 문제가 있습니다. Excel 통합 문서의 1C에서 기록할 때 시트 이름 표시는 기본적으로 비활성화됩니다.

이 문제는 두 가지 방법으로 해결될 수 있습니다. 1 - 책 자체의 설정에서 시트 표시를 활성화합니다(모든 사용자가 이 작업에 동의하는 것은 아닙니다). 2 - COM 개체를 통해 이 작업을 수행합니다(다시 MS Excel을 설치해야 합니다). ).

이 작은 추가 후에 시트 레이블이 MS Excel 파일에 표시됩니다.

읽기 방법은 서버나 Thick 클라이언트에서만 사용할 수 있기 때문에 MS Excel을 읽는 것은 그리 쉬운 작업이 아닙니다. 이렇게 하려면 MS Excel 파일을 서버로 전송해야 합니다.

&On클라이언트

프로시저 CreateDocument()

예외

시도 종료;

도서 = Excel.WorkBooks.Add(); //새 MS Excel 통합 문서 만들기

시트 = Book.WorkSheets.Add(); //시트 추가

Sheet.Name = "1C의 예"; //시트 이름 설정

Sheet.Cells(1,1).Value = "수식을 만들어 보겠습니다.";!}

시트.셀(2,1).값 = 1;

시트.셀(2,2).값 = 2;

Sheet.Cells(2,3).Formula = "=A2+B2";

Sheet.Cells(3,1).Value = CurrentDate();

Book.SaveAs("C:\1\Test.xlsx");

예약.닫기();

절차 종료

&서버에서

함수 GetLayoutServer()

Return FormAttributesValue("Object").GetLayout("TemplateForUpload"); //이 방법으로 외부 처리 레이아웃을 얻습니다.

EndFunction

&On클라이언트

절차작업()

Excel = New COMObject("Excel.Application");

예외

Report("Excel 구성요소 연결 시도가 실패했습니다. Excel이 이 컴퓨터에 설치되지 않았을 수 있습니다!");

시도 종료;

레이아웃 = GetLayoutServer();

Layout.Write(임시파일이름);

질문이 있거나 컨설턴트의 도움이 필요하십니까?

Book = Excel.WorkBooks.Open(TemporaryFileName);

SheetTemplate = Book.WorkSheets(1);

SheetTemplate.Cells(6,1).Value = "날짜:";!}

SheetTemplate.Cells(6,2).Value = CurrentDate();

SheetTemplate.NumberFormat = "dd/mm/yy;@"; // 날짜 형식을 지정합니다. 이 형식은 MS Excel에서 매크로를 기록하여 얻은 것입니다.

SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // 날짜가 정확히 맞도록 열을 늘립니다.

Book.SaveAs(파일이름);

예약.닫기();

절차 종료

&On클라이언트

절차 종료

&On클라이언트

프로시저 WriteTabularDocument()

TabularDocument = 새 TabularDocument();

TabularDocument.Area("R1C1").Text = "1C의 MS Excel 레코드 예";

TabularDocument.Write("C:\1\Test2.xls",TabularDocumentFileType.XLSX);

Excel = New COMObject("Excel.Application");

Excel.WorkBooks.Open("C:\1\Test2.xls");

엑셀.비저블 = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0.6;

Excel.ActiveWorkbook.Save();

Excel.응용 프로그램.종료()

절차 종료

BinaryData = New BinaryData("C:\1\test2.xlsx");

주소=PlaceInTemporaryStorage(BinaryData,ThisForm.UniqueIdentifier) ​​​​;

TabularDocument = UploadOnServer(주소);

TabularDocument.Show();

절차 종료

&서버에서

기능 UploadOnServer(주소)

TemporaryFileName = GetTemporaryFileName("xlsx");

FileData = GetFromTemporaryStorage(주소);

FileData.Write(임시파일이름);

TabularDocument = 새 TabularDocument();

TabularDocument를 반환합니다.

1C에서 Excel 파일을 여는 방법에는 여러 가지가 있으며 그 반대의 경우도 마찬가지입니다. 초보자는 문서를 다른 형식으로 저장하거나 특수 프로그램을 사용하여 보다 간단한 작업을 선호합니다. 그러나 약간의 노력을 들여 소프트웨어 도구를 사용하여 한 프로그램에서 다른 프로그램으로 데이터를 보고 처리하는 방법을 배우는 것은 가치가 있습니다. 이러한 기본 프로그래밍 기술은 향후 일상적인 작업을 피하는 데 도움이 됩니다.

1C에서 Excel 문서를 열거나 그 반대로 여는 방법

Microsoft Excel 스프레드시트 편집기는 1C 회계 소프트웨어 제품보다 기능이 뛰어납니다. 따라서 1C 사용자는 스프레드시트 편집기에서 일부 작업을 수행한 다음 데이터를 회계 프로그램으로 반환하는 것을 선호합니다. 이전에는 많은 회사의 회계가 Microsoft 프로그램을 통해서만 수행되었기 때문에 이는 놀라운 일이 아닙니다. 그러나 현재 기업의 비즈니스 프로세스 자동화 수준에서는 전문 프로그램을 포기하는 것이 불가능합니다. 서로 다른 애플리케이션 간의 상호 작용을 설정하려면 다음과 같은 간단한 방법이 있습니다.

    현재 컴퓨터에 설치되지 않은 소프트웨어 제품의 파일을 처리해야 하는 경우 가장 쉬운 방법은 Excel 표를 1C 형식으로 또는 그 반대로 변환하는 특수 응용 프로그램을 사용하는 것입니다. 1C 제품 웹 사이트에서 찾을 수 있습니다.

    컴퓨터에 1C와 Excel이 모두 있는 경우 "기본" 응용 프로그램에서 파일을 수동으로 연 다음 다른 프로그램 형식으로 저장할 수 있습니다. 이 옵션은 일반적으로 인쇄 가능한 양식이나 레이아웃을 저장할 때 사용할 수 있습니다.

    1C 7.7 사용자는 향상된 테이블 편집기가 있는 버전 1C 8로 업그레이드할 수 있습니다.

1C와 Excel이 프로그래밍 방식으로 상호 작용하는 방법

1C와 Excel 간의 상호 작용은 Microsoft에서 개발한 OLE 자동화 기술을 사용하여 프로그램 수준에서 수행할 수 있습니다. 이를 통해 다양한 프로그램의 스크립트 해석기에서 직접 COM 개체에 액세스할 수 있습니다. 간단히 말해서 OLE를 사용하면 한 프로그램에서 다른 프로그램으로 작업을 전송한 다음 해당 작업을 원래 응용 프로그램으로 되돌릴 수 있습니다. 이것이 바로 회계사에게 Microsoft 스프레드시트 편집기가 필요한 것입니다.

OLE 도구를 사용하기 위해 프로그래머가 될 필요는 없습니다. 코드 줄을 처음 접하면 오류가 발생하지만 확인하면 오류를 식별하는 데 도움이 되며, 얻은 경험은 향후 오류를 방지하는 데 도움이 될 것입니다. 다음은 회계 프로그램에서 Excel 데이터로 작업하거나 그 반대로 작업하는 데 가장 많이 사용되는 명령(목록이라고 함)입니다.

프로그래밍 방식으로 1C에서 Excel 파일을 여는 방법

따라서 데이터를 교환하려는 두 프로그램이 컴퓨터에 모두 설치되어 있으면 프로그래밍 방식으로 상호 작용을 구성할 수 있습니다. 이렇게 하려면 두 응용 프로그램을 모두 시작한 다음 OLE를 사용하여 1C에서 Excel로의 액세스를 설정해야 합니다.

  • 예외

    Report(ErrorDescription() + "이 컴퓨터에 Excel이 설치되어 있지 않습니다!");

  • 시도 종료.

테이블 편집기에 대한 액세스가 설치되었습니다. 이제 액세스하려면 다음 명령을 사용하세요.

    특정 문서:

    • 도서 = Excel.WorkBooks.Open(파일 경로)

    • Sheet = Book.WorkSheets(시트번호);

  • 특정 시트 번호 포함:

    특정 시트 이름 포함:

    • Sheet = Book.WorkSheets(시트이름);

    • 값 = Sheet.Cells(RowNumber, ColumnNumber).Value;

파일의 첫 번째 페이지에서 데이터를 읽으려면 다음 목록을 사용하십시오.

    Excel = CreateObject("Excel.Application");

    도서 = Excel.WorkBooks.Open(파일 경로);

    시트 = Book.WorkSheets(1);

    TotalColumns = Sheet.Cells(1,1).SpecialCells(11).Column;

    TotalRows = Sheet.Cells(1,1).SpecialCells(11).Row;

    For Row = 1 By TotalRows 루프

    • 열의 경우 = 1 By TotalColumns Cycle

      Value = Abbr(Sheet.Cells(행,열).값);

      엔드사이클;

    엔드사이클;

파일 경로는 전체 경로를 지정해야 한다는 점을 기억하세요. 문서 이름을 저장할 때 \, /, :, *, ?, ", >,< и |.

프로그래밍 방식으로 Excel을 통해 1C 파일을 여는 방법

Excel에 데이터를 기록하려면 다음을 수행해야 합니다.

    또는 기존 문서를 엽니다.

    • Book = Excel.WorkBooks.Open(파일 경로) - 1C에서 Excel 파일을 읽는 것과 유사합니다.

    또는 새 항목을 추가하세요.

    • 통합 문서 = Excel.WorkBooks.Add();

    새 문서에서 새 시트를 만들 수 있습니다.

    • 시트 = Book.Sheets.Add();

    셀에 새 값을 추가합니다.

    • Sheet.Cells(RowNumber, ColumnNumber).Value = 값; (OLE를 사용하여 값을 쓰는 방법은 인터넷에 자세히 설명되어 있습니다.)

  • Book.SaveAs(파일 경로);

    예외

    Report(ErrorDescription()+"파일이 저장되지 않았습니다!");

    시도 종료.

스프레드시트 편집기 작업을 마쳤으면 특수 명령(Excel.Application.Quit();)을 사용하여 종료합니다. 이 방법은 추가 작업 중에 컴퓨터 리소스를 절약하는 데 도움이 됩니다.

1C와 Excel 간에 데이터를 교환할 때의 위험

1C와 Excel은 서로 다른 회사에서 개발되었으며 서로 다른 데이터 처리 방법을 사용합니다. 따라서 한 프로그램에서 다른 프로그램으로 테이블을 전송할 때 다음 사항을 기억하십시오.

    분수의 다양한 구분 기호입니다. Microsoft는 쉼표를 사용하여 십진수를 구분합니다. 따라서 회계 프로그램에서 테이블을 전송할 때 날짜가 많고 기타 혼란이 있어도 놀라지 마십시오. 단지 회계 프로그램에서는 분수를 작성할 때 마침표를 사용할 수 있으며 Microsoft 스프레드시트 편집기는 이를 날짜 구분 기호로 해석하고 15.5는 5월 15일이 됩니다. 스프레드시트 편집기에서 회계 데이터를 처리하려면 구분 기호를 쉼표로 바꿔야 합니다.

    Excel에서 1C로 데이터를 전송할 때 회계 프로그램에 없는 Excel 상수가 잘못 표시될 수 있습니다. 이를 해독하려면 스프레드시트 편집기 도움말로 이동하거나 디버깅 모드로 이동하여 다양한 상수의 수치 표현을 확인해야 합니다.

많은 양의 데이터를 교환해야 하거나 오류를 제거할 수 없는 경우 Setby 회사의 전문가에게 도움을 요청하세요. 프로그램 수준에서 문제를 해결하고 작업에 필요한 명령을 이해할 수 있도록 도와드립니다.

이 방법은 간단합니다. 그 본질은 객체가 표 형식 문서다음과 같은 방법이 있습니다.

  • 써 내려 가다 (< ИмяФайла>, < ТипФайлаТаблицы >) 데이터를 파일에 업로드합니다.
  • 읽다 (< ИмяФайла>, < СпособЧтенияЗначений >) 파일에서 데이터를 로드합니다.

주목!

Write() 메서드는 클라이언트와 서버 모두에서 사용할 수 있습니다. Read() 메서드는 서버 측에서만 사용할 수 있습니다. 이것을 기억해야 한다
클라이언트-서버 상호 작용을 계획할 때.

스프레드시트 문서를 파일로 저장하는 예를 살펴보겠습니다. 어떤 방식으로든 TabularDocument 개체를 만들고 채워야 합니다. 하역파일에 대한 작업은 단 한 줄로 완료됩니다.

TabDoc . 쓰기(파일 경로, TabularDocumentFileType.XLSX);

여기 TabDoc- 생성된 스프레드시트 문서, 파일 경로— 업로드할 파일 이름, TabularDocumentFileType.XLSX— 생성된 파일의 형식입니다. 다음 Excel 형식이 지원됩니다.

  • XLS95 - Excel 95 형식;
  • XLS97 - Excel 97 형식;
  • XLSX는 Excel 2007 형식입니다.

TabDoc = 새 TabularDocument;
TabDoc . Read(PathToFile, ReadingTabularDocumentValues.Value 메서드);

여기 파일 경로— 다운로드한 Excel 파일의 경로입니다. 표 형식 문서의 값을 읽는 방법.값소스 문서에서 읽은 데이터를 해석하는 방법을 결정합니다. 사용 가능한 옵션:

  • 의미;
  • 텍스트.

OLE를 통한 교환

OLE 자동화 기술을 통한 교환은 아마도 Excel 파일을 프로그래밍 방식으로 작업하기 위한 가장 일반적인 옵션일 것입니다. Excel에서 제공하는 모든 기능을 사용할 수 있지만 다른 방법에 비해 속도가 느립니다. OLE를 통해 교환하려면 MS Excel 설치가 필요합니다.

  • 최종 사용자의 컴퓨터에서 교환이 클라이언트 측에서 발생하는 경우
  • 1C:Enterprise 서버 컴퓨터에서 서버 측에서 교환이 발생하는 경우.

하역:

//COM 객체 생성
Excel = New COMObject("Excel.Application");
// 경고 및 질문 비활성화
뛰어나다 . DisplayAlerts = 거짓;
// 새 책 만들기
= 엑셀. 통합 문서. 추가하다();
// 첫 번째 시트에 위치
시트 = 책. 워크시트(1);

// 셀에 값 쓰기
시트 . 셀(행 번호, 열 번호). 값 = 셀값;

// 파일 저장
. 다른 이름으로 저장(파일 이름);


뛰어나다 . 그만두다();
엑셀 = 0;

독서:

// -- 옵션 1 --

//COM 객체 생성
Excel = New COMObject("Excel.Application");
// 책을 엽니다
= 엑셀. 통합 문서. 열려 있는( 파일 경로);

시트 = 책. 워크시트(1);

// 책을 닫는다
. 닫기(0);

// Excel을 닫고 메모리를 확보합니다.
뛰어나다 . 그만두다();
엑셀 = 0;

// —— 옵션 2 ——

// 책을 엽니다
= GetCOM객체( 파일 경로);
// 원하는 시트에 위치 지정
시트 = 책. 워크시트(1);

// 셀 값을 읽습니다. 일반적으로 셀 순회 루프는 여기에 있습니다.
CellValue = 시트. 셀(행 번호, 열 번호). 값;

// 책을 닫는다
. 애플리케이션. 퀴티();

을 위한 우회로 Excel 워크시트의 완료된 모든 행에 대해 다음 기술을 사용할 수 있습니다.

// -- 옵션 1 --
행 수 = 시트. 셀(1 , 1 ). 특수셀(11). 열;
RowNumber = 1 행 수 주기
CellValue = 시트. 셀(행 번호, 열 번호). 값;
엔드사이클;

// —— 옵션 2 ——
행번호 = 0 ;
진실주기 동안
행번호 = 행번호 + 1 ;
CellValue = 시트. 셀(행 번호, 열 번호). 값;
ValueFilled가 아닌 경우(CellValue) 그 다음에
중단;
endIf;
엔드사이클;

시트의 모든 행을 순차적으로 순회하는 대신 다음을 수행할 수 있습니다. 모든 데이터를 배열에 덤프그리고 그와 함께 일하세요. 이 접근 방식은 많은 양의 데이터를 읽을 때 더 빠릅니다.

TotalColumns = 시트. 셀(1 , 1 ). 특수셀(11). 열;
총 행 = 나뭇잎. 셀(1 , 1 ). 특수셀(11). 열;

지역 = 나뭇잎. Range(Sheet.Cells(1, 1), Sheet.Cells(TotalRows,TotalColumns));
데이터 = 지역. 값. 부리다();

아래 표에는 OLE를 통해 Excel로 작업하는 데 가장 널리 사용되는 속성과 방법이 나와 있습니다.

행동 암호 코멘트
애플리케이션 작업
애플리케이션 창 가시성 설정 뛰어나다 . 보이는= 거짓;
경고 출력 모드 설정(표시/비표시) 뛰어나다 . 경고 표시= 거짓;
애플리케이션 종료 뛰어나다 . 그만두다();
책 작업
새 책 만들기 = 엑셀. 통합 문서. 추가하다();
기존 통합 문서 열기 = 엑셀. 통합 문서. 열기(파일이름);
책 저장하기 . 다른 이름으로 저장(파일 이름);
책을 닫는다 . 닫기(0);
시트 작업
현재 시트 설정 시트 = 책. 워크시트(시트 번호);
이름 설정 시트 . 이름 = 이름;
보호 설정 시트 . 보호하다();
보호 제거 시트 . 보호 해제();
페이지 방향 설정 시트 . 페이지 설정. 방향 = 2; 1 - 세로, 2 - 가로
왼쪽 테두리 설정 시트 . 페이지 설정. 왼쪽마진 = 엑셀. 센티미터에서포인트(센티미터);
상한 설정 시트 . 페이지 설정. 상단마진 = 엑셀. 센티미터에서포인트(센티미터);
오른쪽 테두리 설정 시트 . 페이지 설정. RightMargin = 엑셀. 센티미터에서포인트(센티미터);
하한 설정 시트 . 페이지 설정. 하단마진 = 엑셀. 센티미터에서포인트(센티미터);
행, 열, 셀 작업
열 너비 설정 시트 . 열(열번호). 열 너비 = 너비;
줄 삭제 시트 . 행(행 번호). 삭제();
열 제거 시트 . 열(열번호). 삭제();
셀 삭제 시트 . 셀(행 번호, 열 번호). 삭제();
값 설정 시트 . 셀(행 번호, 열 번호). 가치 = 가치;
셀 병합 시트 . 범위(시트.셀(행 번호, 열 번호), 시트.셀(행 번호1, 열 번호1)). 병합();
글꼴 설정 시트 . 셀(행 번호, 열 번호). 폰트. 이름 = 글꼴 이름;
글꼴 크기 설정 시트 . 셀(행 번호, 열 번호). 폰트. 크기 = 글꼴 크기;
굵은 글꼴 설정 시트 . 셀(행 번호, 열 번호). 폰트. 용감한 = 1 ; 1 - 굵게, 0 - 보통
이탤릭체 설정 시트 . 셀(행 번호, 열 번호). 폰트. 이탤릭체 = 1 ; 1 - 기울임꼴, 0 - 일반
밑줄 친 글꼴 설정 시트 . 셀(행 번호, 열 번호). 폰트. 밑줄 = 2 ; 2 - 밑줄, 1 - 아님

어떤 속성을 변경해야 하는지 또는 어떤 메서드를 호출해야 하는지 알아내기 위해 다음을 사용할 수 있습니다. 매크로뛰어나다. 필요한 작업으로 매크로를 기록하면 기록된 매크로의 VBA 코드를 볼 수 있습니다.

COMSafeArray 사용

1C에서 엑셀로 대용량 데이터를 다운로드할 때, 개체를 활용하면 속도를 높일 수 있습니다. COMSafeArray. 구문 도우미의 정의에 따르면 COMSafeArray는 다차원 배열에 대한 개체 래퍼입니다. 세이프어레이 COM에서. COM 개체 간에 데이터를 교환하기 위해 SafeArray를 만들고 사용할 수 있습니다. 쉽게 말하면 OLE 기술을 이용하여 애플리케이션 간 교환에 사용할 수 있는 값의 배열입니다.

// COMSafeArray 생성
ArrayCom = New COMSafeArray("VT_Variant" , TotalColumns, TotalRows);
// COMSafeArray 채우기
을 위한 페이지 = 0 TotalLines 기준 - 1주기
을 위한 숫자 = 0 총 열 - 1주기
어레이콤 . SetValue(개수, 페이지, 값);
엔드사이클;
엔드사이클;
// COMSafeArray의 값에 Excel 워크시트 영역 할당
시트 . 범위(시트.셀(1, 1), 시트.셀(TotalRows,TotalColumns)). 값 = 어레이컴;

ADO를 통한 교환

ADO를 통해 교환되는 Excel 파일은 SQL 쿼리를 사용하여 액세스할 수 있는 데이터베이스입니다. MS Excel을 설치할 필요는 없지만 액세스가 제공되는 ODBC 드라이버가 있어야 합니다. 사용할 ODBC 드라이버는 파일에 대한 연결 문자열을 지정하여 결정됩니다. 일반적으로 필요한 드라이버는 컴퓨터에 이미 설치되어 있습니다.

ADO를 통한 교환은 OLE를 통한 교환보다 눈에 띄게 빠르지만 업로드 시 셀 디자인, 페이지 레이아웃, 수식 설정 등의 Excel 기능을 사용할 수 없습니다.

하역:


연결 = New COMObject("ADODB.Connection");


화합물 . 연결 문자열 = "

|데이터 소스=" + 파일명 + ";
;
화합물 . 열려 있는(); // 연결 열기

// 명령에 대한 COM 개체를 만듭니다.
Command = New COMObject("ADODB.Command");

// 테이블 생성을 위한 명령 텍스트 할당
. 명령텍스트 = "CREATE TABLE [Sheet1] (Column1 문자(255), Column2 날짜, Column3 int, Column4 부동)";
. 실행하다(); // 명령을 실행합니다.

// 테이블 행을 추가하기 위한 명령 텍스트 할당
. 명령텍스트 = "[시트1]에 삽입(열1, 열2, 열3, 열4) 값 ​​('abvwhere', '8/11/2017', '12345', '12345,6789')";
명령.실행(); // 명령을 실행합니다.

// 명령을 제거하고 연결을 닫습니다.
명령 = 정의되지 않음;
화합물 . 닫다();
연결 = 정의되지 않음;

새 시트를 만들고 그 구조를 형성하려면 개체를 사용할 수 있습니다. ADOX.카탈로그그리고 ADOX.테이블. 이 경우 코드는 다음과 같습니다.

// 책 작업을 위한 COM 객체 생성
= New COMObject("ADOX.Catalog");
. ActiveConnection = 연결;

// 시트의 데이터 구조로 작업할 COM 개체를 만듭니다.
Table = New COMObject("ADOX.Table");
테이블 . 이름 = "시트1" ;
테이블 . 열. Append("열1", 202);
테이블 . 열. Append("열2", 7);
테이블 . 열. Append("열3", 5);
테이블 . 열. Append("열4", 5);

// 통합 문서에 설명된 구조로 시트를 만듭니다.
. 테이블. 추가(테이블);
테이블 = 정의되지 않음;
도서 = 정의되지 않음;

위의 예에서 메소드에서

테이블 . 열. 추가("열 1", 202);

두 번째 매개변수는 열 유형을 지정합니다. 매개변수는 선택사항입니다. 다음은 일부 열 유형 값입니다.

  • 5 - adDouble;
  • 6 - 광고 통화;
  • 7 - 광고 날짜;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

독서:

// 연결을 위한 COM 개체를 생성합니다.
연결 = New COMObject("ADODB.Connection");

// 연결 문자열 설정
화합물 . 연결 문자열 = "
|공급자=Microsoft.ACE.OLEDB.12.0;
|데이터 소스=" + 파일명 + ";
|확장 속성=""Excel 12.0 XML;HDR=YES"";";
화합물 . 열려 있는(); // 연결 열기

// 선택 항목을 수신할 COM 개체를 생성합니다.
Select = New COMObject("ADODB.Recordset");
요청텍스트 = "[시트1$]에서 * 선택";

// 요청을 실행합니다.
견본 . Open(QueryText, 연결);

// 샘플 결과를 우회합니다.
아직 선택이 아닙니다. EOF() 루프
Column1 값 = 선택. 필드. 항목("열1"). 값 ; // 컬럼 이름으로 접근
Column2Value = 선택. 필드. 항목(0). 값; // 열 인덱스로 접근
견본 . 이동다음();
엔드사이클;

견본 . 닫다();
샘플 = 정의되지 않음;
화합물 . 닫다();
연결 = 정의되지 않음;

연결 문자열에서 매개변수 HDR시트의 첫 번째 줄이 어떻게 인식되는지 결정합니다. 가능한 옵션:

  • 예 - 첫 번째 줄은 열 이름으로 처리됩니다. 이름과 열 인덱스를 통해 값에 접근할 수 있습니다.
  • 아니요 - 첫 번째 줄은 데이터로 처리됩니다. 값은 열 인덱스로만 접근할 수 있습니다.

이 예제에서는 몇 가지 ADO 개체만 다룹니다. ADO 개체 모델은 다음 개체로 구성됩니다.

  • 연결;
  • 명령;
  • 레코드세트;
  • 기록;
  • 필드;
  • 개울;
  • 오류;
  • 매개변수;
  • 속성.

프로그래밍 없이 업로드

1C에서 Excel로 데이터를 저장하려면 프로그래밍에 의존하는 것이 항상 권장되는 것은 아닙니다. 엔터프라이즈 모드에서 사용자가 다운로드에 필요한 데이터를 표시할 수 있으면 프로그래밍 없이 Excel에 저장할 수 있습니다.

스프레드시트 문서(예: 보고서 결과)를 저장하려면 다음 명령을 호출할 수 있습니다. 구하다또는 다른 이름으로 저장…메인 메뉴.

열리는 창에서 저장된 파일의 디렉터리, 이름 및 형식을 선택해야 합니다.

동적 목록(예: 항목 목록)의 데이터를 저장하려면 다음을 수행해야 합니다.

  1. 명령을 사용하여 데이터를 스프레드시트 문서로 출력합니다. 더보기 ⇒ 목록...;
  2. 스프레드시트 문서를 필요한 형식으로 저장합니다.

잠재 고객과 대화할 때 사무실 패키지의 테이블 기능이 충분하고 1C 프로그램의 요점을 보지 못한다는 말을 자주 듣습니다. 일부 사람들은 여전히 ​​이 솔루션을 회계사용 프로그램에만 연관시키기 때문에 이는 사실이 아닙니다.

Excel은 보편적이고 대량 생산되는 제품이므로 이에 대해 논쟁의 여지가 없습니다. 좁은 전문가를 대상으로 하는 1C 개발과 달리 거의 모든 사람이 이 프로그램을 사용할 수 있습니다. "녹색" 테이블을 사용하면 필요한 기능을 자유롭게 구현할 수 있어 편리합니다. 여기에는 모든 상호 결제, 관리 회계, 규제 대상까지 포함된 조직의 재무 모델, 다양한 데이터 시각화 선택, 독립적인 기능이 있습니다. 다양한 추가 기능을 사용하여 프로그램 기능을 확장하세요. 모든 것이 처음부터 여러분의 손에 있습니다...

막 사업을 시작하고 고객, 공급 업체, 규제 당국과의 관계에 대한 테이블의 필요한 데이터를 점차적으로 고려하고 임의의 구조를 구축하는 경우 좋지만 데이터베이스가 방대해지면 다음에해야 할 일과 직원 수십개의 숫자? 아직도 자신의 매개 변수에 따라 계산합니까? 나는 비즈니스의 체계화와 결과적으로 최적화를 방해하는 습관과 편리함을 혼동하지 않기를 바랍니다.

명확성을 위해 예를 들어 무역과 같은 회계 자동화에 어떤 요구가 발생할 수 있는지 상상해 보겠습니다.

1. 특정 기간 내 매출 분석.

영업부서장이 영업데이터를 분석할 수 있습니다. 계획이 실행되고 있는지, 자신의 전략이 얼마나 효과적인지 이해하여 비효율적인 경우 적시에 작업을 조정할 수 있도록 하는 것이 중요합니다.

2. 창고 회계.
판매를 위해서는 재고가 있는 상품, 예약할 수 있는 상품, 품절된 상품, 주문해야 하는 상품을 이해하는 것도 중요하다는 점을 설명해야 합니까? 여기서 모든 것이 명확하다고 생각합니다.

3. 거래 상대방의 데이터베이스를 유지합니다.
소유자가 B2C 부문에서 일반적으로 지금 여기서 구입할 수 있는 것만 판매하더라도 그는 공급업체 기반과 약간 다른 관계를 갖습니다. 계약, 기본... 모든 것이 연결될 때 얼마나 편리한지 상상해 보세요. 공급자는 자동으로 단일 데이터베이스에 즉시 표시됩니까? 창고를 담당하는 관리자는 창고에 있는 상품의 가용성을 즉시 확인하고, 문서를 담당하는 다른 직원은 가용성에 대한 정보, 계약 관계에 따른 모든 의무가 이행되는지 여부, 누가 빚지고 있는지, 금액을 모니터링합니다. 그리고 불일치가 있는 경우 특정 기간 동안의 데이터를 조정하여 1분 이내에 결과를 생성할 수 있습니다.

4. 조직의 이익.
비용 및 수입에 대한 모든 데이터가 이미 데이터베이스에 존재하므로 수익 보고서를 생성하는 것은 어렵지 않습니다. 단, 정보는 적시에, 적어도 요구되는 날짜까지 입력되어야 합니다. 여기서 근본적인 요소는 사용자의 개인적인 책임입니다.

클라이언트와 공급업체가 많지 않은 경우 테이블에 자신만의 다이어그램을 디자인하고 내용을 작성한 다음 문서를 컴퓨터의 계약서, 공급업체, 폴더 등 다양한 폴더에 배포할 시간이 많기 때문에 Excel이 매우 적합할 것입니다. 클라이언트, 이웃 클라이언트, 개발 중인 클라이언트, 삭제할 클라이언트 – 폴더 내에 폴더를 만드는 끝없이 흥미로운 과정입니다. 그리고 정보가 많으면 데이터베이스를 추적하는 것이 편리합니까? 물론 항상 예외가 있습니다. 때로는 재무 데이터가 Excel에서만 유지되는 매출액이 큰 조직이 있습니다. 부서 간 데이터 교환 및 통합에 얼마나 많은 시간이 소요되나요? 나는 대답할 것이다: 많이.

임의의 시스템으로 정리된 수많은 Excel 문서에서 필요한 문서를 어떻게 빨리 찾을 수 있을지 상상이 되지 않습니다. 예를 들어 세무서의 요구 사항에 대한 문서를 제공하는 경우입니다. 정보가 모두 분산되면 회계사는 어떻게 규제 당국에 보고서를 제출합니까? 물론 회계는 아웃소싱될 수 있으며, 불행하게도 일부 사업주들은 균형을 맞추는 한 해당 전문가가 어떤 프로세스를 가지고 있는지 신경 쓰지 않을 수도 있습니다. 하지만 그렇다고 하더라도 문서 교환 과정은 어떻게 구성되어 있을까? 외부 직원은 임시 정보 구조를 얼마나 빨리 이해할 수 있습니까?

1C에 대해서도 똑같이 말할 수 없습니다. 모든 정보가 구조화되고 상호 연결되어 있기 때문입니다.

    모든 표준화된 문서와 사용자 정의 문서로 작업할 수 있는 원격 직원과 정규직 직원을 위한 단일 데이터베이스
    규제 당국에 대한 보고는 프로그램에 이미 반영된 데이터를 기반으로 생성되며, 최종 결과를 얻기 위해 여러 파일을 열거나 여러 값을 하나의 테이블로 결합할 필요가 없습니다.
좋은 의미에서 "1C"는 활동 분야에 따라 일반적인 회계 업무와 모든 조직 프로세스의 자동화를 목표로 하는 멀티 태스킹 시스템입니다. 여기서 주요 단어는 시스템입니다. 누구도 Excel에서 비즈니스 시스템을 구성하는 것을 막지 못합니다. 하지만 시간과 재정적 비용을 최적화하고 작업을 체계화하는 데 도움이 되는 거의 모든 요구 사항을 충족하는 솔루션이 있는데 왜 바퀴를 다시 개발해야 할까요?

엑셀을 옹호하다

아마도 나는 "녹색" 테이블에 데이터를 구성하는 것에 반대하는 것처럼 보였을 것입니다. 별말씀을요. 사실 저는 종종 Excel에서 일부 비즈니스를 수행합니다. 임의의 계산이 필요한 경우, 클라이언트별로 데이터를 분할해야 하는 경우, 1C에 없는 매개변수를 기반으로 분석을 수행하는 경우 - 예, 이런 일이 발생합니다. " Excel"로 이동합니다. 간단히 말해서 표에서는 계산과 비표준 분석을 수행하지만 어쨌든 모든 것을 1C로 체계화합니다.

그런 다음 1C에서 다운로드한 파일을 보려면 1C의 데이터가 스프레드시트에 저장되므로 여전히 Excel이 필요합니다. 이것이 악순환이라고 생각하시나요? 다르게 말하겠습니다. "1C"와 "Excel"은 두 파트너처럼 나란히 있지만 각각 고유 한 목적이 있고 서로를 잘 보완하지만 서로를 대체하지는 않습니다.

특히 대량의 정보와 관련하여 비즈니스의 세부 사항과 초점을 고려하여 우리 주의 입법 시스템을 고려하여 업무를 체계화해야 하는 경우 1C가 필요합니다. 임의의 계산, 처음부터 전략 수립, 비표준 분석 데이터 시각화가 필요한 경우 Excel이 도움이 됩니다. 그러나 이러한 솔루션을 동시에 사용하는 것이 훨씬 더 편리합니다.


최종 결과는 무엇입니까 – “1C” 또는 “Excel”?

처음에는 자동화 재정에 관한 질문이라면 기본 1C 프로그램에 비용이 많이 들지 않지만 Excel을 사용합니다. 큰 장점은 "녹색" 테이블의 데이터를 손실 없이 1C에 로드할 수 있다는 것입니다. 그러나 규모가 커질수록 비즈니스 프로세스 자동화 프로그램에 주의를 기울이는 것이 좋습니다. 그것들이 많고 반드시 1C가 아닐 수도 있습니다 ...

"1C"로의 전환은 고객 및 공급 업체 및 감독 기관과의 관계와 관련된 문제 자동화를 포함하여 리소스를 최적화해야 함을 이해하면 수행될 수 있습니다. 일반적으로 정보 처리에 많은 시간이 걸리고 Excel 파일이 더 이상 입력 데이터의 양을 감당할 수 없을 때 비즈니스 효율성을 높이기 위해 작업 프로세스를 조정합니다.

그러나 모든 "1C"가 귀하에게 적합한 것은 아닙니다. 비즈니스의 세부 사항 및 범위, 규모, 일상 업무의 필요성, 최소화해야 하는 루틴 등 다양한 요소를 고려해야 합니다. 모든 것이 개별적입니다. 내가 이미 말했듯이 진실은 "1C"와 "Excel"사이에 있으며 서로를 보완합니다.

아마 그게 전부일 것입니다. 하지만 궁금한 점이 있으시면 저희에게 연락해 주시면 도와드리겠습니다. 성공적인 비즈니스 프로세스, 동료 여러분!

1C 응용 프로그램은 오랫동안 회계사, 기획자, 경제학자 및 관리자 사이에서 가장 인기 있는 프로그램이었습니다. 다양한 유형의 활동을 위한 다양한 구성이 있을 뿐만 아니라 전 세계 여러 국가의 회계 표준에 맞게 현지화되었습니다. 점점 더 많은 기업이 이 프로그램에서 회계로 전환하고 있습니다. 그러나 다른 회계 프로그램에서 1C로 데이터를 수동으로 전송하는 절차는 시간이 많이 걸리는 다소 길고 지루한 작업입니다. 기업이 Excel을 사용하여 기록을 보관한다면 전송 프로세스가 크게 자동화되고 가속화될 수 있습니다.

이 프로그램을 사용하는 초기 기간 동안뿐만 아니라 Excel에서 1C로 데이터를 전송하는 것이 필요합니다. 활동 중에 스프레드시트 책에 저장된 일부 목록을 입력해야 할 때 이와 같은 기능이 필요할 때가 있습니다. 예를 들어 온라인 상점에서 가격 목록이나 주문을 전송해야 하는 경우입니다. 목록이 작으면 수동으로 입력할 수 있지만, 수백 개의 항목이 포함되어 있으면 어떻게 될까요? 절차 속도를 높이기 위해 몇 가지 추가 옵션을 사용할 수 있습니다.

거의 모든 유형의 문서가 자동 다운로드에 적합합니다.

  • 명명법 목록;
  • 거래상대방 목록
  • 가격 목록;
  • 주문 목록
  • 구매, 판매 등에 관한 정보입니다.

1C에는 Excel에서 데이터를 전송할 수 있는 도구가 내장되어 있지 않습니다. 이러한 목적을 위해서는 다음 형식의 파일인 외부 부트로더를 연결해야 합니다. 에프.

데이터 준비

Excel 테이블 자체에서 데이터를 준비해야 합니다.


Excel 책의 데이터를 준비하기 위한 이러한 보편적인 작업 외에도 사용할 특정 로더의 요구 사항을 준수하도록 문서를 가져와야 하지만 이에 대해서는 조금 더 자세히 설명하겠습니다.

외부 부트로더 연결

확장 기능을 사용하여 외부 부트로더 연결 에프응용 프로그램 1C는 Excel 파일을 준비하기 전과 후에 모두 수행할 수 있습니다. 가장 중요한 것은 로딩 프로세스가 시작되기 전에 이러한 준비 문제가 모두 해결되었다는 것입니다.

다양한 개발자가 만든 1C용 외부 Excel 테이블 로더가 여러 개 있습니다. 정보 처리 도구를 사용하는 예를 고려해 보겠습니다. “스프레드시트 문서에서 데이터 로드하기”버전 1C 8.3의 경우.


1C가 작동하는 주요 데이터베이스 중 하나는 제품 및 서비스 목록입니다. 따라서 Excel에서 로드하는 절차를 설명하기 위해 이러한 특정 유형의 데이터를 전송하는 예를 중심으로 설명하겠습니다.

  1. 처리 창으로 돌아갑니다. 제품 범위를 로드할 것이므로 매개변수의 스위치가 위치에 있어야 합니다. "예배 규칙서". 그러나 기본적으로 이 방식으로 설치됩니다. 다른 유형의 데이터(표 섹션 또는 정보 레지스터)를 전송하려는 경우에만 전환해야 합니다. 다음으로 현장에서 "디렉토리 보기"줄임표가 있는 버튼을 클릭하세요. 드롭다운 목록이 열립니다. 그 안에서 항목을 선택해야 합니다. "명명법".
  2. 그런 다음 핸들러는 프로그램이 이러한 유형의 참조 서적에 사용하는 필드를 자동으로 배치합니다. 모든 필드를 채울 필요가 전혀 없다는 점을 즉시 주목해야합니다.
  3. 이제 휴대용 Excel 문서를 다시 엽니다. 열 이름이 해당 항목을 포함하는 1C 디렉터리 필드의 이름과 다른 경우 이름이 완전히 일치하도록 Excel에서 이러한 열의 이름을 바꿔야 합니다. 테이블에 디렉터리에 유사 항목이 없는 열이 포함되어 있으면 해당 열을 삭제해야 합니다. 우리의 경우 이러한 열은 다음과 같습니다. "수량"그리고 "가격". 또한 문서의 열 순서는 처리 과정에서 제시된 순서와 엄격하게 일치해야 한다는 점도 추가해야 합니다. 로더에 표시되는 일부 열에 대한 데이터가 없는 경우 해당 열은 비워 둘 수 있지만 데이터가 있는 열의 번호 지정은 일치해야 합니다. 편집의 편의성과 속도를 위해 특별한 Excel 기능을 사용하여 열을 빠르게 이동할 수 있습니다.

    이 단계를 완료한 후 아이콘을 클릭하세요. "구하다", 이는 창의 왼쪽 상단에 플로피 디스크를 묘사하는 아이콘으로 표시됩니다. 그런 다음 표준 닫기 버튼을 클릭하여 파일을 닫습니다.

  4. 1C 처리 창으로 돌아갑니다. 버튼을 클릭하세요 "열려 있는", 노란색 폴더로 표시됩니다.
  5. 파일 열기 창이 열립니다. 필요한 Excel 문서가 있는 디렉터리로 이동해 보겠습니다. 기본 파일 표시 스위치는 확장자로 설정됩니다. mxl. 필요한 파일을 표시하려면 파일을 다음 위치로 이동해야 합니다. "엑셀 시트". 그런 다음 전송할 문서를 선택하고 버튼을 클릭하십시오. "열려 있는".
  6. 그러면 콘텐츠가 핸들러에서 열립니다. 데이터가 올바르게 입력되었는지 확인하려면 버튼을 클릭하세요. "충진 제어".
  7. 보시다시피 채우기 제어 도구는 오류가 발견되지 않았음을 알려줍니다.
  8. 이제 탭으로 이동해 보겠습니다. "설정". 안에 "검색 필드"명명법 디렉토리에 입력된 모든 이름에 대해 고유한 줄에 체크 표시를 합니다. 이를 위해 가장 자주 사용되는 필드는 다음과 같습니다. "공급업체 코드"또는 "이름". 목록에 새 항목을 추가할 때 데이터가 중복되지 않도록 하려면 이 작업을 수행해야 합니다.
  9. 모든 데이터를 입력하고 설정이 완료되면 정보를 디렉토리에 직접 로드할 수 있습니다. 이렇게하려면 비문을 클릭하십시오 "데이터 로드".
  10. 다운로드 프로세스가 진행 중입니다. 완료 후 항목 참고서로 이동하여 필요한 모든 데이터가 추가되었는지 확인할 수 있습니다.

우리는 1C 8.3 프로그램의 명명법 디렉터리에 데이터를 추가하는 절차를 따랐습니다. 다른 디렉토리 및 문서의 경우 동일한 원칙에 따라 다운로드가 수행되지만 사용자가 스스로 알아낼 수 있는 약간의 뉘앙스가 있습니다. 또한 절차는 타사 로더에 따라 다를 수 있지만 일반적인 접근 방식은 모두 동일합니다. 먼저 프로세서는 파일의 정보를 편집된 창으로 로드한 다음 추가됩니다. 1C 데이터베이스에 직접 연결됩니다.