Cấu trúc lưu trữ cơ sở dữ liệu (biểu mẫu được quản lý). Cấu trúc lưu trữ cơ sở dữ liệu (biểu mẫu được quản lý) Cấu trúc bảng 1c

Nền tảng 1C là một công cụ cấp cao để làm việc với cơ sở dữ liệu. Nói chung, nhà phát triển không cần phải suy nghĩ về những gì và như thế nào đang xảy ra ở phía DBMS, vì chính nền tảng này sẽ quyết định số lượng bảng sẽ tạo và trường nào sẽ có bên trong chúng.

Tuy nhiên, trong các dự án lớn cần phải làm việc trực tiếp với dữ liệu, chẳng hạn như để phân tích thông tin bằng các công cụ của bên thứ ba hoặc, như trong trường hợp của tôi, để tích hợp cơ sở dữ liệu với các ứng dụng bên ngoài. Trong tình huống như vậy, cần phải có ý tưởng về trường nào của bảng vật lý để tìm kiếm thông tin chúng ta cần.

Chức năng tích hợp chỉ dành cho trường hợp như vậy GetDatabaseStorageStructure(), trả về tất cả dữ liệu cần thiết dưới dạng bảng giá trị. Hơn nữa, một số chi tiết (Trường và Chỉ mục) của bảng này bản thân chúng là bảng giá trị.

Một mặt, thật thuận tiện khi có tất cả dữ liệu trong một cấu trúc, nhưng mặt khác, có thêm khó khăn khi chuyển bảng này sang máy khách (rất tiếc, phương thức Load() không tải các bảng lồng nhau). Do đó, bạn phải chạy qua tất cả các mục trong bảng trong một vòng lặp, điều này dẫn đến công việc chậm hơn với khối lượng lớn.

Do đó, tùy chọn tốt hơn sẽ là chuyển tên đối tượng siêu dữ liệu vào hàm để giảm lượng dữ liệu được trả về. Tuy nhiên, không phải tất cả các bảng DBMS đều được liên kết với siêu dữ liệu cấu hình, vì vậy tôi để lại tùy chọn xem danh sách đầy đủ.

Chức năng xử lý

Khi phần tử cây siêu dữ liệu được kích hoạt, danh sách các bảng, trường và chỉ mục sẽ được điền. Khi bạn bấm đúp vào gốc của cây, tất cả các bảng sẽ được hiển thị, bao gồm cả các bảng dịch vụ (không được khuyến nghị vì khối lượng dữ liệu được tìm kiếm tăng lên).

Trong các phần dạng bảng, các lệnh danh sách và tìm kiếm tiêu chuẩn hoạt động.

Sự khác biệt so với việc triển khai hiện có

Có một số ấn phẩm tương tự, ví dụ, và. Tuy nhiên, điểm bất tiện của chúng là thiếu cây siêu dữ liệu, khiến việc điều hướng trở nên khó khăn. Việc tìm kiếm cũng được thực hiện theo tên của các bảng và trường trong cơ sở dữ liệu chứ không phải ngược lại.

Chức năng gần nhất với ấn phẩm của tác giả (). Ngược lại, quá trình xử lý này chứa cây hoàn chỉnh nhất siêu dữ liệu (gói trao đổi, hằng số, nhật ký tài liệu, v.v.). Bên cạnh đó Cấu trúc dữ liệu được trình bày rõ ràng hơn: danh sách các bảng của đối tượng siêu dữ liệu, danh sách các trường và danh sách chỉ mục được hiển thị theo các phần dạng bảng riêng biệt.

CẬP NHẬT-2018-01-06 (v1.3).Đã khắc phục lỗi xảy ra ở chế độ tương thích 8.3.7 trở lên (hành vi của nền tảng đã thay đổi).

CẬP NHẬT-2012-08-17 (v1.2). Một bản vá đã được tạo để xử lý chính xác các tác vụ thông thường, mục hiển thị sơ đồ các loại tính toán đã được sửa và hành vi khi chuyển đổi loại cấu trúc trong thư mục gốc cấu hình đã được sửa.

tái bút Một số nhà tuyển dụng khi tuyển dụng hỏi về số lượng bảng vật lý và ảo để đăng ký. Sẽ thật tuyệt nếu biết câu trả lời cho những câu hỏi này, đặc biệt vì đây là cấp độ 1C: Chuyên nghiệp. Nếu bạn không chỉ muốn tìm hiểu câu trả lời này mà còn muốn “cảm nhận” những bảng này thì phương pháp này là dành cho bạn!

