Cách thực hiện lựa chọn bắt buộc trong SCD. ACS không chỉ dành cho báo cáo - thực hiện các lựa chọn phổ quát. Lưu trữ các lựa chọn SKD trong cơ sở thông tin

Phần mở rộng ngôn ngữ truy vấn cho hệ thống tổng hợp dữ liệu

Việc mở rộng ngôn ngữ truy vấn cho hệ thống tổng hợp dữ liệu được thực hiện bằng cách sử dụng các hướng dẫn cú pháp đặc biệt được đặt trong dấu ngoặc nhọn và đặt trực tiếp vào văn bản truy vấn.

Các thành phần cú pháp của phần mở rộng ngôn ngữ truy vấn của hệ thống tổng hợp dữ liệu

CHỌN

Câu này mô tả các trường mà người dùng có thể chọn để xuất. Sau từ khóa này, bí danh của các trường từ danh sách lựa chọn truy vấn chính sẽ có sẵn để định cấu hình sẽ được liệt kê, phân tách bằng dấu phẩy.

Ví dụ:

(CHỌN Mặt hàng, Kho)

Sau bí danh trường có thể có sự kết hợp của các ký tự “.*”, cho biết khả năng sử dụng các trường con từ trường này.

Ví dụ: mục nhập Danh pháp.* cho biết khả năng sử dụng các trường con của trường “Danh pháp” (ví dụ: trường “Danh pháp.Mã”). Phần tử SELECT chỉ có thể xuất hiện trong truy vấn nối đầu tiên.

Ở ĐÂU

Các trường mà người dùng có thể áp dụng lựa chọn được mô tả. Đề xuất này sử dụng các trường bảng. Không được phép sử dụng bí danh trường danh sách lựa chọn. Mỗi phần của liên minh có thể chứa phần tử WHERE của riêng nó.

(Danh pháp WHERE.*, Kho)

Một ví dụ đơn giản

Cần lấy doanh số trong kỳ + trưng bày toàn bộ mặt hàng, bất kể có doanh số hay không. Tức là bạn cần chọn dữ liệu từ bảng doanh thu của Sổ đăng ký bán hàng, dữ liệu từ thư mục danh pháp. Hãy bỏ qua câu hỏi tại sao chúng ta cần tất cả các danh pháp.

Để giải quyết vấn đề, bạn có thể tạo truy vấn kết nối mặt hàng với bảng Doanh số bán hàng bằng left join, kết quả đối với mặt hàng không bán được trong khoảng thời gian đã chọn, chúng ta sẽ nhận được các giá trị trường đối tác, Hiệp định, Số lượng, Tổng= Không. Yêu cầu này:

CHỌN Danh mục tham chiếu.Liên kết dưới dạng Danh pháp, Doanh thu bán hàng.Bên đối tác, Doanh thu bán hàng.Thỏa thuận của bên đối tác, Doanh thu bán hàng.Số lượng Doanh thu NHƯ Số lượng, Doanh thu bán hàng.CostDoanh thu NHƯ Chi phí TỪ Tham chiếu.Danh sách NHƯ Danh mục KẾT NỐI TRÁI Đăng ký Tích lũy.Sales.Doanh thu NHƯ Doanh thu bán hàng PO SprNomenclature.Liên kết = Doanh thu bán hàng. Danh pháp

Đây là kết quả:

đối tác Hiệp định Danh pháp Số lượng Tổng
vô giá trị vô giá trị _Kiểm tra1 vô giá trị vô giá trị
LLC "Sừng và móng guốc" Thỏa thuận1 Dép đi trong nhà 10 1200
"Gazprom" Hợp đồng mát mẻ Bốt 5 13000
vô giá trị vô giá trị Galoshe vô giá trị vô giá trị
vô giá trị vô giá trị Đá phiến vô giá trị vô giá trị

Trong ví dụ này, không có doanh số bán các mặt hàng: “Giày bao ngoài” và “Dép”

Và mọi thứ sẽ ổn, nếu chúng ta nhóm mẫu theo đối tác thì tất cả các mặt hàng chưa bán sẽ rơi vào một nhóm riêng, trong đó Đối tác = Null, nhưng khách hàng muốn có lựa chọn ngẫu nhiên trong báo cáo theo trường đối tác (đương nhiên, điều này có nghĩa là đối tác từ sổ đăng ký bán hàng). Tôi nên làm gì? Rốt cuộc, thực ra chúng ta chỉ cần lọc bảng Việc bán hàng. Nếu chúng ta sử dụng tính năng tự động hoàn thành trong hàm tạo ACS thì các trường lựa chọn có sẵn sẽ bao gồm trường đối tác, mọi thứ có vẻ ổn, nhưng khi thực hiện một báo cáo có sự lựa chọn của đối tác, chúng tôi sẽ mất tất cả các bản ghi từ kết nối với mục đó. Ví dụ: hãy đặt lựa chọn: đối tác = LLC "Sừng và móng guốc". Kết quả sẽ như thế này:

