Lựa chọn trình tạo truy vấn 1c. Trình tạo báo cáo và Trình tạo truy vấn làm việc với nguồn dữ liệu tùy chỉnh. Ví dụ về cách sử dụng trình tạo để bật các lựa chọn trong báo cáo

Ngôn ngữ truy vấn trong 1C 8 là một ngôn ngữ tương tự được đơn giản hóa của “ngôn ngữ lập trình có cấu trúc” nổi tiếng (vì nó thường được gọi là SQL). Nhưng trong 1C, nó chỉ được sử dụng để đọc dữ liệu; mô hình dữ liệu đối tượng được sử dụng để thay đổi dữ liệu.

Một sự khác biệt thú vị khác là cú pháp tiếng Nga. Mặc dù trên thực tế bạn có thể sử dụng các cấu trúc bằng tiếng Anh.

Yêu cầu ví dụ:

CHỌN
Ngân hàng.Name,
Ngân hàng.CorrAccount
TỪ
Directory.Banks Ngân hàng HOW

Yêu cầu này sẽ cho phép chúng tôi xem thông tin về tên và tài khoản đại lý của tất cả các ngân hàng hiện có trong cơ sở dữ liệu.

Ngôn ngữ truy vấn là cách đơn giản và hiệu quả nhất để có được thông tin. Như có thể thấy từ ví dụ trên, trong ngôn ngữ truy vấn, bạn cần sử dụng tên siêu dữ liệu (đây là danh sách các đối tượng hệ thống tạo nên cấu hình, tức là thư mục, tài liệu, sổ đăng ký, v.v.).

Mô tả cấu trúc ngôn ngữ truy vấn

Cấu trúc truy vấn

Để lấy dữ liệu, chỉ cần sử dụng cấu trúc “SELECT” và “FROM”. Yêu cầu đơn giản nhất trông như thế này:

CHỌN * TỪ Thư mục.Danh pháp

Trong đó “*” có nghĩa là chọn tất cả các trường của bảng và Directory.Nomenclature – tên của bảng trong cơ sở dữ liệu.

Hãy xem một ví dụ phức tạp và tổng quát hơn:

CHỌN
<ИмяПоля1>LÀM SAO<ПредставлениеПоля1>,
Tổng(<ИмяПоля2>) LÀM SAO<ПредставлениеПоля2>
TỪ
<ИмяТаблицы1>LÀM SAO<ПредставлениеТаблицы1>
<ТипСоединения>HỢP CHẤT<ИмяТаблицы2>LÀM SAO<ПредставлениеТаблицы2>
QUA<УсловиеСоединениеТаблиц>

Ở ĐÂU
<УсловиеОтбораДанных>

NHÓM THEO
<ИмяПоля1>

SẮP XẾP THEO
<ИмяПоля1>

KẾT QUẢ
<ИмяПоля2>
QUA
<ИмяПоля1>

Trong truy vấn này, chúng tôi chọn dữ liệu của các trường “FieldName1” và “FieldName1” từ các bảng “TableName1” và “TableName”, gán từ đồng nghĩa cho các trường bằng toán tử “HOW” và kết nối chúng bằng một điều kiện nhất định “TableConnectionCondition ”.

Từ dữ liệu nhận được, chúng tôi chỉ chọn dữ liệu đáp ứng điều kiện từ “WHERE” “Điều kiện lựa chọn dữ liệu”. Tiếp theo, chúng tôi nhóm yêu cầu theo trường “Tên trường 1”, đồng thời tính tổng “Tên trường 2”. Chúng tôi tạo tổng số cho trường “Tên trường 1” và trường cuối cùng “Tên trường 2”.

Bước cuối cùng là sắp xếp yêu cầu bằng cấu trúc ORDER BY.

Thiết kế chung

Hãy xem cấu trúc chung của ngôn ngữ truy vấn 1C 8.2.

ĐẦU TIÊNN

Sử dụng toán tử này, bạn có thể nhận được số lượng bản ghi đầu tiên. Thứ tự của các bản ghi được xác định theo thứ tự trong truy vấn.

CHỌN 100 ĐẦU TIÊN
Ngân hàng.Name,
Ngân hàng Mã AS BIC
TỪ
Directory.Banks Ngân hàng HOW
SẮP XẾP THEO
Ngân hàng.Name

Yêu cầu sẽ nhận được 100 mục đầu tiên của thư mục “Ngân hàng”, được sắp xếp theo thứ tự bảng chữ cái.

CHO PHÉP

Thiết kế này có liên quan để làm việc với cơ chế. Bản chất của cơ chế này là hạn chế việc đọc (và các hành động khác) đối với người dùng đối với các bản ghi cụ thể trong bảng cơ sở dữ liệu chứ không phải toàn bộ bảng.

Nếu người dùng cố gắng sử dụng truy vấn để đọc các bản ghi mà anh ta không thể truy cập được, anh ta sẽ nhận được thông báo lỗi. Để tránh điều này, bạn nên sử dụng cấu trúc “PHÉP”, tức là yêu cầu sẽ chỉ đọc các bản ghi được phép.

CHỌN ĐƯỢC PHÉP
Kho lưu trữ thông tin bổ sung. Liên kết
TỪ
Directory.Repository Thông tin bổ sung

NHIỀU

Việc sử dụng “DIFFERENT” sẽ ngăn các dòng trùng lặp nhập kết quả truy vấn 1C. Sao chép có nghĩa là tất cả các trường yêu cầu đều khớp.

CHỌN 100 ĐẦU TIÊN
Ngân hàng.Name,
Ngân hàng Mã AS BIC
TỪ
Directory.Banks Ngân hàng HOW

Bàn trống

Cấu trúc này rất hiếm khi được sử dụng để kết hợp các truy vấn. Khi tham gia, bạn có thể cần chỉ định một bảng lồng nhau trống trong một trong các bảng. Toán tử “EmptyTable” phù hợp cho việc này.

Ví dụ từ trợ giúp 1C 8:

CHỌN Link.Number, BẢNG TRỐNG.(Số, Mục, Số lượng) NHƯ Thành phần
TỪ Tài liệu. Hóa đơn chi phí
KẾT HỢP MỌI THỨ
CHỌN Liên kết.Số, Nội dung.(Số dòng, Sản phẩm, Số lượng)
TỪ Tài liệu.Invoice Document.Invoice.Composition.*

KHÔNG CÓ

Một tính năng rất hữu ích cho phép bạn tránh được nhiều sai lầm. YesNULL() cho phép bạn thay thế giá trị NULL bằng giá trị mong muốn. Rất thường được sử dụng để kiểm tra sự hiện diện của một giá trị trong các bảng đã nối, ví dụ:

CHỌN
Liên kết tham chiếu danh pháp,
IsNULL(Item Remaining.QuantityRemaining,0) AS Số lượng còn lại
TỪ


Có thể được sử dụng theo những cách khác. Ví dụ: nếu đối với mỗi hàng, không biết giá trị tồn tại trong bảng nào:

ISNULL(Hóa đơn được nhận.Ngày, Hóa đơn được phát hành.Ngày)

HOW là toán tử cho phép chúng ta gán tên (từ đồng nghĩa) cho một bảng hoặc trường. Chúng tôi đã thấy một ví dụ về việc sử dụng ở trên.

Các cấu trúc này rất giống nhau - chúng cho phép bạn có được chuỗi biểu diễn giá trị mong muốn. Điểm khác biệt duy nhất là REPRESENTATION chuyển đổi bất kỳ giá trị nào thành kiểu chuỗi, trong khi REPRESENTATIONREF chỉ chuyển đổi các giá trị tham chiếu. BẢN ĐẠI DIỆN THAM KHẢO được khuyến nghị sử dụng trong các truy vấn hệ thống tổng hợp dữ liệu để tối ưu hóa, tất nhiên, trừ khi trường dữ liệu tham chiếu được lên kế hoạch sử dụng trong các lựa chọn.

CHỌN
View(Link), // chuỗi, ví dụ “Báo cáo trước số 123 ngày 10/10/2015
Xem(DeletionMark) AS DeleteMarkText, // chuỗi, “Có” hoặc “Không”
ViewReferences(DeletionMark) AS DeleteMarkBoolean //boolean, Đúng hoặc Sai
TỪ
Tài liệu.Báo cáo nâng cao

THỂ HIỆN

Express cho phép bạn chuyển đổi giá trị trường thành kiểu dữ liệu mong muốn. Bạn có thể chuyển đổi một giá trị thành kiểu nguyên thủy hoặc kiểu tham chiếu.

Express cho loại tham chiếu được sử dụng để hạn chế các loại dữ liệu được yêu cầu trong các trường thuộc loại phức tạp, thường được sử dụng để tối ưu hóa hiệu suất hệ thống. Ví dụ:

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items).Loại hoạt độngĐối với thuếKế toánChi phí

Đối với các kiểu nguyên thủy, hàm này thường được sử dụng để giới hạn số lượng ký tự trong các trường có độ dài không giới hạn (các trường như vậy không thể so sánh được). Để tránh lỗi " Tham số không hợp lệ trong hoạt động so sánh. Bạn không thể so sánh các trường
độ dài không giới hạn và các trường thuộc loại không tương thích
", bạn cần thể hiện các trường như sau:

EXPRESS(Nhận xét AS Line(150))

NGÀY KHÁC BIỆT

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

Một ví dụ về việc sử dụng IS NULL trong yêu cầu 1C:

CHỌN TỪ
Tham chiếu
KẾT NỐI TRÁI Đăng kýTích lũy.Sản phẩmInWarehouses.Còn lại NHƯ sản phẩm còn lại
Danh mục phần mềmRef.Link = Hàng đã bánCommitteesRemains.Nomenclature
Ở ĐÂU KHÔNG CÓ Hàng Còn Lại. Số Lượng Còn Lại LÀ NULL

Loại dữ liệu trong truy vấn có thể được xác định bằng cách sử dụng các hàm TYPE() và VALUETYPE() hoặc bằng cách sử dụng toán tử REFERENCE logic. Hai chức năng này tương tự nhau.

Giá trị được xác định trước

Ngoài việc sử dụng các tham số được truyền trong các truy vấn bằng ngôn ngữ truy vấn 1C, bạn có thể sử dụng các giá trị được xác định trước hoặc các tệp . Ví dụ: chuyển khoản, thư mục được xác định trước, biểu đồ tài khoản, v.v.. Đối với điều này, cấu trúc “Value()” được sử dụng.

Ví dụ sử dụng:

WHERE Danh pháp. Loại danh pháp = Giá trị (Thư mục. Các loại danh pháp. Sản phẩm)

WHERE Đối tác. Loại thông tin liên hệ = Giá trị (Số liệu. Loại thông tin liên hệ. Điện thoại)

WHERE Số dư tài khoản.Tài khoản kế toán = Giá trị (Biểu đồ tài khoản.Profit.ProfitsLoss)

Kết nối

Có 4 loại kết nối: BÊN TRÁI, PHẢI, HOÀN THÀNH, NỘI BỘ.

KẾT NỐI TRÁI và PHẢI

Các phép nối được sử dụng để liên kết hai bảng dựa trên một điều kiện cụ thể. Tính năng khi CHỖ NỐI BÊN TRÁI là chúng ta lấy toàn bộ bảng được chỉ định đầu tiên và liên kết có điều kiện với bảng thứ hai. Các trường của bảng thứ hai không thể bị ràng buộc bởi điều kiện sẽ được điền giá trị VÔ GIÁ TRỊ.

Ví dụ:

Nó sẽ trả về toàn bộ bảng Đối tác và chỉ điền vào trường “Ngân hàng” ở những nơi đáp ứng điều kiện “Đối tác.Name = Banks.Name”. Nếu điều kiện không được đáp ứng, trường Ngân hàng sẽ được đặt thành VÔ GIÁ TRỊ.

RIGHT THAM GIA bằng ngôn ngữ 1C hoàn toàn giống nhau kết nối TRÁI, ngoại trừ một điểm khác biệt - trong QUYỀN KẾT NỐI Bảng "chính" là bảng thứ hai, không phải bảng đầu tiên.

