Khoảng thời gian tiêu chuẩn 1 giây trong yêu cầu. Chúng tôi tạo một báo cáo với tần suất được chỉ định trên hệ thống lưu trữ

Bài viết này thảo luận về một số tính năng của việc thiết lập khoảng thời gian khi sử dụng Hệ thống cấu thành dữ liệu (DCS), các vấn đề phát sinh do sự khác biệt trong khái niệm khoảng thời gian giữa người dùng thông thường và hệ thống 1C, đồng thời đề xuất cách giải quyết chúng .
Hầu hết các báo cáo được phát triển bằng Hệ thống Thành phần Dữ liệu (DCS) đều yêu cầu người dùng nhập khoảng thời gian mà báo cáo sẽ được xây dựng. Theo quy định, trong ACS, mục nhập kỳ được tổ chức thông qua các tham số, sử dụng cấu trúc sau, xem. Hình 1 Phương pháp bước vào thời kỳ này được coi là “cổ điển”; nó được mô tả trong một bài viết trên ITS và các tài liệu khác dành cho sự phát triển trong 1C, vì vậy hãy lấy nó làm cơ sở. Hãy xem xét một ví dụ về một yêu cầu đơn giản nhận tất cả tài liệu Bán hàng hóa và dịch vụ trong một khoảng thời gian nhất định, xem Hình 2 Khi sử dụng báo cáo này, người dùng đặt khoảng thời gian thông qua các tham số, xem. Hình 3 Mọi thứ có vẻ đúng... NHƯNG có một vấn đề nhỏ:

Vấn đề là đại đa số người dùng “hiểu” khoảng thời gian này khác với 1C “hiểu” nó, ví dụ:
1). Hãy xem xét Hình 3
Theo quan điểm của người dùng, khoảng thời gian không được chỉ định, tức là KHÔNG GIỚI HẠN, tức là TẤT CẢ các tài liệu không có giới hạn ngày tháng phải được đưa vào báo cáo.
“Từ quan điểm” của hệ thống 1C, tham số-chu kỳ được đặt và ... cả hai ranh giới của nó đều bằng 01.01.0001 và chỉ những tài liệu có ngày trống mới được đưa vào báo cáo, điều này trong thực tế có nghĩa là sẽ không có một tài liệu nào được đưa vào.
2). Hãy xem xét Hình 4
Theo quan điểm của người dùng, báo cáo phải bao gồm tất cả các tài liệu bắt đầu từ ngày 28/01/2010.
“Theo quan điểm” của 1C, khoảng thời gian 28/01/2010 – 01/01/0001 sẽ gây ra một ngoại lệ.

Tất nhiên, bạn có thể cố gắng giải thích cho người dùng lý do tại sao báo cáo không hiển thị các tài liệu mà họ mong muốn xem và khoảng thời gian đó được trình bày như thế nào theo “quan điểm” của 1C, nhưng đây là một nhiệm vụ bạc bẽo và nó cũng sai. Một chương trình tốt trước hết phải thân thiện với người dùng, vì chương trình tồn tại cho người dùng chứ không phải ngược lại, do đó bạn sẽ phải “dạy” 1C hiểu khoảng thời gian mà người dùng hiểu, cụ thể là:
1). Đầu kỳ và cuối kỳ không được chỉ định -> tất cả các tài liệu.
2). Chỉ xác định Ngày đầu kỳ -> tất cả các tài liệu bắt đầu từ Đầu kỳ
3). Ngoài ra, chúng tôi sẽ kiểm tra rằng Cuối kỳ >= Đầu kỳ và nếu điều này không đúng thì chúng tôi sẽ cho rằng Cuối kỳ không được chỉ định, tức là. 2).
Dựa trên những điều trên, biểu thức cho tham số Ngày kết thúc sẽ như sau:

CHỌN KHI &Period.EndDate=DATETIME(1,1,1) THEN DATETIME(3999,12,31,23,59,59) ELSE CHỌN KHI &Period.EndDate<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

Hình thức cuối cùng của thiết kế lựa chọn giai đoạn của chúng tôi được hiển thị trong Hình 5