Không phải tất cả những gì chúng ta cần, phải không?

Tất nhiên, để giải quyết vấn đề, bạn có thể thêm một tham số vào truy vấn, ví dụ: vào các tham số của bảng ảo Doanh thu bán hàng, nhưng đồng thời tính linh hoạt của việc thiết lập kiểu so sánh bị mất.

Có một giải pháp: cho việc này trong trình tạo truy vấn trên tab Thành phần dữ liệu => Những cái bàn thêm trường điều kiện vào các điều kiện của bảng ảo Doanh thu bán hàng và đổi biệt danh của mình thành Lựa chọn đối tác

Để không gây nhầm lẫn cho người dùng với các trường lựa chọn, chúng tôi sẽ tắt trường điều kiện đối tác và thay đổi tiêu đề cho trường Lựa chọn đối tác


Do việc thực thi lược đồ này với lựa chọn được trường đối tác kích hoạt, truy vấn kết quả sẽ có dạng:

CHỌN Danh mục.Liên kết làm Danh pháp, Doanh thu bán hàng.Bên đối tác NHƯ Đối tác, Doanh thu bán hàng.Thỏa thuận của bên đối tác NHƯ Thỏa thuận đối tác, Doanh thu bán hàng.Số lượngDoanh thu NHƯ >Số lượng, Doanh thu bán hàng.Chi phíDoanh thu NHƯ Chi phí, PRESENTATIONLINK(Doanh thu bán hàng.Thỏa thuận của bên đối tác) NHƯ Hợp đồngBên đối tác aTrình bày, LIÊN KẾT TRÌNH BÀY(Doanh thu bán hàng.Bên đối tác) ) NHƯ Danh mục đối tác Trình bày, Danh mục Spr. Trình bày NHƯ Danh mục Trình bày TỪ Thư mục. Danh mục AS Danh mục Danh mục KẾT NỐI TRÁI Đăng ký Tích lũy.Sales.Doanh thu(&P , , , Bên đối tác = &P3 ) NHƯ Doanh thu bán hàng THEO Danh mục danh mục.Liên kết = Doanh thu bán hàng.Danh mục

Và theo đó, kết quả:

đối tác Hiệp định Danh pháp Số lượng Tổng
vô giá trị vô giá trị _Kiểm tra1 vô giá trị vô giá trị
LLC "Sừng và móng guốc" Thỏa thuận1 Dép đi trong nhà 10 1200
vô giá trị vô giá trị Bốt vô giá trị vô giá trị
vô giá trị vô giá trị Galoshe vô giá trị vô giá trị
vô giá trị vô giá trị Đá phiến vô giá trị vô giá trị

Test1 là một nhóm trong thư mục Danh pháp, trong đó mọi thứ được đặt

Kèm theo ấn phẩm là lược đồ XML của báo cáo được sử dụng trong ấn phẩm. Tôi đã tạo mạch trong Tự động hóa tích hợp, nhưng tôi nghĩ mọi thứ sẽ hoạt động tốt ở cả UPP và UT 10

Tóm tắt

Ví dụ này cho thấy cách tạo cài đặt lựa chọn của riêng bạn trong hệ thống kiểm soát truy cập và tắt các cài đặt được tạo tự động nếu bạn đang thiết kế mạch có bật cờ Tự động điền.

Nếu bạn có đủ kinh nghiệm để tạo mạch mà không cần sử dụng Tự động điền- thì lời khuyên này không có ý nghĩa gì cả.

Phần mềm được sử dụng

  • Chương trình chụp màn hình SnimOK!
  • Trình chỉnh sửa tệp XML

SKD có thể được sử dụng để làm gì?

Ý kiến ​​đã được xác lập là nhằm mục đích báo cáo.

Trong thực tế Khả năng của ACS vượt xa việc tạo các báo cáo phổ quát.

Và hôm nay chúng tôi sẽ chỉ ra cách bằng cách sử dụng hệ thống kiểm soát truy cập, người dùng sẽ có thể định cấu hình lựa chọn dữ liệu linh hoạt. Hơn nữa, lựa chọn này sẽ được sử dụng khi thu thập và xử lý dữ liệu.

Điều này sẽ hữu ích cho những nhiệm vụ nào?

Hãy cung cấp cho ví dụ từ cấu hình điển hình:

  • Đang xử lý “Tải dữ liệu lên trang web”
  • Hình thành bảng giá
  • Tải dữ liệu lên TSD (thiết bị đầu cuối thu thập dữ liệu)
  • Phân khúc sản phẩm, đối tác
  • Hình thành đơn hàng (khách hàng, nhà cung cấp) theo nhu cầu
  • Lập kế hoạch sửa chữa trong 1C:ERP.