KẾT NỐI ĐẦY ĐỦ

KẾT NỐI ĐẦY ĐỦ khác với left và right ở chỗ nó hiển thị tất cả các bản ghi từ hai bảng và chỉ kết nối những bản ghi mà nó có thể kết nối theo điều kiện.

Ví dụ:

TỪ

KẾT NỐI ĐẦY ĐỦ
Directory.Banks Ngân hàng HOW

QUA

Ngôn ngữ truy vấn sẽ chỉ trả về cả hai bảng hoàn toàn nếu điều kiện nối các bản ghi được đáp ứng. Không giống như nối trái/phải, NULL có thể xuất hiện ở hai trường.

THAM GIA TRONG

THAM GIA TRONG khác với bản đầy đủ ở chỗ nó chỉ hiển thị những bản ghi có thể được kết nối theo một điều kiện nhất định.

Ví dụ:

TỪ
Danh mục Đối tác LÀ Khách hàng

THAM GIA TRONG
Directory.Banks Ngân hàng HOW

QUA
Khách hàng.Name = Ngân hàng.Name

Truy vấn này sẽ chỉ trả về các hàng trong đó ngân hàng và đối tác có cùng tên.

Hiệp hội

Cấu trúc THAM GIA và THAM GIA TẤT CẢ kết hợp hai kết quả thành một. Những thứ kia. kết quả của việc thực hiện hai sẽ được “hợp nhất” thành một, một chung.

Nghĩa là, hệ thống hoạt động giống hệt như hệ thống thông thường, chỉ dành cho một bảng tạm thời.

Cách sử dụng INDEX BY

Tuy nhiên, có một điểm cần được tính đến. Việc xây dựng chỉ mục trên bảng tạm thời cũng cần có thời gian để hoàn thành. Vì vậy, chỉ nên sử dụng cấu trúc “ ” nếu biết chắc chắn rằng sẽ có nhiều hơn 1-2 bản ghi trong bảng tạm thời. Nếu không, hiệu ứng có thể ngược lại - hiệu suất của các trường được lập chỉ mục không bù đắp được thời gian cần thiết để xây dựng chỉ mục.

CHỌN
Tỷ giá tiền tệ Mặt cắt ngang mới nhất. Tiền tệ NHƯ tiền tệ,
Tỷ giá tiền tệ Mặt cắt mới nhất.
Tỷ giá tiền tệ PUT
TỪ
Đăng ký thông tin.Tỷ giá tiền tệ.Lát cuối cùng(&Thời gian,) NHƯ Tỷ giá tiền tệLát cuối cùng
CHỈ SỐ THEO
Tiền tệ
;
CHỌN
GiáDanh pháp.Danh pháp,
GiáDanh pháp.Giá,
GiáDanh pháp.Tiền tệ,
Tỷ giá tiền tệ.Tỷ giá
TỪ
Đăng ký thông tin.Danh mục giá.Lát cuối cùng(&Thời gian,
Danh pháp B (&Danh pháp) VÀ Loại giá = &Loại giá) NHƯ Danh pháp giá
LEFT JOIN Tỷ giá tiền tệ NHƯ Tỷ giá tiền tệ
Phần mềm GiáDanh mục.Tiền tệ = Tỷ giá tiền tệ.Tiền tệ

Nhóm

Ngôn ngữ truy vấn 1C cho phép bạn sử dụng các hàm tổng hợp đặc biệt khi nhóm các kết quả truy vấn. Việc nhóm cũng có thể được sử dụng mà không cần các hàm tổng hợp để “loại bỏ” các bản sao.

Các chức năng sau tồn tại:

Số lượng, Số lượng, Số lượng khác nhau, Tối đa, Tối thiểu, Trung bình.

Ví dụ 1:

CHỌN
Bán hàng hóa và dịch vụ Hàng hóa.
SUM(Doanh số hàng hóaServicesGoods.Quantity) AS Số lượng,
SUM(Doanh số hàng hóaServicesGoods.Amount) AS Số tiền
TỪ

NHÓM THEO
Bán hàng hóa và dịch vụ Hàng hóa.

Yêu cầu nhận tất cả các dòng có hàng hóa và tổng hợp theo số lượng, số lượng theo mặt hàng.

Ví dụ số 2

CHỌN
Ngân hàng.Code,
SỐ LƯỢNG (các ngân hàng KHÁC NHAU.Link) NHƯ số lượng bản sao
TỪ
Directory.Banks Ngân hàng HOW
NHÓM THEO
Ngân hàng.Code

Ví dụ này sẽ hiển thị danh sách BIC trong thư mục “Ngân hàng” và hiển thị số lượng bản sao tồn tại cho mỗi BIC.

Kết quả

Kết quả là một cách để lấy dữ liệu từ một hệ thống có cấu trúc phân cấp. Các hàm tổng hợp có thể được sử dụng cho các trường tóm tắt, cũng như cho các nhóm.

Một trong những cách phổ biến nhất để sử dụng kết quả trong thực tế là xóa sổ hàng loạt.

CHỌN




TỪ
Tài liệu. Bán hàng hóa và dịch vụ. Hàng hóa Cách thức bán hàng hóa và dịch vụ Hàng hóa
SẮP XẾP THEO

KẾT QUẢ
TỔNG(Số lượng),
TỔNG(Tổng)
QUA
Danh pháp

Kết quả của truy vấn sẽ có thứ bậc như sau:

Kết quả chung

Nếu bạn cần lấy tổng của tất cả các “tổng”, hãy sử dụng toán tử “CHUNG”.

CHỌN
Bán hàng hóa và dịch vụ Hàng hóa.
Bán hàng hóa và dịch vụ Hàng hóa. Liên kết AS Document,
Bán hàng hóa và dịch vụ Hàng hóa Số lượng AS Số lượng,
Doanh thu bán hàng hóa và dịch vụ Hàng hóa Số tiền AS Số tiền
TỪ
Tài liệu. Bán hàng hóa và dịch vụ. Hàng hóa Cách thức bán hàng hóa và dịch vụ Hàng hóa
SẮP XẾP THEO
Bán hàng hóa và dịch vụ Hàng hóa. Liên kết. Ngày
KẾT QUẢ
TỔNG(Số lượng),
TỔNG(Tổng)
QUA
LÀ PHỔ BIẾN,
Danh pháp

Kết quả thực hiện yêu cầu, chúng ta nhận được kết quả như sau:

Trong đó 1 cấp độ nhóm là tổng hợp tất cả các trường cần thiết.

Sắp xếp

Toán tử ORDER BY được sử dụng để sắp xếp kết quả của truy vấn.

Việc sắp xếp các kiểu nguyên thủy (chuỗi, số, boolean) tuân theo các quy tắc thông thường. Đối với các trường loại tham chiếu, việc sắp xếp xảy ra theo cách biểu diễn bên trong của liên kết (mã định danh duy nhất), thay vì theo mã hoặc theo cách biểu diễn tham chiếu.

CHỌN

TỪ
Directory.Nomenclature AS Danh pháp
SẮP XẾP THEO
Tên

Yêu cầu sẽ hiển thị danh sách các tên trong thư mục danh pháp, sắp xếp theo thứ tự bảng chữ cái.

Tự động đặt hàng

Kết quả của một truy vấn không sắp xếp là một tập hợp các hàng được trình bày một cách hỗn loạn. Các nhà phát triển nền tảng 1C không đảm bảo rằng các hàng sẽ được xuất ra theo cùng một trình tự khi thực hiện các truy vấn giống hệt nhau.

Nếu bạn cần hiển thị các bản ghi bảng theo thứ tự không đổi, bạn phải sử dụng cấu trúc Auto-Order.

CHỌN
Danh pháp.Name AS Tên
TỪ
Directory.Nomenclature AS Danh pháp
ĐẶT HÀNG TỰ ĐỘNG

Bảng ảo

Bảng ảo trong 1C là một tính năng độc đáo của ngôn ngữ truy vấn 1C không có trong các cú pháp tương tự khác. Bảng ảo là cách nhanh chóng để lấy thông tin hồ sơ từ sổ đăng ký.

Mỗi loại thanh ghi có một bộ bảng ảo riêng, có thể khác nhau tùy thuộc vào cài đặt thanh ghi.

  • cắt đầu tiên;
  • cắt sau này.
  • thức ăn thừa;
  • các cuộc cách mạng;
  • số dư và doanh thu.
  • chuyển động từ subconto;
  • các cuộc cách mạng;
  • tốc độ Dt Kt;
  • thức ăn thừa;
  • số dư và doanh thu
  • subconto.
  • căn cứ;
  • dữ liệu đồ thị;
  • thời hạn hiệu lực thực tế.

Đối với nhà phát triển giải pháp, dữ liệu được lấy từ một bảng (ảo), nhưng trên thực tế, nền tảng 1C lấy từ nhiều bảng, chuyển đổi chúng thành dạng được yêu cầu.

CHỌN
Sản phẩm còn lại trong kho và doanh thu.
Sản phẩmInWarehousesRemainingAndTurnover.QuantityInitialRemaining,
Sản phẩmInWarehousesRemainsAndTurnover.QuantityTurnover,
Hàng hóaTrong khoRemainsAndTurnover.QuantityIncoming,
Hàng hóaTrong khoRemainsAndTurnover.QuantityConsumption,
Sản phẩmTrong khoRemainingsAndTurnover.QuantityFinalRemaining
TỪ
Đăng kýTích lũy.Hàng hóaTrongWarehouses.RemainsAndTurnover AS GoodsInWarehousesRemainsAndTurnover

Truy vấn này cho phép bạn nhanh chóng truy xuất một lượng lớn dữ liệu.

Tùy chọn bảng ảo

Một khía cạnh rất quan trọng khi làm việc với các bảng ảo là việc sử dụng các tham số. Các tham số bảng ảo là các tham số chuyên dùng để lựa chọn và cấu hình.

Đối với các bảng như vậy, việc sử dụng lựa chọn trong cấu trúc “WHERE” được coi là không chính xác. Ngoài việc truy vấn trở nên dưới mức tối ưu, có thể nhận được dữ liệu không chính xác.

Một ví dụ về việc sử dụng các tham số này:

Sổ đăng ký tích lũy. Hàng hóa trong kho. Số dư và doanh thu (& Đầu kỳ, & Cuối kỳ, Tháng, Biến động và Biên giới của Kỳ, Danh pháp = & Danh pháp bắt buộc)

Thuật toán cho bảng ảo

Ví dụ: bảng ảo được sử dụng nhiều nhất thuộc loại “Còn lại” lưu trữ dữ liệu từ hai bảng vật lý – số dư và chuyển động.

Khi sử dụng bảng ảo, hệ thống thực hiện các thao tác sau:

  1. Chúng tôi nhận được giá trị được tính toán gần nhất về ngày tháng và số đo trong bảng tổng số.
  2. Chúng ta “cộng” số tiền từ bảng chuyển động với số tiền từ bảng tổng.


Những hành động đơn giản như vậy có thể cải thiện đáng kể hiệu suất của toàn bộ hệ thống.

Sử dụng Trình tạo truy vấn

Trình tạo truy vấn– một công cụ được tích hợp trong hệ thống 1C Enterprise hỗ trợ rất nhiều cho việc phát triển các truy vấn cơ sở dữ liệu.

Trình tạo truy vấn có giao diện khá đơn giản, trực quan. Tuy nhiên, chúng ta hãy xem xét việc sử dụng hàm tạo truy vấn một cách chi tiết hơn.

Trình tạo văn bản truy vấn được khởi chạy từ menu ngữ cảnh (nút chuột phải) ở vị trí mong muốn trong mã chương trình.

Mô tả hàm tạo yêu cầu 1C

Chúng ta hãy xem xét từng tab của nhà thiết kế chi tiết hơn. Ngoại lệ là tab Builder, đây là một chủ đề cho một cuộc thảo luận khác.

Tab Bảng và Trường

Tab này chỉ định nguồn dữ liệu và các trường cần hiển thị trong báo cáo. Về bản chất, cấu trúc SELECT.. FROM được mô tả ở đây.