Cấu trúc trong ngôn ngữ lập trình 1C 8.3 và 8.2 là một tập hợp các cặp “Khóa” và “Giá trị”. Trường “Khóa” có loại chuỗi, trong khi trường “Giá trị” có thể chấp nhận bất kỳ loại dữ liệu nào. Thường được sử dụng để lưu trữ và chuyển một tập hợp các tham số giữa các thủ tục.

Cấu trúc trong ngôn ngữ lập trình 1C có thể được tạo theo hai cách bằng cách sử dụng cấu trúc “Mới”.

Cách thứ nhất:

Cấu trúc = Cấu trúc mới;
Structure.Insert("ParameterKey1", "ParameterValues ​​​​No.1");
Structure.Insert("ParameterKey2", "ParameterValues ​​​​No.2");

Cách thứ hai:

Cấu trúc = Cấu trúc mới("ParameterKey1, ParameterKey2", "ParameterValues ​​​​No.1", "ParameterValues ​​​​No.2");

Cả hai phương pháp sẽ tạo cấu trúc có thể nhìn thấy trong ảnh chụp màn hình khi gỡ lỗi:

Nhận miễn phí 267 bài học video trên 1C:

Thay đổi

Bạn có thể thêm hoặc thay đổi cấu trúc bằng phương thức “Insert()”.

Structure.Insert("KeyName", KeyValue);

Nếu bạn cần thay đổi giá trị của khóa cũ, hãy nhập tên của nó. Nếu bạn thêm khóa mới, hãy thêm tên duy nhất liên quan đến tất cả các khóa trong cấu trúc.

Để xóa một phần tử bộ sưu tập, bạn cần sử dụng phương thức “Xóa”, trong đó bạn chuyển tên khóa:

Structure.Delete("KeyName");

Cũng có thể xóa tất cả các đối tượng trong một bộ sưu tập:

Cấu trúc.Clear();

Đi qua cấu trúc

Để lặp qua một tập hợp cấu trúc, bạn cần sử dụng cấu trúc “Cho mỗi giá trị khóa từ vòng lặp cấu trúc”.

Ví dụ:

Đối với mỗi khóaÝ nghĩa từ vòng lặp cấu trúc
…… // xử lý, ví dụ, thay đổi giá trị
Chu kỳ cuối;

Trong mỗi chu kỳ, bạn sẽ thấy các trường sau có sẵn cho chúng tôi:

Dữ liệu xác định tính logic hoạt động của hệ thống dựa trên 1C:Enterprise thuộc về cơ sở thông tin. Cơ sở thông tin được lưu trữ trong cơ sở dữ liệu dưới dạng một tập hợp các bảng, trong đó 1C:Enterprise 8.1 có thể sử dụng một trong bốn hệ thống quản lý cơ sở dữ liệu (DBMS):
* Được xây dựng trong trong 1C:Enterprise 8.1 (phiên bản tệp của cơ sở thông tin). Trong trường hợp này, tất cả dữ liệu cơ sở thông tin được lưu trữ trong tệp có tên 1Cv8.1CD. Tệp này có định dạng nhị phân và về cơ bản là cơ sở dữ liệu cho DBMS được tích hợp trong 1C:Enterprise 8.1.
*Máy chủ Microsoft SQL(phiên bản máy khách-máy chủ của cơ sở thông tin). Tất cả dữ liệu cơ sở thông tin được lưu trữ trong cơ sở dữ liệu Microsoft SQL Server.
* PostgreSQL(phiên bản máy khách-máy chủ của cơ sở thông tin). Tất cả dữ liệu cơ sở thông tin được lưu trữ trong cơ sở dữ liệu PostgreSQL.
* IBM DB2(phiên bản máy khách-máy chủ của cơ sở thông tin). Tất cả dữ liệu cơ sở thông tin được lưu trữ trong cơ sở dữ liệu IBM DB2.

Ở cấp độ đối tượng cơ sở dữ liệu (bảng, trường, chỉ mục, v.v.), cả phiên bản tệp và máy khách-máy chủ của cơ sở thông tin đều có định dạng tương tự (khác nhau ở các chi tiết nhỏ). Một số thông tin về định dạng này được bao gồm dưới đây.

Toàn bộ cơ sở thông tin được trình bày trong cơ sở dữ liệu dưới dạng một tập hợp các bảng. Trong số đó có một số bảng nhất thiết phải có trong chế độ xem của bất kỳ cơ sở thông tin nào:

*Cấu hình- Cấu hình cơ bản của cơ sở thông tin. Cấu hình này tương ứng với cấu trúc dữ liệu thực và được 1C:Enterprise 8.0 sử dụng ở chế độ Doanh nghiệp.
*Lưu cấu hình- cấu hình được chỉnh sửa bởi Trình cấu hình. Cấu hình từ ConfigSave được ghi lại thành Config khi thực hiện “Cập nhật cấu hình cơ sở dữ liệu” trong Bộ cấu hình và ngược lại - khi thực hiện thao tác “Cấu hình - Cấu hình cơ sở dữ liệu - Quay lại cấu hình cơ sở dữ liệu” trong Bộ cấu hình.
* Các tập tin chứa thông tin dịch vụ, ví dụ: về cách làm việc với kho lưu trữ cấu hình.
* Thông số chứa các tham số cơ sở thông tin. Trong số đó:
=> Danh sách người sử dụng cơ sở thông tin.
=> Thiết lập cơ sở thông tin quốc gia.
=> Bảng tương ứng giữa các đối tượng siêu dữ liệu và các đối tượng cơ sở dữ liệu (bảng, trường, chỉ mục).
=> Một số thông tin khác.
*_NămGiảm giá- bù ngày trong cơ sở dữ liệu. Bảng này chỉ được tạo khi sử dụng Microsoft SQL Server.
* Lược đồ DB chứa thông tin về cấu trúc của cơ sở dữ liệu 1C:Enterprise và xác định các đối tượng cơ sở dữ liệu khác được cơ sở thông tin này sử dụng.

Khi 1C:Enterprise khởi động, nó sẽ kiểm tra sự hiện diện của các bảng được liệt kê trong cơ sở thông tin và nếu thiếu bất kỳ bảng nào trong số chúng thì thông báo “cơ sở thông tin đã bị hủy” sẽ hiển thị. Sự vắng mặt của tất cả các bảng được liệt kê có nghĩa là cơ sở thông tin trống. Trong trường hợp sau, các bảng này sẽ được tạo.

Danh sách và cấu trúc của các bảng cơ sở dữ liệu khác được xác định bởi cấu hình cụ thể, cụ thể là các đối tượng siêu dữ liệu được xác định trong đó. Mỗi tên bảng bao gồm một tiền tố chữ cái theo sau là một số. Tiền tố xác định mục đích của bảng và số cho phép bạn phân biệt giữa các bảng có cùng mục đích thuộc về các đối tượng siêu dữ liệu khác nhau. Nếu IBM DB2 được sử dụng làm DBMS thì cấu trúc được mô tả không phải là tên của các bảng mà là bí danh của chúng.

Nếu ít nhất một gói trao đổi được xác định trong cấu hình có đặt cờ "Cơ sở thông tin phân tán" thì các bảng sau sẽ được tạo:

*_ConfigChangeRec- bảng đăng ký thay đổi đối tượng cấu hình.
* _ConfigChangeRec_ExtProps- bảng tên tệp của các thuộc tính bên ngoài được sửa đổi của các đối tượng cấu hình.

Dưới đây là danh sách các đối tượng siêu dữ liệu khác nhau mà mỗi bảng có thể tương ứng.