Nghĩa là, công cụ này rất hữu ích ở những nơi cần cung cấp cho người dùng nhiều lựa chọn.

Tạo lựa chọn ngẫu nhiên ở dạng được kiểm soát bằng ACS

Bài học bao gồm việc làm việc với trình tạo cài đặt sơ đồ bố trí dữ liệu:

  • Lựa chọn đầu ra trên biểu mẫu
  • Kết nối phần mềm giữa trình tạo cài đặt và sơ đồ bố cục
  • Tạo các lựa chọn mặc định trong hệ thống kiểm soát truy cập.

Nhận dữ liệu từ cơ sở dữ liệu bằng cách lọc theo lựa chọn ACS

Video này cho biết cách bạn có thể chọn dữ liệu bằng cách sử dụng lựa chọn đã đặt trước đó trong trình tạo cài đặt.

Một vật thể “đáng sợ” được sử dụng – Bộ xử lýOutputResultCompositionDataIntoValueCollection.

Trên thực tế, không phải mọi thứ đều phức tạp như vậy - chúng tôi sẽ giải quyết được vấn đề trong 8 phút.

Lưu trữ các lựa chọn SKD trong cơ sở thông tin

Trong bài học chúng ta sẽ xem đang lưu cài đặt trình tạo ACS sử dụng Kho lưu trữ giá trị.

Hãy cùng tìm hiểu cách giải quyết vấn đề này trong cấu hình “1C: Manufacturing Enterprise Management 1.3”.

Thích xem! :)

Nhìn chung, ACS mang lại rất nhiều cơ hội.

Dưới đây là một số “thủ thuật” mà chúng tôi thậm chí không có thời gian để mô tả trên trang khóa học.

Nếu bạn cần thu thập dữ liệu từ các nguồn khác nhau, có ba lựa chọn.

Bạn có thể thử soạn một truy vấn “phổ quát” cho tất cả dữ liệu (dài), bạn có thể hiển thị dữ liệu của một số truy vấn trong một vòng lặp (cấu trúc cứng nhắc, không linh hoạt) - hoặc bạn có thể chỉ cần sử dụng ACS và kết nối các bộ dữ liệu thay vì một yêu cầu.

Đồng thời, điều quan trọng là phải có được kết quả chính xác - điều này có đặc điểm riêng nếu có nhiều nguồn

Với sự trợ giúp của SKD bạn có thể chỉ cần có được ảnh chụp nhanh mới nhất cho mỗi ngày trong báo cáo.

Hoặc, để rõ ràng, - lấy giá sản phẩm cho mỗi ngày bán.

Với sự trợ giúp của ACS bạn có thể tổ chức hiển thị tất cả các ngày trong khoảng thời gian trong báo cáo và không chỉ những dữ liệu có trong báo cáo (thêm ngày mà không cần lập trình, chỉ với khả năng của hệ thống kiểm soát truy cập)

Sử dụng ACS, bạn có thể sắp xếp các nhóm lồng nhau bằng cách thêm các khoảng thời gian (năm/quý/tháng, v.v.)

Sắp xếp báo cáo theo ý muốn, ví dụ hiển thị tiêu đề cột theo chiều dọc và hiển thị dữ liệu trong cột này theo chiều ngang.

Cho phép người dùng chọn tần suất dữ liệu sẽ được hiển thị trong báo cáo (theo năm, theo quý, theo tháng) - chỉ bằng cài đặt mà không cần chỉnh sửa mô-đun báo cáo.

Làm cách nào để kết hợp một số điều kiện bằng OR trong báo cáo? Ví dụ: tùy chọn này không có sẵn trong trình tạo báo cáo nhưng có sẵn trong ACS

Nếu bạn hiển thị dữ liệu tóm tắt dưới dạng biểu đồ, bạn cần có khả năng kiểm soát chính xác hình thức của nó: khả năng hiển thị của các điểm đánh dấu cho một chuỗi, màu sắc xen kẽ của chuỗi biểu đồ, tách dữ liệu trong quá khứ khỏi dữ liệu trong tương lai trên biểu đồ bằng một đường thẳng đứng , vân vân.

Tất nhiên, có những sắc thái cần được chú ý.

Khi tạo báo cáo, nhà phát triển đã sửa lỗi văn bản truy vấn nhưng khi sử dụng truy vấn này trong báo cáo trên hệ thống kiểm soát truy cập thì hệ thống đưa ra kết quả không chính xác.

Vì vậy, điều quan trọng là có thể lấy được truy vấn mà hệ thống thực sự thực thi để lấy dữ liệu từ cơ sở dữ liệu và gỡ lỗi cho truy vấn đó.