Nguồn có thể là bảng cơ sở dữ liệu vật lý, bảng đăng ký ảo, bảng tạm thời, truy vấn lồng nhau, v.v.

Trong menu ngữ cảnh của bảng ảo, bạn có thể đặt tham số bảng ảo:

Tab kết nối

Tab này được sử dụng để mô tả các kết nối của một số bảng và tạo các cấu trúc có từ KẾT NỐI.

Tab nhóm

Tại tab này hệ thống cho phép nhóm và tóm tắt các trường bắt buộc của bảng kết quả. Mô tả công dụng của các cấu trúc GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, SỐ LƯỢNG, SỐ KHÁC NHAU.

Tab điều kiện

Chịu trách nhiệm về mọi thứ xuất hiện trong văn bản yêu cầu sau khi xây dựng WHERE, tức là về tất cả các điều kiện áp đặt cho dữ liệu nhận được.

Tab nâng cao

Chuyển hướng Ngoài rađầy đủ các loại thông số rất quan trọng. Chúng ta hãy xem xét từng thuộc tính.

Nhóm Chọn hồ sơ:

  • N đầu tiên– một tham số chỉ trả về N bản ghi cho truy vấn (toán tử FIRST)
  • Không trùng lặp– đảm bảo tính duy nhất của các bản ghi nhận được (toán tử KHÁC)
  • Cho phép– cho phép bạn chỉ chọn những bản ghi mà hệ thống cho phép bạn chọn có tính đến (Cấu trúc ĐƯỢC PHÉP)

Nhóm Loại yêu cầu xác định loại yêu cầu sẽ là: truy xuất dữ liệu, tạo bảng tạm thời hoặc phá hủy bảng tạm thời.

Phía dưới có một lá cờ Khóa dữ liệu đã nhận để sửa đổi sau này. Nó cho phép bạn kích hoạt khả năng thiết lập khóa dữ liệu, đảm bảo an toàn cho dữ liệu từ lúc được đọc cho đến khi được thay đổi (chỉ liên quan đến chế độ khóa Tự động, thiết kế ĐỂ THAY ĐỔI).

Tab Tham gia/Bí danh

Trên tab này của trình thiết kế truy vấn, bạn có thể đặt khả năng nối các bảng và bí danh khác nhau (cấu trúc HOW). Các bảng được chỉ định ở phía bên trái. Nếu bạn đặt các cờ đối diện với bảng, cấu trúc UNITE sẽ được sử dụng, nếu không - UNITE ALL (sự khác biệt giữa hai phương pháp). Ở phía bên phải, sự tương ứng của các trường trong các bảng khác nhau được chỉ định; nếu sự tương ứng không được chỉ định, truy vấn sẽ trả về NULL.

Tab đặt hàng

Điều này chỉ định thứ tự sắp xếp các giá trị (ORDER BY) - giảm dần (DESC) hoặc tăng dần (ASC).

Ngoài ra còn có một lá cờ thú vị - Tự động đặt hàng(trong yêu cầu - ĐẶT HÀNG TỰ ĐỘNG). Theo mặc định, hệ thống 1C hiển thị dữ liệu theo thứ tự “hỗn loạn”. Nếu bạn đặt cờ này thì hệ thống sẽ sắp xếp dữ liệu theo dữ liệu nội bộ.

Tab Truy vấn hàng loạt

Trên tab trình thiết kế truy vấn, bạn có thể tạo những cái mới và cũng có thể sử dụng nó làm điều hướng. Trong văn bản yêu cầu, các gói được phân tách bằng ký hiệu “;” (dấu phẩy).

Nút “Truy vấn” trong trình thiết kế truy vấn

Ở góc dưới bên trái của trình thiết kế yêu cầu có nút Yêu cầu mà bạn có thể xem văn bản yêu cầu bất kỳ lúc nào:

Trong cửa sổ này, bạn có thể điều chỉnh yêu cầu và thực hiện nó.


Sử dụng Bảng điều khiển truy vấn

Bảng điều khiển truy vấn là một cách đơn giản và thuận tiện để gỡ lỗi các truy vấn phức tạp và nhanh chóng thu được thông tin. Trong bài viết này, tôi sẽ cố gắng mô tả cách sử dụng Bảng điều khiển truy vấn và cung cấp liên kết để tải xuống Bảng điều khiển truy vấn.

Chúng ta hãy xem xét kỹ hơn về công cụ này.

Tải xuống bảng điều khiển truy vấn 1C

Trước hết, để bắt đầu làm việc với bảng điều khiển truy vấn, bạn cần tải nó xuống từ đâu đó. Các phương pháp điều trị thường được chia thành hai loại - dạng được kiểm soát và dạng thông thường (hoặc đôi khi, chúng được gọi là 8.1 và 8.2/8.3).

Tôi đã cố gắng kết hợp hai chế độ xem này trong một lần xử lý - biểu mẫu mong muốn sẽ mở ở chế độ vận hành mong muốn (ở chế độ được quản lý, bảng điều khiển chỉ hoạt động ở chế độ dày).

Mô tả bảng điều khiển truy vấn 1C

Hãy bắt đầu xem bảng điều khiển truy vấn với mô tả về bảng xử lý chính:

Trong tiêu đề của bảng điều khiển truy vấn, bạn có thể thấy thời gian thực hiện của truy vấn cuối cùng với độ chính xác đến mili giây, điều này cho phép bạn so sánh các thiết kế khác nhau về mặt hiệu suất.

Nhóm nút đầu tiên trên thanh lệnh có nhiệm vụ lưu các truy vấn hiện tại vào một tệp bên ngoài. Điều này rất thuận tiện; bạn luôn có thể quay lại viết một yêu cầu phức tạp. Hoặc, ví dụ, lưu trữ một danh sách các ví dụ điển hình của một số thiết kế nhất định.

Ở bên trái, trong trường “Yêu cầu”, bạn có thể tạo các yêu cầu mới và lưu chúng trong cấu trúc cây. Nhóm nút thứ hai có nhiệm vụ quản lý danh sách các yêu cầu. Sử dụng nó, bạn có thể tạo, sao chép, xóa, di chuyển một yêu cầu.

  • Hành hìnhlời yêu cầu– Thực hiện và kết quả đơn giản
  • Thực thi gói– cho phép bạn xem tất cả các truy vấn trung gian trong một loạt truy vấn
  • Xem các bảng tạm thời– cho phép bạn xem kết quả mà các truy vấn tạm thời trả về trên một bảng

Thông số yêu cầu:

Cho phép bạn đặt các tham số hiện tại cho yêu cầu.

Trong cửa sổ tham số truy vấn, điều thú vị sau đây:

  • Cái nút Nhận từ yêu cầu tự động tìm thấy tất cả các tham số trong yêu cầu để thuận tiện cho nhà phát triển.
  • Lá cờ Tham số chung cho tất cả các yêu cầu– khi được cài đặt, quá trình xử lý của nó không xóa các tham số khi chuyển từ yêu cầu này sang yêu cầu khác trong danh sách yêu cầu chung.

Đặt tham số với danh sách các giá trị Rất đơn giản, chỉ cần khi chọn giá trị tham số, nhấp vào nút xóa giá trị (chéo), hệ thống sẽ nhắc bạn chọn loại dữ liệu, trong đó bạn cần chọn “Danh sách giá trị”:

Ngoài ra, ở bảng trên cùng còn có một nút để gọi cài đặt bảng điều khiển truy vấn:

Tại đây bạn có thể chỉ định các tham số cho các truy vấn tự động lưu và các tham số thực hiện truy vấn.

Văn bản yêu cầu được nhập vào trường yêu cầu bảng điều khiển. Điều này có thể được thực hiện bằng cách chỉ cần gõ một bài kiểm tra truy vấn hoặc bằng cách gọi một công cụ đặc biệt - trình thiết kế truy vấn.

Trình thiết kế truy vấn 1C 8 được gọi từ menu ngữ cảnh (nút chuột phải) khi bạn nhấp vào trường nhập:

Ngoài ra, trong menu này còn có các chức năng hữu ích như xóa hoặc thêm dấu ngắt dòng (“|”) vào yêu cầu hoặc nhận mã yêu cầu ở dạng thuận tiện này:

Yêu cầu = Yêu cầu mới;
Yêu cầu.Text = ”
|CHỌN
| Tiền tệ.Link
|TỪ
| Danh mục.Tiền tệ NHƯ Tiền tệ”;
Yêu cầuResult = Yêu cầu.Execute();

Trường bên dưới của bảng điều khiển truy vấn hiển thị trường kết quả truy vấn, đó là lý do tại sao quá trình xử lý này được tạo:



Ngoài ra, bảng điều khiển truy vấn, ngoài danh sách, còn có thể hiển thị dữ liệu ở dạng cây - đối với các truy vấn chứa tổng.

Tối ưu hóa truy vấn

Một trong những điểm quan trọng nhất trong việc tăng năng suất của doanh nghiệp 1C 8.3 là tối ưu hóayêu cầu. Điểm này cũng rất quan trọng khi vượt qua chứng nhận. Dưới đây chúng ta sẽ nói về những lý do điển hình dẫn đến hiệu suất truy vấn không tối ưu và các phương pháp tối ưu hóa.

Các lựa chọn trong bảng ảo sử dụng cấu trúc WHERE

Chỉ cần áp dụng bộ lọc cho chi tiết bảng ảo thông qua tham số VT. Trong mọi trường hợp, bạn không nên sử dụng cấu trúc WHERE để lựa chọn trong bảng ảo; đây là một sai lầm nghiêm trọng theo quan điểm tối ưu hóa. Trong trường hợp lựa chọn sử dụng WHERE, trên thực tế, hệ thống sẽ nhận TẤT CẢ các bản ghi và chỉ sau đó chọn những bản ghi cần thiết.

PHẢI:

CHỌN

TỪ
Đăng ký tích lũy. Thanh toán lẫn nhau với những người tham gia của các tổ chức. Số dư (
,
Tổ chức = &Tổ chức
VÀ Cá nhân = &Cá nhân) CÁCH Thanh toán chung với những người tham gia Số dư của tổ chức

SAI:

CHỌN
Thanh toán lẫn nhau với những người tham gia số dư của tổ chức.
TỪ
Sổ đăng ký tích lũy. Thanh toán lẫn nhau với những người tham gia của các tổ chức. Số dư (,) CÁCH Thanh toán lẫn nhau với những người tham gia của tổ chức Số dư
Ở ĐÂU
Thanh toán lẫn nhau với những người tham gia số dư của tổ chức.
VÀ Thanh toán lẫn nhau với Người tham gia Số dư của Tổ chức.

Lấy giá trị của trường thuộc loại phức bằng dấu chấm

Khi nhận dữ liệu thuộc loại phức tạp trong truy vấn thông qua dấu chấm, hệ thống sẽ kết nối bằng phép nối trái chính xác với số lượng bảng có thể có trong trường thuộc loại phức tạp.

Ví dụ: việc tối ưu hóa truy cập vào trường bản ghi đăng ký – nhà đăng ký là điều không mong muốn. Nhà đăng ký có một kiểu dữ liệu tổng hợp, trong số đó có tất cả các loại tài liệu có thể ghi dữ liệu vào sổ đăng ký.

SAI:

CHỌN
Bộ ghi.Recorder.Date,
RecordSet.Quantity
TỪ
RegisterAccumulations.ProductsOrganizations AS SetRecords

Trên thực tế, một truy vấn như vậy sẽ truy cập không phải một bảng mà là 22 bảng cơ sở dữ liệu (thanh ghi này có 21 loại nhà đăng ký).

PHẢI:

CHỌN
SỰ LỰA CHỌN
KHI ProductsOrg.Registrar LINK Document.Bán sản phẩm và dịch vụ
THEN EXPRESS(ProductsOrganization.Registrar AS Document.Sales of GoodsServices).Date
KHI GoodsOrg.Registrar LINK Document.Receipt of GoodsServices
THEN EXPRESS(GoodsOrg.Registrar AS Document.Receipt of GoodsServices).Date
KẾT THÚC NHƯ NGÀY,
Sản phẩmOrg.Quantity
TỪ
RegisterAccumulations.ProductsOrganizations AS ProductsOrganization