* Hằng số
=> _Consts chứa các giá trị hiện tại của tất cả các hằng số được xác định trong cấu hình.
=> _ConstsChangeRec - bảng đăng ký các thay đổi liên tục. Được tạo nếu có ít nhất một hằng số tham gia vào ít nhất một kế hoạch trao đổi.
* Chia sẻ kế hoạch
=> _Nút - bảng kế hoạch trao đổi.
=> _Nút _VT - phần dạng bảng của kế hoạch trao đổi, được tạo cho từng phần dạng bảng.
* Thư mục
=> _Thẩm quyền giải quyết - bảng tham khảo.
=> _Thẩm quyền giải quyết _VT - phần dạng bảng của thư mục - cho từng phần dạng bảng.
=> _ReferenceChangeRec - bảng để đăng ký thay đổi thư mục. Được tạo nếu thư mục tham gia vào ít nhất một kế hoạch trao đổi.
* Tài liệu
=> _Tài liệu - một bảng tài liệu cho từng "tài liệu" đối tượng siêu dữ liệu.
=> _Tài liệu _VT - phần dạng bảng của tài liệu - cho từng phần dạng bảng của mỗi tài liệu.
=> _Tài liệuThay đổiRec - một bảng để đăng ký các thay đổi đối với đối tượng siêu dữ liệu thuộc loại “tài liệu”. Được tạo cho từng đối tượng siêu dữ liệu thuộc loại "tài liệu" nếu nó tham gia vào ít nhất một gói trao đổi.
* Trình tự tài liệu
=> _Sự liên tiếp - bảng đăng ký tài liệu - cho mỗi chuỗi.
=> _Ranh giới tuần tự - bảng ranh giới trình tự - cho mỗi trình tự.
=> _Trình tự thay đổiRec - bảng để ghi lại những thay đổi trình tự. Được tạo cho mỗi chuỗi tham gia vào ít nhất một kế hoạch trao đổi.
* Nhật ký tài liệu.
=> _Nhật ký tài liệu - bảng nhật ký tài liệu, được tạo cho mỗi nhật ký tài liệu.
* Chuyển khoản
=> _Enum - bảng liệt kê - một bảng cho mỗi bảng liệt kê.
* Sơ đồ các loại đặc điểm
=> _Chrc - bảng chính của kế hoạch các loại đặc điểm.
=> _Chrc _VT - phần dạng bảng của sơ đồ các loại đặc điểm - cho từng phần dạng bảng.
=> _ChrcChangeRec - bảng ghi lại những thay đổi trong kế hoạch của các loại đặc điểm. Được tạo nếu kế hoạch loại đặc tính tham gia vào ít nhất một kế hoạch trao đổi.
* Sơ đồ tài khoản
=> _Tài khoản - bảng chính của biểu đồ tài khoản.
=> _Tài khoản _ExtDim - một bảng các loại biểu tượng con của biểu đồ tài khoản, được tạo cho biểu đồ tài khoản nếu số lượng biểu tượng con tối đa lớn hơn 0.
=> _Tài khoản _VT - phần dạng bảng của sơ đồ tài khoản, được tạo cho từng phần dạng bảng của sơ đồ tài khoản.
=> _AccChangeRec - bảng ghi lại những thay đổi trong sơ đồ tài khoản. Được tạo nếu biểu đồ tài khoản tham gia vào ít nhất một kế hoạch trao đổi.
* Sơ đồ các loại tính toán
=> _CalcKind - bảng chính của kế hoạch các loại tính toán.
=> _CalcKind _BaseCK là một bảng gồm các loại tính toán cơ bản, được tạo cho sơ đồ các loại tính toán nếu thuộc tính “Phụ thuộc cơ sở” của nó có giá trị khác “Không phụ thuộc”.
=> _CalcKind _DisplacedCK - một bảng gồm các loại tính toán bị dịch chuyển, được tạo cho sơ đồ loại tính toán nếu cờ "Sử dụng khoảng thời gian hiệu lực" của nó được đặt.
=> _CalcKind _LeadingCK - bảng các loại tính toán hàng đầu - cho từng phương án loại tính toán.
=> _CalcKindDN - một bảng phụ trợ cho thứ tự dịch chuyển, được tạo nếu kế hoạch của các loại tính toán có đặt cờ "Sử dụng khoảng thời gian hiệu lực".
=> _CalcKind _VT - phần dạng bảng của sơ đồ các loại tính toán, được tạo cho từng phần dạng bảng.
=> _CalcKindChangeRec - bảng ghi lại những thay đổi trong kế hoạch của các loại tính toán. Được tạo nếu kế hoạch loại tính toán tham gia vào ít nhất một kế hoạch trao đổi.
* Sổ đăng ký thông tin
=> _Thông tinReg - bảng thông tin đăng ký chuyển động.
=> _InfoRegChangeRec - bảng đăng ký thay đổi trong sổ đăng ký thông tin. Được tạo nếu sổ đăng ký thông tin tham gia vào ít nhất một kế hoạch trao đổi.
* Sổ đăng ký tích lũy
=> _AccumReg - bảng chuyển động của sổ đăng ký tích lũy.
=> _AccumRegTổng số - bảng tổng số đăng ký tích lũy, nếu đăng ký hỗ trợ số dư.
=> _AccumRegDoanh thu - bảng các vòng quay của thanh ghi tích lũy, nếu thanh ghi hỗ trợ các vòng quay.
=> _AccumRegChangeRec - bảng để ghi lại những thay đổi trong sổ đăng ký tích lũy. Được tạo nếu sổ đăng ký tích lũy tham gia vào ít nhất một kế hoạch trao đổi.
=> _AccumRegOptions - bảng cài đặt để lưu trữ tổng số thanh ghi tích lũy, một cho tất cả các thanh ghi tích lũy.
* Sổ kế toán
=> _AcntReg - Bảng biến động trong sổ kế toán.
=> _AcntRegED - bảng giá trị tài khoản phụ của sổ đăng ký kế toán, được tạo nếu nó đề cập đến biểu đồ tài khoản trong đó số lượng tài khoản phụ tối đa lớn hơn 0.
=> _AcTtl0 - bảng tổng tài khoản.
=> _AcTtl - trong đó i từ 1 đến số lượng nội dung con tối đa. Bảng tổng tài khoản có số loại subconto bằng i.
=> _AcTtlC - bảng tổng doanh thu giữa các tài khoản, chỉ dành cho sổ kế toán hỗ trợ thư từ.
=> _AcntRegChangeRec - Bảng ghi các thay đổi trong sổ kế toán. Được tạo nếu sổ đăng ký kế toán tham gia vào ít nhất một kế hoạch trao đổi.
=> _AccntRegOptions - bảng cài đặt để lưu trữ tổng số, một bảng cho tất cả các sổ đăng ký kế toán.
* Sổ đăng ký tính toán
=> _CalcReg - bảng tính chuyển động của thanh ghi.
=> _CalcRegActPer - một bảng các khoảng thời gian hiệu lực thực tế cho thanh ghi tính toán, được tạo nếu cờ "Thời gian hiệu lực" được đặt cho thanh ghi tính toán.
=> _CalcRegChangeRec - bảng để đăng ký thay đổi trong sổ đăng ký tính toán. Được tạo cho mỗi sổ đăng ký thanh toán tham gia vào ít nhất một kế hoạch trao đổi.
=> _CalcRegRecalc - bảng tính toán đăng ký tính toán, được tạo cho mỗi lần tính toán lại.
=> _CalcRegRecalcChangeRec - bảng ghi lại những thay đổi trong tính toán lại. Được tạo nếu việc tính toán lại liên quan đến ít nhất một kế hoạch trao đổi.
* Quy trình kinh doanh
=> _BPRoutePoint - bảng các điểm lộ trình của quy trình nghiệp vụ cho từng quy trình nghiệp vụ.
=> _Quy trình kinh doanh - bảng chính của quá trình kinh doanh.
=> _Quy trình kinh doanh _VT - phần dạng bảng của quy trình kinh doanh cho từng phần dạng bảng.
=> _BusinessProcessChangeRec - bảng để ghi lại những thay đổi trong quy trình kinh doanh. Được tạo cho mỗi quy trình kinh doanh tham gia vào ít nhất một kế hoạch trao đổi.
* Nhiệm vụ
=> _Nhiệm vụ - bảng nhiệm vụ chính.
=> _Nhiệm vụ _VT - phần dạng bảng của bài toán cho từng phần dạng bảng.
=> _TaskChangeRec - bảng để ghi lại những thay đổi trong nhiệm vụ. Được tạo cho mỗi đối tượng siêu dữ liệu thuộc loại "tác vụ" tham gia vào ít nhất một kế hoạch trao đổi.