Chúc một ngày tốt lành, độc giả thân mến của trang blog! Trong bài viết trước, chúng ta đã tìm hiểu lý do tại sao những vai trò này lại cần thiết. Và hôm nay, trong phần thứ hai của loạt bài viết này, chúng ta sẽ xem xét thiết lập vai trò với thuộc tính “Period” và cũng xem xét các ví dụ về việc thực hiện các vai trò này. Phần còn lại được tính bằng cách sử dụng trường có vai trò “Thời gian”. Cũng giống như trong lĩnh vực này với vai trò “Kích thước”, mà chúng ta sẽ nói đến vào lúc khác. Vì vậy, hãy bắt đầu!

Hãy tạo một báo cáo mới:

  1. Trong Bộ cấu hình, chọn mục menu “Tệp” - “Mới” - “Báo cáo bên ngoài”.
  2. Nhấp vào nút “Mở sơ đồ thành phần dữ liệu”. Trong hộp thoại mở ra, nhấp vào nút “Hoàn tất”.
  3. Bây giờ, hãy tạo một bảng truy cập vào bảng ảo “Đăng ký tích lũy”.
  4. Nhấp chuột phải vào nút “Bộ dữ liệu” và chọn dòng “Thêm tập dữ liệu - Truy vấn”.
  5. Bây giờ hãy nhấp vào nút “Trình tạo truy vấn”. Hãy chọn thanh ghi tích lũy “GoodsInWarehousesRemainsAndTurnover” (cấu hình USP).
  6. Hãy mở hộp thoại “Tham số bảng ảo” và cho biết rằng chu kỳ “Tự động” sẽ được sử dụng, nghĩa là có thể chỉ định một số khoảng thời gian.

Bây giờ hãy cấu hình các trường đầu ra. Đặt các trường sau: “Nhà đăng ký”, “Tháng”, “Danh pháp”, “Chất lượng” và thông tin về số dư. Việc thêm trường được thực hiện bằng cách nhấp đúp chuột trái vào trường mong muốn hoặc sử dụng nút “>”. Sau khi thêm các trường, nhấp vào nút “OK”.

Xin lưu ý rằng đối với một số trường, vai trò có thuộc tính “Thời gian” được định cấu hình tự động.

Hãy nhìn vào những gì tồn tại cài đặt vai trò cho thuộc tính “Thời kỳ”. Đầu tiên, số sê-ri của kỳ được chỉ định. Việc đánh số phải liên tục, bắt đầu từ một, từ khoảng thời gian thấp nhất đến cao nhất, nghĩa là đầu tiên sẽ có số dòng, sau đó là “Recorder”, sau đó là thứ hai, ngày, tuần, tháng, quý, năm.

Vì vậy, các trường xuất hiện trong yêu cầu của chúng ta phải được đánh số. Lưu ý rằng chúng ta có hai trường dấu chấm - "Nhà đăng ký" và "Tháng". Trường thấp là “Nhà đăng ký”, nó được chỉ định một và trường cao là “PeriodMonth”, nó được chỉ định hai. Chúng ta sẽ xem xét điều này chi tiết hơn trong bài viết tiếp theo.

Hãy thiết lập báo cáo của chúng tôi:

  1. Hãy chuyển đến tab "Tài nguyên" và xác định các tài nguyên trong báo cáo của chúng tôi.
  2. Nhấp vào nút “>>” để chọn tất cả các trường cho tài nguyên.
  3. Bây giờ, hãy chuyển đến tab “Cài đặt” và tạo cài đặt ở dạng danh sách.
  4. Nhấp vào nút “Trình thiết kế cài đặt thành phần dữ liệu” (nút có dạng cây đũa thần).
  5. Loại báo cáo: "Danh sách". Nhấp vào nút “Tiếp theo”.
  6. Hãy định cấu hình các trường đầu ra bằng cách nhấp vào nút ">>". Hãy sắp xếp chúng như sau: “PeriodMonth”, “Nomenclature”, “Quality”, “Registrar”.
  7. Nhấp vào nút “Tiếp theo” và thiết lập nhóm. Chúng ta sẽ thiết lập nhóm theo thứ tự sau: “PeriodMonth”, “Nomenclature”, “Quality”. Nhóm “Nhà đăng ký” sẽ được hiển thị dưới dạng bản ghi chi tiết.
  8. Nhấp vào nút “OK”.