Hoặc tùy chọn thứ hai là thêm thông tin đó vào chi tiết, chẳng hạn như trong trường hợp của chúng tôi là thêm ngày.

PHẢI:

CHỌN
Sản phẩmTổ chức.Ngày,
Sản phẩmTổ chức.Số lượng
TỪ
Sổ đăng ký tích lũy Hàng hóa của tổ chức NHƯ Hàng hóa của tổ chức

Truy vấn con trong điều kiện nối

Để tối ưu hóa, không thể chấp nhận sử dụng truy vấn con trong điều kiện nối; điều này làm chậm đáng kể truy vấn. Nên sử dụng VT trong những trường hợp như vậy. Để kết nối, bạn chỉ cần sử dụng siêu dữ liệu và các đối tượng VT, trước đó đã lập chỉ mục chúng theo các trường kết nối.

SAI:

CHỌN …

CHỖ NỐI BÊN TRÁI (
CHỌN TỪ RegisterInformation.Limits
Ở ĐÂU …
NHÓM THEO...
) QUA …

PHẢI:

CHỌN …
Giới hạn PUT
TỪ Thông tin Đăng ký.Giới hạn
Ở ĐÂU …
NHÓM THEO...
CHỈ SỐ THEO...;

CHỌN …
TỪ Tài liệu Bán hàng hóa và dịch vụ
Giới hạn THAM GIA TRÁI
QUA …;

Tham gia các bản ghi với bảng ảo

Có những tình huống khi kết nối một bảng ảo với những bảng khác, hệ thống không hoạt động tối ưu. Trong trường hợp này, để tối ưu hóa hiệu suất của truy vấn, bạn có thể thử đặt bảng ảo vào bảng tạm thời, không quên lập chỉ mục các trường đã nối trong truy vấn bảng tạm thời. Điều này là do thực tế là các VT thường được chứa trong một số bảng DBMS vật lý; kết quả là một truy vấn con được biên dịch để chọn chúng và vấn đề hóa ra lại tương tự như điểm trước đó.

Sử dụng các lựa chọn dựa trên các trường không được lập chỉ mục

Một trong những lỗi phổ biến nhất khi viết truy vấn là sử dụng điều kiện trên các trường không được lập chỉ mục, điều này mâu thuẫn với quy tắc tối ưu hóa truy vấn. DBMS không thể thực hiện truy vấn một cách tối ưu nếu truy vấn bao gồm lựa chọn trên các trường không thể lập chỉ mục. Nếu bạn lấy một bảng tạm thời, bạn cũng cần lập chỉ mục các trường kết nối.

Phải có chỉ số phù hợp cho từng điều kiện. Chỉ số phù hợp là chỉ số thỏa mãn các yêu cầu sau:

  1. Chỉ mục chứa tất cả các trường được liệt kê trong điều kiện.
  2. Các trường này nằm ở phần đầu của chỉ mục.
  3. Các lựa chọn này là liên tiếp, nghĩa là các giá trị không liên quan đến điều kiện truy vấn sẽ không được “nêm” vào giữa chúng.

Nếu DBMS không chọn đúng chỉ mục, toàn bộ bảng sẽ được quét - điều này sẽ có tác động rất tiêu cực đến hiệu suất và có thể dẫn đến việc chặn toàn bộ bộ bản ghi trong thời gian dài.

Sử dụng logic OR trong điều kiện

Đó là tất cả, bài viết này đề cập đến các khía cạnh cơ bản của tối ưu hóa truy vấn mà mọi chuyên gia 1C nên biết.

Một khóa học video miễn phí rất hữu ích về phát triển và tối ưu hóa truy vấn, Tôi thực sự khuyên bạn nên dành cho người mới bắt đầu và hơn thế nữa!

Phiên bản thứ tám của nền tảng 1C cung cấp khá nhiều đối tượng cấu hình mới, mỗi đối tượng có các phương thức và thuộc tính riêng giúp đơn giản hóa quá trình phát triển ứng dụng và tối ưu hóa hiệu suất. Một trong số đó là người xây dựng báo cáo.

Tôi muốn nói về trình tạo báo cáo trong 1C là gì, nó thực hiện những chức năng gì và nó đã tìm thấy những ứng dụng gì trong lập trình.

Trình tạo báo cáo trong 1C - nó là gì?

Đây là đối tượng cấu hình cho phép bạn hiển thị dữ liệu trong tài liệu hoặc biểu đồ bảng tính. Nguồn dữ liệu có thể là:

  1. Kết quả của yêu cầu;
  2. Vùng ô của tài liệu bảng tính;
  3. Phần dạng bảng của tài liệu hoặc sách tham khảo;
  4. Một tập hợp các mục đăng ký.

Ngoài ra, trình tạo báo cáo trong 1C có thuộc tính “Văn bản” mà văn bản của yêu cầu có thể được gửi đến đó, kết quả của thuộc tính này cần được xem.

Hình 1 hiển thị một phần mã cho phép bạn sử dụng “Trình tạo báo cáo” để hiển thị bảng giá trị tùy ý

Vì vậy, trường hợp sử dụng rõ ràng nhất của trình xây dựng này là thiết kế các báo cáo. Một cách sử dụng ít rõ ràng hơn đối với trình tạo là việc sử dụng nó để người dùng tùy chỉnh các thành phần khác nhau của truy vấn (nhóm, lựa chọn, v.v.).

Nhân tiện, bạn có thể xem kết quả của việc thực thi mã hiển thị trong Hình 1 trong Hình 2

Hình 2

Thiết lập trình tạo

Theo một nghĩa nào đó, trình tạo báo cáo giống với một hệ thống tổng hợp dữ liệu và có thể được sử dụng trong trường hợp hệ thống kiểm soát truy cập không khả dụng vì lý do này hay lý do khác hoặc có khả năng hệ thống này sẽ không hoạt động chính xác.

Giống như trình tạo ACS, nó bao gồm:

  • Nhóm (các cấp độ phân cấp khi hiển thị thông tin);
  • Các chỉ số (giá trị cần thiết để đạt được kết quả);
  • Các trường được tính toán bổ sung (chi tiết phần tử, kết quả của hành động có giá trị);
  • Bộ lọc (lựa chọn);
  • Sắp xếp.

Cài đặt bố cục thiết kế của người xây dựng cung cấp các mức độ và độ chính xác chi tiết khác nhau.

Thuật toán sử dụng trình tạo

Đương nhiên, tùy thuộc vào tình huống, mã chương trình sử dụng trình tạo báo cáo có thể khác nhau đáng kể. Thuật toán sử dụng cơ bản không thay đổi:

  1. Chúng tôi tuyên bố tạo một đối tượng mới thuộc loại ReportBuilder;
  2. Ở giai đoạn này, bạn có thể sử dụng Trình tạo truy vấn để tạo văn bản lựa chọn hoặc sử dụng đối tượng DataSourceDescription, sử dụng một lựa chọn hiện có;
  3. Cài đặt trình tạo báo cáo có thể được đặt bằng phương thức đối tượng trình tạo FillSettings();
  4. Bạn có thể từ chối sử dụng bố cục thiết kế tiêu chuẩn được tạo bằng phương pháp tạo tự động bằng cách xác định thuộc tính đối tượng Bố cục của trình tạo;
  5. Nếu DataSourceDescription không được sử dụng, ở giai đoạn này cần thực hiện yêu cầu, hãy sử dụng phương thức Thực thi();
  6. Bước cuối cùng là khởi chạy phương thức Output(); kết quả đầu ra có thể được thực hiện trong tài liệu bảng tính hoặc trong phần tử biểu mẫu tương ứng.

Sử dụng giải mã trong trình tạo

Dòng thứ ba trong Hình 1 bao gồm việc giải mã các ô của kết quả thực thi trình tạo.

Để làm điều này, chúng tôi đã sử dụng thuộc tính Decryption Filling. Loại thuộc tính này là ReportBuilderDecryptionFillType; nó có thể nhận một trong ba giá trị:

  1. GroupingValues ​​​- khi một ô được kích hoạt, giá trị của nhóm được chỉ định trong đó sẽ được sử dụng;
  2. Không điền – giá trị mặc định, có nghĩa là bản ghi sẽ không được sử dụng cho kết quả cuối cùng;
  3. Bản ghi – cấu trúc bản ghi sẽ chứa đầy các giá trị của tất cả các nhóm của mẫu ban đầu.

Ngoài ra, người dùng có cơ hội thiết lập giải mã một cách độc lập bằng phương thức configureDecryption(). Phần mã chạy phương thức này được hiển thị trong Hình 3

Hình 3

Ví dụ về cách sử dụng trình tạo để bật các lựa chọn trong báo cáo

Một phần thực tế nhỏ. Đôi khi có một tình huống cần phải tạo một báo cáo với một số lựa chọn. Bạn có thể giải quyết vấn đề này bằng ACS hoặc bạn có thể sử dụng trình tạo:

  1. Hãy bắt đầu bằng cách tạo một báo cáo bên ngoài và thêm vào đó một thuộc tính có tên tùy ý và nhập ReportBuilder (Hình 4);

Hình 4

  1. Chúng ta tạo một biểu mẫu báo cáo và đặt đối tượng giao diện TabularField trên đó, nhập nó là Selection và liên kết nó với thuộc tính Selection của thuộc tính đã tạo.

Hình 5

  1. Chúng tôi tạo thủ tục OnOpen() được liên kết với sự kiện tương ứng trong biểu mẫu của chúng tôi;

Hình 6

  1. Mã được viết trong đó nhất thiết phải chứa yêu cầu đối với trình tạo báo cáo, một ví dụ về mã được hiển thị trong Hình 6, để tạo văn bản của trình tạo, bạn có thể sử dụng hàm tạo truy vấn, trong hàm tạo, các điều kiện của trình tạo và các cài đặt bổ sung của nó được chỉ định trên tab tương ứng trong Hình 7;

Hình 7

  1. Các điều kiện lựa chọn được chỉ định trong dấu ngoặc nhọn () trong văn bản yêu cầu sẽ chỉ được thực thi nếu lựa chọn tương ứng được người dùng kích hoạt và sử dụng;

  2. Quy trình hiển thị kết quả của trình tạo được trình bày trong Hình 8 và được liên kết với việc nhấp vào nút Tạo;

Hình 8

  1. Chúng tôi lưu báo cáo của chúng tôi.

Giao diện của báo cáo chúng tôi đã tạo và kết quả của nó được hiển thị trong Hình 9

Hình 9

Tất nhiên, trong một bài viết, khá khó để chứng minh tất cả các khả năng của một đối tượng mới, nhưng đối với chúng tôi, có vẻ như bạn có thể hình dung về nó và bắt đầu sử dụng nó nếu tính đến kiến ​​​​thức thu được.

1. Trình tạo báo cáo là gì?

Trình tạo báo cáo là một đối tượng cho phép, dựa trên văn bản truy vấn và cài đặt đã chỉ định, thu được kết quả và hiển thị kết quả đó trong tài liệu hoặc biểu đồ bảng tính.

Cài đặt Trình tạo Báo cáo bao gồm:

  • các nhóm (ví dụ: “Danh pháp”, “Đối tác”...),
  • các chỉ số (ví dụ: “Số lượng”, “Số lượng”...),
  • các trường bổ sung (ví dụ: “Item.Service”, “Account.Code”...),
  • lọc (ví dụ: theo mặt hàng cụ thể, theo nhóm đối tác...) và
  • sắp xếp (ví dụ: “Nomenclature.Code”, “Counterparty.Name”...)

Cài đặt trình tạo có các công cụ trực quan, cho phép lập trình viên cung cấp cho người dùng giao diện để cài đặt chúng mà không tốn nhiều công sức.

Trước khi xuất, bạn có thể tạo kiểu cho bố cục trình tạo báo cáo bằng cách sử dụng bố cục giao diện.

Đầu ra của kết quả truy vấn của trình tạo báo cáo được thực hiện bằng một lệnh.