Khi sử dụng IBM DB2, tiền tố bí danh của bảng không bắt đầu bằng dấu gạch dưới mà thay vào đó bắt đầu bằng một phần chữ cái.

Số lượng các bảng này phụ thuộc vào chức năng của cấu hình và có thể khá lớn. Ở chế độ bình thường, 1C:Enterprise không kiểm tra tính khả dụng cũng như tính toàn vẹn và nhất quán của dữ liệu chứa trong chúng. Do đó, điều quan trọng là cơ sở dữ liệu chứa cơ sở thông tin 1C:Enterprise 8.1 phải được bảo vệ khỏi sự truy cập trái phép và việc sửa đổi cơ sở dữ liệu đó chỉ được thực hiện bằng cách sử dụng các công cụ 1C:Enterprise. Để kiểm tra, bạn phải sử dụng chức năng "Quản trị - Kiểm tra và sửa chữa" được tích hợp trong bộ cấu hình.

Điều quan trọng nữa là việc sao lưu và phục hồi cơ sở dữ liệu lưu trữ cơ sở thông tin chỉ được thực hiện một cách tổng thể. Với mục đích này, nên sử dụng các công cụ sao lưu cơ sở dữ liệu được tích hợp trong DBMS được sử dụng. Có thể thực hiện sao lưu phiên bản tệp của cơ sở thông tin bằng cách sao chép tệp 1Cv8.1CD.

Bộ cấu hình có chức năng đặc biệt: Quản trị - Tải lên cơ sở thông tin. Với sự trợ giúp của nó, bạn có thể tải lên tệp được chỉ định (tệp tải lên) tất cả dữ liệu liên quan đến cơ sở thông tin, v.v. Chức năng đảo ngược “Tải cơ sở thông tin” cho phép bạn tải tất cả dữ liệu từ tệp tải lên vào cơ sở thông tin hiện tại thay vì cơ sở thông tin hiện có. Các chức năng này cũng có thể được sử dụng để sao lưu dữ liệu cơ sở thông tin ở cả phiên bản tệp và máy khách-máy chủ.