Hãy mở báo cáo của chúng tôi. Nếu chạy báo cáo này, chúng ta sẽ thấy một số tính năng khi nhận số dư. Nếu bạn nhìn kỹ vào kết quả báo cáo, bạn sẽ nhận thấy ngay một số lỗi. Đặc biệt, không hiểu vì lý do gì mà ngay từ đầu thời kỳ hoạt động của công ty đã có số dư ban đầu.

Và lỗi này liên quan đến tính năng nhận số dư từ nhà đăng ký. Để các số dư này được hiển thị chính xác, bạn cần thêm một trường nữa vào trường đầu ra của yêu cầu - trường “PeriodSecond”. Để thêm trường “PeriodSecond”, hãy mở báo cáo trong Bộ cấu hình và nhấp vào nút “Mở lược đồ thành phần dữ liệu”. Bây giờ hãy nhấp vào nút “Trình tạo truy vấn” và thêm “PeriodSecond”. Trong trường hợp này, trường “Nhà đăng ký” sẽ vẫn là trường đầu tiên của kỳ, “PeriodSecond” sẽ là trường thứ hai và “PeriodMonth” sẽ là trường thứ ba.

Một giây để làm gì? Hệ thống thành phần dữ liệu tính toán số dư bằng phép tính và để xác định rõ ràng vị trí của máy ghi trên trục thời gian, liên kết đến bản thân máy ghi cũng không đủ, tức là ngày của máy ghi này, và sau đó hệ thống bố trí sẽ có thể đạt được sự cân bằng chính xác bằng tính toán. Nếu chúng tôi chỉ định đúng thứ tự của các trường và tạo lại báo cáo, chúng tôi sẽ nhận được:

Bây giờ không còn số dư để bắt đầu các hoạt động theo danh pháp Plinth. Sau đó, trong kỳ tiếp theo, nó trùng với số dư cuối cùng, tức là chúng ta thấy một kết quả thực sự chính xác. Bạn có thể tải xuống báo cáo mẫu từ liên kết bên dưới. Bạn có thích bài viết này? Cái gì có thể thay đổi, cái gì có thể thêm vào? Hãy chia sẻ về nó trong phần bình luận!

Ở cuối bài viết, tôi muốn giới thiệu cho bạn một cái miễn phí từ Anatoly Sotnikov. Đây là khóa học từ một lập trình viên có kinh nghiệm. Nó sẽ chỉ cho bạn cách xây dựng báo cáo trong hệ thống kiểm soát truy cập trên cơ sở riêng biệt. Bạn chỉ cần lắng nghe cẩn thận và ghi nhớ! Bạn sẽ nhận được câu trả lời cho những câu hỏi sau:
  • Làm thế nào để tạo một báo cáo danh sách đơn giản?
  • Các cột Trường, Đường dẫn và Tiêu đề trên tab “Trường” dùng để làm gì?
  • Những hạn chế đối với các trường bố cục là gì?
  • Làm cách nào để định cấu hình vai trò chính xác?
  • Vai trò của các trường bố cục là gì?
  • Tôi có thể tìm thấy tab thành phần dữ liệu trong truy vấn ở đâu?
  • Làm cách nào để cấu hình các tham số trong hệ thống kiểm soát truy cập?
  • Nó thậm chí còn thú vị hơn ...
Có lẽ bạn không nên cố gắng tự mình lướt Internet để tìm kiếm những thông tin cần thiết? Hơn nữa, mọi thứ đã sẵn sàng để sử dụng. Chỉ cần bắt đầu! Tất cả các chi tiết về những gì có trong các bài học video miễn phí

Đây là một trong những bài học về đánh dấu thành phần dữ liệu trong truy vấn:



Vì vậy, hãy bắt đầu.

Để đơn giản, dễ hiểu về ví dụ, chúng ta sẽ xây dựng trên một thanh ghi tích lũy tuần hoàn đơn giản.

Trong trường hợp của tôi, đây là sổ đăng ký tích lũy "Kế toán công việc đang tiến hành".