2. Tôi có thể sử dụng trình tạo báo cáo ở đâu?

Bằng cách sử dụng trình tạo báo cáo, bạn có thể thiết kế hàng loạt báo cáo (ví dụ: “Số dư hàng tồn kho”, “Doanh số trong kỳ”...). Đồng thời, thời gian phát triển và mã chương trình của họ sẽ giảm đáng kể và chất lượng thiết kế và chức năng sẽ tăng lên.

Ngoài ra, trình tạo báo cáo có thể được sử dụng trong trường hợp không cần đầu ra của kết quả nhưng người dùng cần tùy chỉnh các thành phần truy vấn, ví dụ: nhóm hoặc bộ lọc (ví dụ: tải một mục lên tệp xml hoặc xử lý việc đăng các tài liệu theo một bộ lọc nhất định).

Vì trình tạo báo cáo không có sẵn trên máy chủ 1C:Enterprise và không được sử dụng trong mô-đun kết nối bên ngoài nên trong những trường hợp này cần phải sử dụng trình tạo truy vấn, tương tự như trình tạo báo cáo nhưng không có các thuộc tính và phương thức trực quan (“Layout”, “OutputReportTitle”, “Output()”, “DesignLayout()”...).

3. Một chút về khái niệm

So với phiên bản 7.7, phiên bản 8.0 đã có một chút thay đổi về khái niệm, vì vậy bạn nên chú ý đến điều này một chút.

Ý tưởng

Sự miêu tả

Số đo hàng Danh sách các nhóm mà đầu ra sẽ được thực hiện theo hàng (ví dụ: “Mặt hàng”, “Tài khoản”...)
Số đo cột Danh sách các nhóm sẽ xuất kết quả theo cột (ví dụ: “Kho”, “Tháng”...).
Lựa chọn Một tập hợp các bộ lọc khác nhau (ví dụ: theo nhóm đối tác, theo một tổ chức nhất định...).
Đặt hàng Tập hợp các trường sắp xếp (ví dụ: “Mặt hàng. Mã số”, “Tài liệu bán hàng. Chịu trách nhiệm”…).
Cánh đồng Một trong các trường lựa chọn truy vấn (ví dụ: “Mặt hàng”, “Tài khoản.Mã”, “Số lượng”, “Số tiền”...).
Các trường đã chọn Danh sách các trường được chọn bao gồm các chỉ số (ví dụ: “Số lượng”, “Số tiền”) và các trường bổ sung (chi tiết nhóm) (ví dụ: “Danh mục.Nhóm”, “Tài khoản.Mã”...).
Các trường có sẵn Danh sách các trường có sẵn để thêm vào nhóm, lọc, sắp xếp và các trường đã chọn. Theo quy định, nó chứa đầy danh sách các trường lựa chọn truy vấn nhưng có thể được chỉnh sửa theo chương trình (bạn có thể thêm, thay đổi và xóa các trường có sẵn).

Điều quan trọng là phải hiểu rằng các trường nhóm, bộ lọc, sắp xếp và đã chọn không liên quan trực tiếp đến các trường có sẵn; chúng là các đối tượng khác nhau.

Sự khác biệt chính là trường có sẵn không có thuộc tính “DataPath” (ví dụ: “Nomenclature.Code”, “Quantity”), vì đây chỉ đơn giản là một loại mô tả về trường mà nỗ lực sẽ được thực hiện để tìm sự trùng khớp giữa các trường mẫu truy vấn tại thời điểm thêm nó vào danh sách các nhóm, bộ lọc, sắp xếp hoặc các trường đã chọn.

Đồng thời, không thể thêm một trong các trường có sẵn vào bất kỳ danh sách nào ở trên theo chương trình, vì một mặt, trường có sẵn không có các phương thức la “AddToSelection()” hoặc “AddToSelectedFields() ”, và mặt khác, khi thêm một phần tử mới vào bất kỳ danh sách nào ở trên, bạn cần chỉ định thuộc tính “DataPath”, thuộc tính này không phải lúc nào cũng trùng với tên trường (ví dụ: các trường “Nomenclature.Parent” và “Nomenclature.Parent.Parent” có cùng tên “Parent”).

4. Trường hợp sử dụng điển hình của trình tạo báo cáo

Nói chung, chuỗi hành động khi làm việc với trình tạo báo cáo như sau:

  1. Tạo một đối tượng mới “Trình tạo báo cáo”;
  2. Gán văn bản của yêu cầu cho thuộc tính “Văn bản”;
  3. Nếu cài đặt trình tạo báo cáo không được chỉ định trong văn bản yêu cầu thì hãy thực thi phương thức “FillSettings()”;
  4. Cung cấp cho người dùng khả năng thay đổi cài đặt trình tạo báo cáo;
  5. Nếu cần, bạn có thể từ chối việc trình tạo báo cáo tự động tạo bố cục và chỉ định bố cục cố định cho thuộc tính “Bố cục”;
  6. Nếu cần, bạn có thể chỉ định thuộc tính “Bố cục thiết kế” cho một trong các thuộc tính tiêu chuẩn hoặc bố cục của riêng bạn và nếu bố cục được tạo tự động của trình tạo báo cáo đã được thay thế bằng bố cục cố định, thì hãy thực hiện “DesignLayout()” phương pháp;
  7. Gọi phương thức “Run()”;
  8. Gọi phương thức “Output()”.
Builder = "Trình tạo báo cáo" mới; Builder.Text = "CHỌN ĐƯỢC PHÉP | CashRemains.StructuralUnit của công ty, | SUM(CompanyCashRemains.AmountRemaining) AS Số tiền | |FROM | RegisterAccumulations.CompanyCash.Remains(, (StructuralUnit.*)) | đơn vị | |TỔNG SỐ TIỀN (Số tiền) BỞI | CHUNG, | Đơn vị kết cấu"; Builder.FillSettings(); // Tại đây bạn có thể cho người dùng cơ hội // thay đổi cài đặt trình tạo báo cáo Builder.Layout = GetLayout("CustomLayout");
Builder.AppearanceLayout = GetAppearanceLayout(StandardAppearance.Classic);
Builder.DesignLayout();
Builder.Run();
Builder.Output();

5. Mô tả một số thuộc tính của trình tạo báo cáo

Tài sản

Sự miêu tả

Chữ Chứa văn bản của yêu cầu xây dựng báo cáo. Nếu văn bản truy vấn của trình tạo báo cáo không chứa các thành phần cài đặt “(…)”, thì bạn có thể sử dụng phương pháp “FillSettings()” để tự động điền vào các cài đặt dựa trên văn bản truy vấn.
Tiêu đề văn bản Văn bản sẽ được hiển thị trong tiêu đề báo cáo (ví dụ: “Số dư hàng tồn kho tính đến ngày 01/01/2004”, “Doanh thu tháng 1 năm 2004”...).
Tiêu đề báo cáo đầu ra
Tiêu đề bảng đầu ra
Đầu raKết quả chung
Bảng chân trang đầu ra
Đầu raBáo cáoBước chân
Các thuộc tính này xác định xem tiêu đề báo cáo, tiêu đề bảng, tổng cuối, chân bảng và chân trang báo cáo có được hiển thị tương ứng hay không.
Đầu raBản ghi chi tiết Cơ sở có trách nhiệm buộc xuất hoặc cấm xuất hồ sơ chi tiết.
Bản ghi chi tiết tự động Nếu thuộc tính “Bản ghi chi tiết tự động” được đặt thành Đúng thì mỗi bản ghi chi tiết sẽ chỉ được hiển thị nếu nó khác với bản ghi nhóm.
Trường có sẵn Chứa danh sách các trường có sẵn để thêm vào nhóm, bộ lọc, trường đã chọn và sắp xếp.
Kích thướcChuỗi
Kích thướcCột
Chứa danh sách các nhóm tương ứng theo hàng và cột.
Lựa chọn Chứa danh sách các bộ lọc được chỉ định cho trình tạo báo cáo.
Trường đã chọn chứa danh sách các chỉ báo đã chọn và chi tiết nhóm.
Đặt hàng chứa danh sách các trường sắp xếp.
Tùy chọn Chứa danh sách các tham số của trình tạo (được khai báo trong phần nội dung của yêu cầu trình tạo bằng ký tự “&”).
Kết quả Chứa kết quả thực hiện truy vấn của trình tạo báo cáo (một đối tượng thuộc loại Kết quả truy vấn).

6. Xử lý bảng điểm bằng Trình tạo báo cáo

Thuộc tính “Điền giải mã” chứa một trong ba tùy chọn để điền bản ghi trong khi xuất:

Lựa chọn 1: không điền (không sử dụng bảng điểm).

Tùy chọn thứ 2: nhóm các giá trị (khi giải mã một ô, giá trị nhóm hiển thị trong đó sẽ mở ra).

Tùy chọn thứ 3: giải mã (việc giải mã sẽ chứa đầy cấu trúc chứa các giá trị của tất cả các nhóm). Trong trường hợp này, bạn cần xử lý sự kiện tài liệu bảng tính “Xử lý giải mã”, trong đó bạn cần phân tích cấu trúc được chuyển và thực hiện một số hành động nhất định.

Một điểm quan trọng là trong tùy chọn thứ ba, không thể xuất ra tài liệu bảng tính đã tạo, do đó không thể xử lý bản ghi, quá trình xử lý sự kiện diễn ra trong mô-đun của biểu mẫu chứa trường tài liệu bảng tính .

Nếu tùy chọn thứ ba để điền bản ghi được sử dụng thì bạn có thể sử dụng phương thức “SetupTranscript()”, được thiết kế để thực thi và hiển thị báo cáo có tính đến bản ghi do người dùng thực hiện.

Trình tạo báo cáo có thể giống hoặc mới. Khi bạn định cấu hình bản ghi, tất cả các bộ lọc của trình tạo báo cáo tùy chỉnh sẽ bị xóa và tất cả các bộ lọc đã cài đặt từ trình tạo truy vấn ban đầu sẽ được thêm vào, cùng với các bộ lọc dựa trên các giá trị nhóm từ bản ghi.

7. Lập báo cáo

Thuộc tính “Bố cục” chứa bố cục được sử dụng khi xuất kết quả ra tài liệu bảng tính. Nếu Không xác định, bố cục sẽ được tạo tự động.

Các thuộc tính “ReportHeader Layout”, “TableHeaderLayout”, “DetailedRecordsLayout”, “TotalTotalsLayout”, “TableFooterLayout” và “ReportFooterLayout” chứa tên của khu vực trong bố cục trình tạo báo cáo hoặc các bố cục riêng lẻ được sử dụng khi hiển thị tiêu đề báo cáo tương ứng, đầu bảng, bản ghi chi tiết, tổng chung, chân bảng và chân trang báo cáo vào tài liệu bảng tính. Nếu tên phạm vi khớp với tên trong bố cục Trình tạo báo cáo thì bạn không cần điền các thuộc tính.

Thuộc tính Bố cục giao diện chứa bố cục được sử dụng để tạo kiểu cho bố cục của trình tạo báo cáo. Giao diện của các ô trong bố cục giao diện sẽ được áp dụng cho các ô trong bố cục trình tạo báo cáo.

Để có được một trong các tùy chọn thiết kế tiêu chuẩn, bạn có thể sử dụng phương thức ngữ cảnh chung “GetDesignLayout()”.

Nếu thuộc tính “Bố cục” của trình tạo báo cáo đã được gán một bố cục cố định thì để thiết kế bố cục đó, bạn cần thực thi phương thức “DesignLayout()”.

Thuộc tính “Vị trí của kích thước trong hàng” xác định một trong ba tùy chọn để hiển thị nhóm theo hàng.
Tùy chọn thứ 1: cùng nhau (trong một cột).
Ví dụ:

Tùy chọn thứ 2: riêng biệt (trong các cột khác nhau).
Ví dụ:


Ví dụ:

Thuộc tính “Vị trí của kích thước trong cột” xác định một trong ba tùy chọn để hiển thị nhóm theo cột.
Tùy chọn thứ 1: cùng nhau (trong một dòng).
Ví dụ:

Tùy chọn thứ 2: riêng biệt (trong các dòng khác nhau).
Ví dụ:

Tùy chọn thứ 3: riêng biệt và duy nhất ở cuối.
Ví dụ:

Thuộc tính “Đặt tổng theo hàng” xác định một trong bốn cách để hiển thị tổng theo hàng.
Tùy chọn thứ 1: trong tiêu đề (chỉ phía trên các nhóm tiếp theo và bản ghi chi tiết).

Tùy chọn thứ 2: ở đầu trang và chân trang (ở trên và dưới các nhóm tiếp theo và các mục chi tiết).

Tùy chọn thứ 3: ở tầng hầm (bên dưới các nhóm tiếp theo và các bản ghi chi tiết, phía trên chúng chỉ hiển thị mô tả về nhóm).

Phương án 4: chỉ ở tầng hầm (chỉ ở dưới các nhóm tiếp theo và hồ sơ chi tiết).

Tài sản " Vị trí của Tổng số trong Cột” xác định một trong bốn cách để hiển thị tổng số trong cột.

Tùy chọn thứ 1: trong tiêu đề (chỉ ở bên trái của các nhóm tiếp theo và các mục chi tiết).

Tùy chọn thứ 2: ở đầu trang và chân trang (ở bên trái và bên phải của các nhóm tiếp theo và các mục chi tiết).

Tùy chọn thứ 3: ở tầng hầm (ở bên phải của các nhóm tiếp theo và các bản ghi chi tiết, ở bên trái chúng chỉ hiển thị mô tả về nhóm).

Phương án 4: chỉ ở tầng hầm (chỉ ở bên phải các nhóm tiếp theo và hồ sơ chi tiết).

Tài sản " Đặt chi tiết kích thước trong hàng” xác định một trong ba tùy chọn để hiển thị chi tiết nhóm theo hàng.

Tùy chọn thứ 1: cùng nhau (trong một cột bổ sung).
Ví dụ:

Tùy chọn thứ 2: cùng với số đo (trong cột có nhóm).
Ví dụ:

Tùy chọn thứ 3: riêng biệt (trong các cột bổ sung khác nhau).
Ví dụ:

Tài sản " Đặt chi tiết các phép đo vào cột” xác định một trong ba tùy chọn để hiển thị chi tiết nhóm theo cột.

Tùy chọn thứ 1: cùng nhau (trong một dòng bổ sung).
Ví dụ:

Tùy chọn thứ 2: cùng với kích thước (theo hàng có nhóm).
Ví dụ:

Tùy chọn thứ 3: riêng biệt (trong các dòng bổ sung khác nhau).
Ví dụ:

8. Đầu ra của trình tạo báo cáo

Phương thức “Run()” thực thi yêu cầu của trình tạo báo cáo và điền vào thuộc tính “Kết quả”.
Bằng cách sử dụng phương thức “GetQuery()”, bạn có thể nhận được truy vấn của trình tạo báo cáo được thực thi khi phương thức “Run()” được gọi.

Phương thức “Output()” hiển thị kết quả trong tài liệu hoặc biểu đồ bảng tính. Nếu bạn không chỉ định đối tượng mà bạn muốn xuất ra, một tài liệu bảng tính mới sẽ được tạo.

Ví dụ về đầu ra cho một tài liệu bảng tính mới:
Builder.Output();

Ví dụ về đầu ra cho tài liệu bảng tính hiện có:
Builder.Output(FormElements.ResultTable);

Ví dụ về đầu ra cho biểu đồ:
Builder.Output(FormElements.ResultDiagram, "Số lượng");

Nếu bạn muốn hiển thị kết quả của trình tạo báo cáo trong bảng tổng hợp hoặc biểu đồ tổng hợp thì bạn không cần sử dụng phương thức “Output()” mà phải điền thuộc tính “Data Source” của bảng tổng hợp hoặc biểu đồ tổng hợp . Nguồn có thể là kết quả của trình tạo báo cáo hoặc của chính trình tạo báo cáo. Kết quả của trình tạo báo cáo không yêu cầu thực hiện lại truy vấn nhưng trình tạo báo cáo cho phép bạn thay đổi thành phần của các nhóm.

9. Lưu và khôi phục cài đặt trình tạo

Phương thức “GetSettings()” cho phép bạn nhận cài đặt hiện tại của trình tạo báo cáo với khả năng chỉ định cài đặt nào (ví dụ: chỉ lọc, lọc và sắp xếp...).

Phương thức “SetSettings()” cho phép bạn tải cài đặt trình tạo báo cáo với khả năng chỉ định cài đặt nào (ví dụ: chỉ lọc, lọc và sắp xếp...).

10. Nhóm và trường của trình tạo báo cáo

Thứ nguyên của trình tạo báo cáo là nhóm theo hàng hoặc cột.

Các chi tiết chính của nhóm là

  • “Tên” (mã định danh chi tiết) ​​(ví dụ: “Mặt hàng”, “Đối tác”...),
  • “Trình bày” (trình bày trong quá trình xuất) (ví dụ: “Chứng từ bán hàng”, “Đơn vị đo lường”...),
  • “PathtoData” (đường dẫn đến trường chọn truy vấn) (ví dụ: “Nomenclature”, “DocumentSales.Organization”...)

và nếu việc nhóm được xây dựng theo thư mục thì

  • “Loại thứ nguyên” (một trong các tùy chọn lọc theo giá trị trường: phân cấp (thành phần và nhóm), chỉ phân cấp (chỉ nhóm) hoặc thành phần (chỉ thành phần)).

Ngoài ra, có một số thuộc tính cho phép bạn chỉ định bố cục cho một nhóm sẽ được sử dụng khi xuất ra tài liệu bảng tính.

  • “Bố cục” là tên của khu vực trong bố cục trình tạo báo cáo hoặc bố cục riêng biệt được sử dụng để nhóm đầu ra.
  • “Bố cục phân cấp” là tên của một khu vực trong bố cục trình tạo báo cáo hoặc bố cục riêng biệt được sử dụng khi hiển thị phân cấp nhóm.
  • “Bố cục chân trang” là tên của khu vực trong bố cục trình tạo hoặc bố cục riêng được sử dụng khi hiển thị chân trang nhóm.
  • “HierarchyFooterLayout” là tên của khu vực trong bố cục trình tạo hoặc bố cục riêng biệt được sử dụng khi hiển thị chân trang của hệ thống phân cấp nhóm.
  • “Bố trí tầng hầm” - một loạt các bố cục tầng hầm cho các cấp nhóm khác nhau.
  • “Bố cục cấp độ” - một loạt các bố cục dành cho các cấp độ nhóm khác nhau.

Trường trình tạo báo cáo là một trong các trường được chọn. Các chi tiết trường chính là

  • “Tên” (mã định danh trường) ​​(ví dụ: “Số lượng”, “Mã danh pháp”, “Thời gian”...),
  • “Biểu diễn” (biểu diễn trong quá trình xuất) (ví dụ: “Số lượng”, “Mã số”, “Thời gian”...) và
  • “PathKData” (đường dẫn đến trường chọn truy vấn) (ví dụ: “Số lượng”, “Danh pháp. Mã”, “Thời gian”...).

Bạn có thể thực hiện một số hành động với danh sách các nhóm hoặc trường.

  • “Insert()“ - thêm nhóm/trường vào vị trí đã chỉ định.
  • “Add()“ - thêm một nhóm/trường vào cuối danh sách.
  • “Index()” - lấy chỉ mục nhóm/trường trong danh sách.
  • “Quantity()” - lấy số lượng nhóm/trường trong danh sách.
  • “Find()“ - tìm nhóm/trường trong danh sách theo tên.
  • “Clear()“ - xóa danh sách các nhóm/trường.
  • “Get()” - lấy nhóm/trường theo chỉ mục.
  • “Shift()” - dịch chuyển nhóm/trường theo số vị trí đã chỉ định.
  • “Delete()” - xóa một nhóm/trường khỏi danh sách.

11. Ngôn ngữ xây dựng

Trình tạo báo cáo có ngôn ngữ riêng. Đây là ngôn ngữ truy vấn thông thường, được bổ sung cấu trúc “(…)”. Bằng cách sử dụng các cấu trúc này, bạn có thể bỏ phương thức “FillSettings()” và định cấu hình trình tạo báo cáo trong nội dung yêu cầu.
Bằng cách này, bạn có thể tùy chỉnh các phần tử “SELECT”, “WHERE”, “ORDER BY”, “SUMMARY BY” và cũng có thể thực hiện một số điều thú vị khác. Trong trường hợp này, nội dung của yêu cầu trình tạo sẽ là cài đặt mặc định, trong khi cấu trúc (...) sẽ mô tả các cài đặt có sẵn.

Nếu trường lựa chọn cho phép bạn lấy nội dung nào đó thông qua dấu chấm thì bạn có thể chỉ định “.*” sau trường thì người dùng sẽ có thể chọn chi tiết trường. Ví dụ: “Nomenclature.*” cho phép bạn sắp xếp theo “Nomenclature.Code” hoặc chọn theo “Nomenclature.Service”. Nhưng “Số lượng.*” không có ý nghĩa vì trường “Số lượng” không có thông tin chi tiết, điều đó có nghĩa là chỉ cần chỉ ra “Số lượng” là đủ.

Các trường được chỉ định trong cấu trúc “CHỌN” giới hạn danh sách các trường có sẵn cho người dùng.
Các trường được chỉ định trong cấu trúc “WHERE” giới hạn danh sách các trường có thể được sử dụng trong bộ lọc.
Các trường được chỉ định trong cấu trúc “ORDER BY” giới hạn danh sách các trường để sắp xếp.
Các trường được chỉ định trong cấu trúc “PO RESULTS” giới hạn danh sách các trường để nhóm tổng số.

Bây giờ cho những điều thú vị.

Trước hết, trong văn bản chính của yêu cầu, bạn cũng có thể sử dụng cấu trúc (...) trong tham số nguồn. Ví dụ, nếu thay vào đó
|TỪ
| Đăng ký Tích lũy.Sản phẩm còn lại của Công ty.Số dư(&Ngày kết thúc)
biểu thị
|TỪ
| Đăng ký Tích lũy.Sản phẩm còn lại của Công ty.Số dư((&Ngày kết thúc))
thì trong trường hợp này, bạn có thể đặt bộ lọc theo trường “Ngày kết thúc”.

Đồng thời, trong trường hợp đầu tiên, cần phải đặt tham số của trình tạo báo cáo “Ngày kết thúc”, trong trường hợp thứ hai, điều này là không bắt buộc, ngoài ra, nếu lựa chọn theo trường “Ngày kết thúc” không được đặt, thì thông số này của bảng "Đăng ký tích lũy. Sản phẩm còn lại của Công ty. Còn lại" nói chung sẽ không được tính đến.

Thứ hai, các nguồn trong văn bản yêu cầu có thể được đánh dấu là tùy chọn bằng cách đặt chúng trong cấu trúc “(…)”. Ví dụ: nếu bạn soạn văn bản yêu cầu như thế này

|CHỌN


| Rất nhiều hàng hóaCông ty còn lại.Số lượng còn lại theo số lượngByLots
|(CHỌN
| Sản phẩm còn lại của Công ty Sản phẩm còn lại.
| Sản phẩm còn lại của Công ty Số lượng còn lại AS Số lượng,
| Rất nhiều hàng hóaCông tyRemains.Số lượng còn lại theo số lượngByLots)
|TỪ
| Đăng ký Tích lũy.Sản phẩm còn lại của Công ty.Các sản phẩm còn lại NHƯ sản phẩm còn lại của Công tyCác sản phẩm còn lại
| (KẾT NỐI TRÁI Đăng ký tích lũy. Lô hàng hóa của công ty. Phần còn lại AS Lô hàng hóa còn lại của công ty
| Phần mềm Sản phẩm Còn lại của Công ty.Remainings.Nomenclature = Rất nhiều Sản phẩm của Công ty.Remainings.Nomenclature)
|KẾT QUẢ TỔNG(Số lượng), SUM(Số lượngByBatch) BẬT
| LÀ PHỔ BIẾN,
| Danh pháp