Khi thêm chi tiết vào máy ghi tài liệu vào báo cáo, hệ thống đôi khi tạo ra số dư đầu kỳ và cuối kỳ “không chính xác”.

Do đó, điều quan trọng là phải định cấu hình chính xác các trường trong báo cáo trên hệ thống kiểm soát truy cập để số dư được hiển thị chính xác cả khi có và không có chi tiết đối với tài liệu.

Kết quả báo cáo có thể thay đổi tùy thuộc vào vị trí định cấu hình lựa chọn theo giá trị tài nguyên - ở cấp độ báo cáo và cấp độ của một nhóm riêng lẻ, bạn cần theo dõi điều này.

Nếu bạn muốn làm chủ ACS một cách chuyên nghiệp và hàng ngày áp dụng vào công việc của bạn, đăng ký khóa học:

Ủng hộ - 2 tháng. Phạm vi khóa học – 34 giờ giảng dạy.

Đừng trì hoãn việc học của bạn!

Để xử lý ghi, các lập trình viên thường phải sử dụng các truy vấn để lấy dữ liệu rồi xử lý nó. Ngược lại, dữ liệu được lấy từ yêu cầu. Chà, một yêu cầu không có lựa chọn hoặc bộ lọc là rất hiếm. Hãy nói về các lựa chọn trong các yêu cầu như vậy bằng cách sử dụng yêu cầu ví dụ:

Để tổ chức lựa chọn theo đối tác cho người dùng ở dạng thông thường, lập trình viên phải đặt ba phần tử trên biểu mẫu trông giống như sau:

Một lập trình viên phải mất bao nhiêu công sức để mô tả các loại so sánh khác nhau (bằng, không bằng, trong danh sách, trong một nhóm ...) và dựa trên các loại so sánh này, tinh chỉnh yêu cầu cuối cùng của anh ta để lấy dữ liệu.

Hãy xem làm thế nào điều này có thể được thực hiện bằng ACS. Trong quá trình xử lý của chúng tôi, hãy tạo Bố cục với loại Lược đồ thành phần dữ liệu và điền vào yêu cầu của chúng tôi:

Trên tab Cài đặt, chúng tôi sẽ thêm một nhóm mới mà không có chi tiết và trong ví dụ của chúng tôi là trường Tài khoản, vì cuối cùng chúng tôi sẽ đưa mọi thứ vào bảng giá trị:

Và trên tab Lựa chọn, thêm Đối tác vào vùng lựa chọn:

Bây giờ hãy bắt đầu tạo biểu mẫu. Hãy hiển thị trên biểu mẫu xử lý Lựa chọn mà người dùng sẽ làm việc. Chúng ta sẽ hiển thị một phần tử thuộc loại Table Field trên biểu mẫu và đặt tên cho nó là Selection với kiểu dữ liệu Composer.Settings.Selection:

Bây giờ, hãy tạo trình xử lý sự kiện cho biểu mẫu OnOpen và trình xử lý để nhấp vào nút Chạy, mã được trình bày bên dưới:

Bố cục Perem; Thủ tục ButtonExecutePress(Button) Result.Clear(); LayoutLinker = newDataLayoutLayoutLinker; Bố cục Bố cục = Bố cục Composer.Execute(Layout, Composer.GetSettings(), Type("DataCompositionLayoutGeneratorForValueCollection")); CompositionProcessor = newDataCompositionProcessor; LayoutProcessor.Initialize(LayoutLayout); Bộ xử lý đầu ra = Bộ xử lý đầu ra mới về kết quả tổng hợp dữ liệu thành tập hợp các giá trị; OutputProcessor.SetObject(Kết quả); OutputProcessor.Output(CompositionProcessor); Nếu FormElements.Result.Columns.Quantity() = 0 thì FormElements.Result.CreateColumns(); endIf; Thủ tục EndProcedureOnOpen() Bố cục = GetLayout("Layout"); SourceAvailableSettings = SourceAvailableSettingsDataComposition(Layout); mới Linker.Initialize(SourceAvailableSettings); Linker.LoadSettings(Layout.DefaultSettings); Kết thúc thủ tục

Quá trình xử lý đã sẵn sàng, sau khi khởi chạy nó, bạn có thể thấy ngay trong Lựa chọn của chúng tôi Đối tác đã xuất hiện trong Lựa chọn của chúng tôi, từ đó bạn có thể chọn bất kỳ loại so sánh nào cũng như thêm các dòng lựa chọn bổ sung bằng cách sử dụng chi tiết của thư mục Đối tác:

Chỉ vậy thôi, tôi hy vọng bài viết này sẽ giúp bạn cải thiện tính linh hoạt của các lựa chọn trong quá trình xử lý của mình.

Kononov Sergey