Ví dụ: chúng tôi sẽ chỉ ra các tham số của nó một cách cứng nhắc (không thông qua việc áp đặt mềm các tham số trên hệ thống kiểm soát truy cập):

Xin lưu ý rằng tần suất của bảng ảo là “Ghi”.

Tuy nhiên, như đã lưu ý ở trên, chúng ta cần khoảng thời gian xét về mặt tính tuần hoàn, vì vậy tôi đề xuất tính trường “Thời kỳ” theo cách sau (không hay lắm, nhưng tôi chưa thấy tùy chọn nào tốt hơn):

Như có thể thấy từ ảnh chụp màn hình, một tham số được chuyển đến yêu cầu mà người dùng chỉ định trên biểu mẫu: Giá trị của bảng liệt kê "Tần số" - bảng liệt kê này được tìm thấy trong hầu hết các giải pháp tiêu chuẩn.

Chúng tôi sẽ chỉ ra các loại có sẵn của nó trên tab “Tham số”:

Với cài đặt này, chúng tôi định dạng chu kỳ của mình để mọi thứ đều đẹp và vừa mắt)

Dưới đây là các định dạng:

Tháng: DF="MMMM yyyy "y.""

Ngày: DF = dd.MM.yyyy

Tuần: DF = ""Tuần từ "dd.MM.yyyy"

Quý: DF = "đến "quý" yyyy "y.""

Năm: DF = "yyyy"y.""

Thập kỷ: DF = ""Thập kỷ từ "dd.MM.yyyy"

Nửa năm: DF = ""Nửa năm kể từ" dd.MM.yyyy"

Đó là tất cả. Kết quả là một bức tranh tuyệt vời:

Khi tạo báo cáo trên hệ thống kiểm soát truy cập, thường cần hiển thị lựa chọn khoảng thời gian trên biểu mẫu báo cáo, do đó bạn không cần nhập ngày theo cách thủ công mà chọn từ danh sách các khoảng thời gian tiêu chuẩn, chẳng hạn như: “Năm” , “Tháng”, “Tuần”, v.v. Đối với các tham số thuộc loại Ngày, bạn chỉ có thể chỉ định “Đầu năm nay, tháng, v.v.”, nhưng không cung cấp “Kết thúc”.

Vấn đề là, trong số các loại dữ liệu, chỉ có loại “Ngày bắt đầu tiêu chuẩn”, nhưng tôi cũng muốn có “Ngày kết thúc tiêu chuẩn”.

Có một cách để giải quyết vấn đề này.

  1. Hãy tạo một Tham số mới, gọi nó là “Thời gian”
  2. Đặt tham số này thành loại “Thời gian chuẩn”
  3. Trong trường “Biểu thức” của tham số “Bắt đầu khoảng thời gian” và “Kết thúc khoảng thời gian” được sử dụng trong yêu cầu, hãy đặt biểu thức “ &Period.StartDate" và " &Thời gian.Ngày kết thúc” tương ứng.

Nhưng có một chút tinh tế. Nếu chúng tôi sử dụng bảng ảo trong truy vấn thì rất có thể báo cáo sẽ ngừng hoạt động và thông báo lỗi như “Lỗi xử lý chế độ xem, loại không khớp, số tham số…” sẽ được hiển thị.

Để tránh điều này, bạn cần xóa tất cả các tham số của bảng ảo.

Và thêm chúng vào các bảng trên tab “Thành phần dữ liệu”.

Để các tham số được hiển thị trong cài đặt báo cáo nhanh, hãy bật cờ tương ứng cho các tham số báo cáo.

Bây giờ việc lựa chọn khoảng thời gian trên biểu mẫu báo cáo trông như thế này.

Hãy tạo một báo cáo với một bộ dữ liệu truy vấn:

LỰA CHỌN SẢN PHẨM TẠI KHO Còn lại. Kho bãi, hàng hóaTrong kho còn lại. Danh pháp, sản phẩm còn lại trong kho. Số dư TỪ Đăng ký tích lũy. Sản phẩmTrong kho. Remains(&MyDate ,) AS ProductsInWarehousesRemains