thì việc đăng ký nối trái theo lô sẽ chỉ được thực hiện nếu trường “QuantityByBatch” có trong danh sách các trường đã chọn.

Ngày thứ ba, trong tham số nguồn, bạn có thể chỉ định rằng nếu các bộ lọc được chỉ định, nếu có thể, hãy áp dụng chúng không phải cho kết quả của truy vấn bằng cách sử dụng phần tử “WHERE” mà cho chính nguồn đó. Vì vậy thay vì
| RegisterAccumulations.CompanyProductRemains.Remains()

nó có ý nghĩa để viết

| Sổ đăng ký tích lũy. Hàng hóa còn lại của công ty. Còn lại(, (Danh pháp.*, Kho hàng của công ty.*, Đơn hàng.*, Giá bán lẻ, Đặc điểm danh pháp.*))

Tốt, thứ tư, theo ý kiến ​​​​của tôi là ngon nhất. Nếu tham số “Tuần kỳ” được chỉ định trong nguồn (đối với các bảng cho phép bạn lấy doanh thu), thì tham số đó cũng có thể được đặt thành “(...)”, và do một chút thao tác với văn bản truy vấn của trình tạo , chúng ta có thể sử dụng nhóm theo dấu chấm.

Ví dụ: |CHỌN ĐƯỢC PHÉP | Lô sản phẩmCompanyTurnover.Nomenclature, | SUM(Rất nhiều sản phẩmDoanh thu công ty.Chi phí sắp tới) NHƯ Chi phí sắp tới, | SUM(Công ty Lô sản phẩm Doanh thu. Chi phí tiêu thụ) AS Chi phí tiêu dùng | |TỪ | Sổ đăng ký lũy kế.Công ty Lô hàng hóa.Doanh thu(, (&Tần suất), | (Danh pháp.*)) AS Hàng hóa công ty Lô Doanh thu | |NHÓM THEO | Rất nhiều hàng hóaDoanh thu công ty.Danh pháp | |KẾT QUẢ SỐ TIỀN(Chi phí đến), SỐ TIỀN(Chi phí) THEO | TỔNG HỢP, | Danh pháp | |(SELECT | Rất nhiều sản phẩm của Công ty Doanh thu. Danh pháp.*, | Nhà đăng ký.*, | Đầu kỳ (Kỳ, Ngày) NHƯ Kỳ Ngày, | Đầu kỳ (Kỳ, Tuần) NHƯ Kỳ Tuần, | Đầu kỳ Kỳ (Kỳ, Thập kỷ) NHƯ KỳThập kỷ, | Đầu kỳ (Kỳ, Tháng) NHƯ KỳTháng, | Đầu kỳ(Kỳ, Quý) NHƯ KỳQuarter, | Đầu kỳ(Kỳ, Nửa năm) NHƯ Kỳ nửa năm , | Đầu kỳ(Kỳ, Năm) NHƯ Kỳ năm, | SUM(Rất nhiều sản phẩmDoanh thu của công ty. Biên nhận chi phí) NHƯ Chi phí nhận được, | SUM (Số lượng sản phẩm của công ty Doanh thu. Chi phí) Chi phí như thế nào) | | | (WHERE | Rất nhiều sản phẩm của Công ty Doanh thu. Danh pháp. *, | Nhà đăng ký. *, | SUM (Lô hàng hóa của Công ty Doanh thu. Chi phí đến) AS Chi phí thu nhập, | SUM (Lô hàng hóa của Công ty doanh thu . Chi phí) NHƯ Chi phí) | |(KẾT QUẢ THEO | Danh pháp.*, | Nhà đăng ký.*, | Đầu kỳ(Kỳ, Ngày) NHƯ Ngày kỳ, | Đầu kỳ(Kỳ, Tuần) NHƯ Tuần, | Đầu kỳ(Kỳ, Thập kỷ) NHƯ KỳThập kỷ, | Đầu kỳ(Kỳ, Tháng ) NHƯ KỳTháng, | Đầu kỳ(Kỳ, Quý) NHƯ Kỳ kỳQuý, | Đầu kỳ(Kỳ, Nửa năm) NHƯ KỳNửa năm, | Đầu kỳ(Kỳ) , Năm) NHƯ Kỳ Năm)

Có một lưu ý: để việc nhóm theo khoảng thời gian hoạt động, bạn cần thêm bộ lọc theo tham số “Tần số”. Để không thực hiện việc này một cách thủ công, để thuận tiện, bạn có thể thêm nó theo chương trình trước khi chạy trình tạo báo cáo và xóa nó sau khi thực hiện để nó không làm bạn bối rối, vì theo quan điểm thông thường thì không thể hiểu được điều đó. một bộ lọc. Nó đã được thực hiện một cái gì đó như thế này

Nếu Trình tạo Báo cáo.AvailableFields.Find("Tần số")<>Không xác định Sau đó Tính tuần hoàn = Không xác định; Nếu Trình tạo báo cáo.DimensionsRows.Find("PeriodYear")<>Không xác định HOẶC Trình tạo báo cáo.DimensionsColumns.Find("PeriodYear")<>Không xác định thì tính tuần hoàn = 9; endIf; Nếu Trình tạo báo cáo.DimensionsRows.Find("PeriodHalf-Year")<>Không xác định HOẶC Trình tạo báo cáo.DimensionsColumns.Find("PeriodNửa năm")<>Không xác định thì tính tuần hoàn = 8; endIf; Nếu Trình tạo báo cáo.DimensionsRows.Find("PeriodQuarter")<>Không xác định HOẶC Trình tạo báo cáo.DimensionsColumns.Find("PeriodQuarter")<>Không xác định thì tính tuần hoàn = 7; endIf; Nếu ReportBuilder.DimensionsRows.Find("PeriodMonth")<>Không xác định HOẶC Trình tạo báo cáo.DimensionsColumns.Find("PeriodMonth")<>Không xác định thì tính tuần hoàn = 6; endIf; Nếu Trình tạo Báo cáo.Row Dimensions.Find("PeriodDecade")<>Không xác định HOẶC Trình tạo báo cáo.DimensionsColumns.Find("PeriodDecade")<>Không xác định thì tính tuần hoàn = 5; endIf; Nếu ReportBuilder.DimensionsRows.Find("PeriodWeek")<>Không xác định HOẶC Trình tạo báo cáo.DimensionsColumns.Find("PeriodWeek")<>Không xác định thì tính tuần hoàn = 4; endIf; Nếu Trình tạo báo cáo.DimensionsRows.Find("PeriodDay")<>Không xác định HOẶC Trình tạo báo cáo.DimensionsColumns.Find("PeriodDay")<>Không xác định thì tính tuần hoàn = 3; endIf; Nếu ReportBuilder.DimensionsRows.Find("Recorder")<>Không xác định HOẶC ReportBuilder.DimensionsColumns.Find("Recorder")<>Không xác định HOẶC ReportBuilder.SelectedFields.Find("Người đăng ký")<>Không xác định thì tính tuần hoàn = 2; endIf; Nếu tần số<>Không xác định rồi Trường lựa chọnTheo chu kỳ = Report Builder.Selection.Add("Periodicity"); SelectionFieldByPeriodicity.Value = Tính tuần hoàn; SelectionFieldByPeriodicity.Use = True; endIf; endIf; Builder.Run(); Nếu trường lựa chọn theo chu kỳ<>Không xác định Sau đó, Report Builder.Selection.Delete(Report Builder.Selection.Index(SelectionFieldByPeriodicity)); endIf;

12. Tùy chỉnh trình tạo

Để cung cấp cho người dùng cơ hội thay đổi danh sách nhóm, bộ lọc, các trường đã chọn hoặc sắp xếp, chỉ cần tạo thuộc tính báo cáo “Builder” và đặt trường bảng trên biểu mẫu báo cáo và chỉ định “Builder.DimensionsRows”, “ Builder.DimensionsColumns” làm nguồn dữ liệu. , “Builder.Selection”, “Builder.SelectedFields” hoặc “Builder.Order”.

Ngoài ra, bạn cũng có thể chỉ định “Builder.AvailableFields” làm nguồn dữ liệu và do đó, trước tiên, xem danh sách các trường có sẵn và thứ hai, sử dụng menu ngữ cảnh, thêm các trường vào nhóm, lựa chọn, trường đã chọn hoặc bộ lọc.

Khi phát triển báo cáo, đôi khi bạn cần hiển thị báo cáo mà dữ liệu không thể lấy được bằng ngôn ngữ truy vấn. Tình huống này có thể phát sinh, ví dụ: nếu một số thuật toán phức tạp được sử dụng để tính toán dữ liệu hoặc nếu dữ liệu để xuất báo cáo không được lấy từ cơ sở thông tin mà từ tệp bên ngoài. Trình tạo báo cáo cung cấp khả năng hiển thị báo cáo từ nguồn dữ liệu tùy ý.
Sau đây có thể được sử dụng làm nguồn dữ liệu cho đầu ra báo cáo:

  • Bảng giá trị,
  • Yêu cầu kết quả,
  • Diện tích ô tài liệu dạng bảng,
  • phần dạng bảng,
  • Bộ bản ghi thanh ghi tích lũy,
  • Thông tin RegisterRecordSet,
  • Sổ đăng ký kế toánBộ hồ sơ,
  • Tính toán RegisterRecordSet.
Để trình tạo báo cáo hiển thị báo cáo cho nguồn dữ liệu tùy ý, việc đặt mô tả nguồn dữ liệu trong thuộc tính Trình tạo DataSource là đủ. Thuộc tính của trình tạo báo cáo DataSource có thể chứa giá trị thuộc loại DataSourceDescription. Đối tượng DataSourceDescription chứa chính nguồn dữ liệu đó và cũng chứa mô tả về các cột của nguồn dữ liệu. Mỗi mô tả cột nguồn dữ liệu chứa:
  • Tên - chứa tên của cột trong nguồn dữ liệu,
  • DataPath - chứa mô tả về sự phụ thuộc của các cột với nhau. Cột có đường dẫn dữ liệu được lấy qua dấu chấm từ đường dẫn dữ liệu của trường khác được coi là thuộc tính của cột khác. Nếu một trường chứa từ Biểu diễn được phân tách bằng dấu chấm thì trường này được coi là biểu diễn cho cột từ đường dẫn đến dữ liệu mà biểu diễn thu được. Ví dụ. Nếu cột "Danh pháp" có đường dẫn đến dữ liệu "Danh pháp" và cột "Mã" có đường dẫn đến dữ liệu "Danh pháp.Mã" thì cột này sẽ được coi là một thuộc tính của cột "Danh pháp". Cột có đường dẫn đến dữ liệu “Danh pháp.Đại diện” sẽ được coi là đại diện cho cột “Danh pháp”,
  • Trường - dấu hiệu cho thấy cột này có thể được sử dụng làm trường báo cáo,
  • Thứ tự - một dấu hiệu cho thấy có thể sắp xếp thứ tự cho một cột nhất định,
  • Lựa chọn là một dấu hiệu cho thấy có thể áp dụng lựa chọn trên một cột nhất định,
  • Thứ nguyên - dấu hiệu cho thấy cột này có thể được sử dụng làm nhóm báo cáo,
  • Tổng - một dòng chứa biểu thức tính tổng. Đối với trình tạo báo cáo, biểu thức của dòng này tương ứng với biểu thức tính tổng được sử dụng trong ngôn ngữ truy vấn,
Khi bạn đặt nguồn dữ liệu cho đối tượng DataSourceDescription, các mô tả cột sẽ được tạo và điền tự động.

Đối tượng DataSourceDescription có một hàm tạo, làm tham số mà nguồn dữ liệu mà mô tả đang được tạo có thể được truyền vào, trong khi thuộc tính DataSource sẽ chứa đầy nguồn dữ liệu được truyền, các mô tả cột sẽ chứa đầy thông tin về các cột từ đó. nguồn dữ liệu.