Bây giờ chúng ta hãy chuyển đến tab tham số và thấy rằng hệ thống, ngoài tham số &MyDate của chúng ta, cũng đã tạo tham số &Period.
Để theo dõi trực quan các khoảng thời gian, chúng tôi sẽ tạo một biểu mẫu báo cáo chính và đặt một trường bảng có dữ liệu trên đó: Cài đặt Composer.Settings.DataParameters

Hãy lưu báo cáo và mở nó trong doanh nghiệp. Trong trường bảng có tham số, chỉ tham số &Period được hiển thị:

Theo đó, mọi thay đổi về thông số này sẽ không cho kết quả như mong muốn.

Tại sao tham số &MyDate không khả dụng? Tất nhiên, vì trên tab tham số, anh ấy đã chọn hộp kiểm Giới hạn sẵn có.

Bỏ chọn hộp. Bây giờ chúng ta thấy cả hai trong các thông số có sẵn. Chỉ khi tạo báo cáo, chúng tôi mới thấy rằng báo cáo phản hồi với thông số &Period chứ không phải &MyDate.

Trong ví dụ này, điều đơn giản nhất cần làm là đổi tên tham số &MyDate thành &Period trong yêu cầu và đạt được kết quả mong muốn. Nhưng có thể bạn có một truy vấn trong đó tham số &Period đã được sử dụng hoặc quan điểm tôn giáo của bạn không cho phép bạn sử dụng tham số này, trong mọi trường hợp, bạn có thể giải quyết vấn đề như thế này:

LỰA CHỌN SẢN PHẨM TẠI KHO Còn lại. Kho bãi, hàng hóaTrong kho còn lại. Danh pháp, sản phẩm còn lại trong kho. Số dư TỪ Đăng ký tích lũy. Sản phẩmTrong kho. Remains((&MyDate) ,) AS ProductsInWarehousesRemains

CẬP NHẬT từ người dùng ù:

Vấn đề chính khi sử dụng tham số “tiêu chuẩn” (được hệ thống thêm) là khi sử dụng một số bảng ảo trong báo cáo, nếu tham số này được xác định, giá trị của nó sẽ được sử dụng trong tất cả các trường hợp khác thay vì bảng “riêng”.

Tôi sẽ cho bạn một ví dụ:

CHỌN Nhân viênSP.Employee, WorkersSP.ReasonChangesState, WorkersSP.Period, WorkersSPAnotherDate.Period AS Period2, WorkersSPAnotherDate.ReasonChangesState AS ReasonChangesState2 TỪ RegisterInformation.EmployeesOrganizations.SliceLast(&Period , Nhân viên = &Employee ) NHƯ Work nikkiSP KẾT NỐI TRÁI Sổ đăng ký thông tin.Nhân viên của các tổ chức.Lát cắt mới nhất(&OtherDate ,) NHƯ Nhân viênSPAnotherDate BY Nhân viênSP.Employee = Nhân viênSPAnotherDate.Employee

Trong truy vấn con thứ hai, giá trị của tham số PERIOD “tiêu chuẩn” sẽ được sử dụng làm tham số ngày cắt, thay vì giá trị OtherDate.

“Trục trặc” này sẽ được quan sát thấy ngay cả khi truy vấn con thứ hai được xuất ra tập dữ liệu thứ hai và được liên kết bằng ACS. Tùy chọn sử dụng trong yêu cầu thứ hai một biểu thức như “THÊM(&Period, MONTH, -1)” cũng sẽ không hoạt động, tháng sẽ không bị trừ. Tuy nhiên, việc đổi tên tham số “Period” trong yêu cầu thành “FirstDate” chẳng hạn sẽ giải quyết được vấn đề này.

Nhân tiện, vấn đề tương tự cũng xảy ra với các bảng tích lũy và sổ đăng ký kế toán ảo, chẳng hạn như được sử dụng để thu được doanh thu. Ở đó hệ thống thêm các thông số “Bắt đầu kỳ” và “Cuối kỳ”.
Vì vậy, trong trường hợp các truy vấn có độ phức tạp tăng lên một chút, việc tắt tính khả dụng và sử dụng “thời gian tiêu chuẩn” là điều hợp lý.