Ví dụ về cách đặt nguồn dữ liệu cho trình tạo báo cáo:

ReportBuilder.DataSource = NewDataSourceDescription(ValueTableResult);

Công việc tiếp theo với trình tạo báo cáo không khác gì làm việc với trình tạo báo cáo ở chế độ truy vấn: trình tạo báo cáo cung cấp đầy đủ chức năng, ngoại trừ hiển thị tổng số theo cấp bậc. Ngoài ra, khi làm việc với nguồn dữ liệu tùy chỉnh, bạn không thể nhận được truy vấn từ trình tạo báo cáo sẽ được sử dụng để lấy dữ liệu từ cơ sở thông tin.

Công việc của trình tạo truy vấn với nguồn dữ liệu tùy chỉnh giống hệt với công việc với nguồn tùy chỉnh của trình tạo báo cáo.

Lập trình 1C không chỉ bao gồm việc viết chương trình. 1C là tập hợp các hành động và dữ liệu của người dùng mà anh ta làm việc.

Dữ liệu được lưu trữ trong cơ sở dữ liệu. Truy vấn 1C là một cách lấy dữ liệu từ cơ sở dữ liệu để hiển thị cho người dùng dưới dạng hoặc để xử lý dữ liệu đó.

Phần cơ bản của báo cáo là yêu cầu 1C. Trong trường hợp báo cáo, ACS là phần lớn nhất của báo cáo.

Ngồi xuống. Hãy hít một hơi. Bình tĩnh. Bây giờ tôi sẽ cho bạn biết tin tức.

Để lập trình trong 1C, chỉ biết ngôn ngữ lập trình 1C là chưa đủ. Bạn cũng cần biết ngôn ngữ truy vấn 1C.

Ngôn ngữ truy vấn 1C là ngôn ngữ hoàn toàn riêng biệt cho phép chúng tôi chỉ định dữ liệu nào chúng tôi cần lấy từ cơ sở dữ liệu.

Anh ấy cũng nói được hai thứ tiếng - nghĩa là bạn có thể viết bằng tiếng Nga hoặc tiếng Anh. Nó cực kỳ giống với ngôn ngữ truy vấn SQL và những ai biết nó có thể yên tâm.

Cách sử dụng Yêu cầu 1C

Khi người dùng khởi chạy 1C ở chế độ Doanh nghiệp, không có một gam dữ liệu nào trong máy khách đang chạy. Do đó, khi bạn cần mở một thư mục, 1C sẽ yêu cầu dữ liệu từ cơ sở dữ liệu, tức là nó sẽ đưa ra yêu cầu 1C.

Truy vấn 1C là:

  • Truy vấn tự động 1C
    Được hệ thống tự động tạo ra. Bạn đã tạo một biểu mẫu danh sách tài liệu. Đã thêm một cột. Điều này có nghĩa là khi bạn mở biểu mẫu này ở chế độ Doanh nghiệp, sẽ có một truy vấn và dữ liệu cho cột này sẽ được yêu cầu.
  • Truy vấn bán tự động 1C
    Có nhiều phương thức (hàm) trong ngôn ngữ 1C, khi truy cập sẽ thực hiện một truy vấn tới cơ sở dữ liệu. Ví dụ.GetObject()
  • Truy vấn 1C thủ công (được lập trình viên viết cụ thể dưới dạng truy vấn)
    Bạn có thể tự viết yêu cầu 1C bằng mã và thực thi nó.

Tạo và thực hiện truy vấn 1C

Yêu cầu 1C là văn bản thực tế của yêu cầu bằng ngôn ngữ yêu cầu 1C.
Văn bản có thể được viết bằng bút. Tức là cầm lấy và viết (nếu bạn biết ngôn ngữ này).

Vì 1C thúc đẩy khái niệm lập trình trực quan, trong đó phần lớn hoặc hầu hết mọi thứ có thể được thực hiện mà không cần viết mã bằng tay, nên có một đối tượng Trình xây dựng truy vấn đặc biệt cho phép bạn vẽ văn bản truy vấn mà không cần biết ngôn ngữ truy vấn. Tuy nhiên, điều kỳ diệu sẽ không xảy ra - để làm được điều này, bạn cần biết cách làm việc với người xây dựng.

Khi văn bản của yêu cầu 1C đã sẵn sàng, nó cần được thực thi. Vì mục đích này, có một đối tượng trong mã 1C Yêu cầu(). Đây là một ví dụ:

Yêu cầu = Yêu cầu mới();
Query.Text = "CHỌN
| Danh pháp.Link
|TỪ
| Directory.Nomenclature AS Danh pháp
|ĐÂU
| Danh pháp.Dịch vụ";
Chọn = Query.Run().Select();

Báo cáo(Selection.Link);
Chu kỳ cuối;

Như bạn có thể thấy trong ví dụ, sau khi thực hiện yêu cầu 1C, kết quả sẽ đến với chúng tôi và chúng tôi phải xử lý nó. Kết quả là một hoặc một số hàng của bảng (ở dạng đặc biệt).

Kết quả có thể được tải lên một bảng thông thường:
Tìm nạp = Query.Run().Unload(); //Kết quả – bảng giá trị

Hoặc chỉ đi loanh quanh từng dòng một.
Chọn = Query.Run().Select();
Trong khi vòng lặp Select.Next()
//Làm gì đó với kết quả truy vấn
Chu kỳ cuối;

Làm việc với các yêu cầu 1C

Nguyên tắc cơ bản của truy vấn 1C

Nguyên tắc cơ bản của việc xây dựng yêu cầu 1C –
CHỌN Danh sách các trường TỪ Tiêu đề bảng Điều kiện WHERE

Một ví dụ về xây dựng yêu cầu 1C như vậy:

CHỌN
//danh sách các trường cần chọn
liên kết,
Tên,
Mã số
TỪ
//tên của bảng mà chúng tôi chọn dữ liệu
//danh sách các bảng là danh sách các đối tượng trong cửa sổ cấu hình
Thư mục.Danh pháp
Ở ĐÂU
// chỉ ra lựa chọn
Loại sản phẩm = &Dịch vụ //lựa chọn theo giá trị bên ngoài
Hoặc Dịch vụ // Thuộc tính “Dịch vụ” kiểu Boolean, chọn theo giá trị Đúng
SẮP XẾP THEO
//Sắp xếp
Tên

Danh sách bảng 1C

Bạn có thể thấy tên bảng trong cửa sổ cấu hình. Bạn chỉ cần viết “Danh mục” thay vì “Danh mục”, ví dụ “Danh mục.Danh mục” hoặc “Tài liệu.Bán hàng hóa và dịch vụ” hoặc “Đăng ký tích lũy.Sales”.

Có các bảng bổ sung (ảo) dành cho các sổ đăng ký cho phép bạn lấy các số cuối cùng.

Thông tin Register.RegisterName.Last Slice(&Date) – Yêu cầu 1C từ thanh ghi thông tin, nếu là định kỳ, cho một ngày cụ thể

Đăng ký tích lũy.Tên đăng ký.Số dư(&Ngày) - Yêu cầu 1C từ sổ đăng ký số dư cho một ngày cụ thể

Sổ đăng ký tích lũy. Tên đăng ký. Doanh thu (&Ngày bắt đầu, &Ngày kết thúc) – Yêu cầu 1C từ sổ đăng ký doanh thu trong khoảng thời gian từ ngày bắt đầu đến ngày kết thúc.

Nguyên tắc bổ sung

Khi chúng tôi yêu cầu danh sách một số dữ liệu, các nguyên tắc cơ bản sẽ hoạt động. Nhưng chúng tôi cũng có thể yêu cầu các số và yêu cầu có thể đếm chúng cho chúng tôi (ví dụ: thêm chúng).

CHỌN
//Quantity(FieldName) – đếm số lượng
//Field AS OtherName – đổi tên trường
Số lượng (Liên kết) AS Số lượng tài liệu được đăng
TỪ

Ở ĐÂU
Tiến hành

Yêu cầu 1C này sẽ trả lại cho chúng tôi tổng số tài liệu. Tuy nhiên, mọi tài liệu đều có trường Tổ chức. Giả sử chúng ta muốn đếm số lượng tài liệu cho mỗi tổ chức bằng truy vấn 1C.

CHỌN
//chỉ là một trường tài liệu
Tổ chức,
//đếm số lượng
Số lượng(Liên kết) AS Số lượngTheo tổ chức
TỪ
Tài liệu Bán hàng hóa và dịch vụ
Ở ĐÂU
Tiến hành
NHÓM THEO

Tổ chức

Yêu cầu 1C này sẽ trả về cho chúng tôi số lượng tài liệu của từng tổ chức (còn gọi là “theo tổ chức”).

Chúng ta hãy tính toán thêm số lượng tài liệu này bằng cách sử dụng yêu cầu 1C:

CHỌN
//chỉ là một trường tài liệu
Tổ chức,
//đếm số lượng

//đếm số tiền

TỪ
Tài liệu Bán hàng hóa và dịch vụ
Ở ĐÂU
Tiến hành
NHÓM THEO
//phải được sử dụng nếu danh sách các trường có hàm count() và một hoặc nhiều trường cùng lúc - khi đó bạn cần nhóm theo các trường này
Tổ chức

Yêu cầu 1C này cũng sẽ trả lại số lượng tài liệu cho chúng tôi.

CHỌN
//chỉ là một trường tài liệu
Tổ chức,
//đếm số lượng
Số lượng(Liên kết) NHƯ Số lượngTheo tổ chức,
//đếm số tiền
Số tiền(DocumentAmount) AS Số tiền
TỪ
Tài liệu Bán hàng hóa và dịch vụ
Ở ĐÂU
Tiến hành
NHÓM THEO
//phải được sử dụng nếu danh sách các trường có hàm count() và một hoặc nhiều trường cùng lúc - khi đó bạn cần nhóm theo các trường này
Tổ chức
KẾT QUẢ PO Chung

Ngôn ngữ truy vấn 1C rất phong phú và phức tạp và chúng tôi sẽ không xem xét tất cả các khả năng của nó trong một bài học - hãy đọc các bài học tiếp theo của chúng tôi.

Tóm tắt về các tính năng bổ sung của ngôn ngữ truy vấn 1C:

  • Nối dữ liệu từ nhiều bảng
  • Truy vấn lồng nhau
  • Yêu cầu hàng loạt
  • Tạo bảng ảo của riêng bạn
  • Truy vấn từ bảng giá trị
  • Sử dụng các hàm dựng sẵn để nhận và thao tác các giá trị.

Trình tạo truy vấn 1C

Để không phải viết văn bản yêu cầu bằng tay, có người thiết kế yêu cầu 1C. Chỉ cần nhấp chuột phải vào bất kỳ đâu trong mô-đun và chọn Trình thiết kế truy vấn 1C.

Chọn bảng mong muốn ở bên trái trong trình thiết kế truy vấn 1C và kéo bảng đó sang bên phải.

Chọn các trường bắt buộc từ bảng trong trình thiết kế truy vấn 1C và kéo sang phải. Nếu bạn không chỉ muốn chọn một trường mà còn muốn áp dụng một số loại hàm tính tổng cho nó, sau khi kéo, hãy nhấp chuột vào trường đó hai lần. Trên tab Nhóm, sau đó bạn sẽ cần chọn (kéo) các trường bắt buộc để nhóm.

Trên tab Điều kiện trong trình thiết kế truy vấn 1C, bạn có thể chọn các lựa chọn cần thiết theo cách tương tự (bằng cách kéo các trường mà bạn sẽ thực hiện lựa chọn). Hãy chắc chắn để chọn đúng điều kiện.

Trên tab Thứ tự, việc sắp xếp được chỉ định. Trên tab Kết quả - tổng hợp kết quả.

Bằng cách sử dụng trình thiết kế truy vấn 1C, bạn có thể nghiên cứu mọi truy vấn hiện có. Để thực hiện việc này, hãy nhấp chuột phải vào văn bản của yêu cầu hiện có, đồng thời chọn trình thiết kế truy vấn 1C - và yêu cầu sẽ được mở trong trình thiết kế truy vấn 1C.