Composite Layout trên Business Central 29, một bộ nhận diện cho mọi chứng từ
Dựng Theme, Header/Footer dùng chung bằng Composite Layout trên Business Central 29: báo giá, xác nhận đơn hàng cùng logo, màu, ngân hàng, đổi một chỗ là đủ.
Composite Layout là cách Business Central 29 tách một mẫu in Word thành ba phần: Body chứa nội dung riêng của từng report, Theme chứa màu, font, kiểu bảng, và Header/Footer chứa logo, thông tin công ty, ngân hàng. BC ghép ba phần lúc in. Theme và Header/Footer gán một lần cho cả công ty, không viết dòng AL nào.

Ví dụ trong bài là một công ty nội thất văn phòng giả lập tên Minh Long. Mọi bước đã chạy thật trên Business Central online 29.0 tháng 10/2026, với báo giá (report 1304) và xác nhận đơn hàng (report 1305).
Composite Layout giải việc gì#
Mẫu in chuẩn có tiêu đề tiếng Anh, thiếu mã số thuế, mỗi phiếu một kiểu. Trước bản 29, mỗi file Word mang chân trang riêng: đổi tài khoản ngân hàng là mở và upload lại từng file, bộ chứng từ 15 mẫu là 15 lần sửa.
Với Composite Layout, thông tin công ty trên Header/Footer lấy thẳng từ trang Company Information. Đổi ngân hàng hay logo ở đó thì mọi phiếu in ra theo thông tin mới.

Điều kiện trước khi làm#
- Business Central online bản 29.0 trở lên.
Feature: New Document Report Experienceở trạng tháiEnabledtrên trangFeature Management. Tính năng tắt thì trườngSubtypevà menuComposite layoutkhông hiện.- Quyền sửa
Report LayoutsvàCompany Information. - Word desktop hoặc Word for the web. Add-in Business Central cho Word giúp chèn field nhanh hơn nhưng không bắt buộc.

Bước 1. Điền Company Information#
Header/Footer đọc thông tin công ty từ trang này nên phải điền trước khi in thử:
| Thông tin in ra | Trường trên Company Information |
|---|---|
| Tên công ty | Name |
| Địa chỉ | Address, Address 2, City, Post Code, Country/Region Code |
| Mã số thuế | VAT Registration No. |
| Hotline, email, website | Phone No., E-Mail, Home Page |
| Ngân hàng, số tài khoản | Bank Name, Bank Account No., Bank Branch No. |
| Logo | Picture (PNG nền trong suốt, ngang khoảng 1.000 điểm ảnh) |
Bước 2. Tạo Theme từ theme chuẩn của Microsoft#
Theme là file .dotx. Đừng dựng từ file trắng: theme chuẩn đã có sẵn các style BC dùng (BC Label, BC Number, BC Data Table, BC Totals Table).
- Mở
Manage themes and header-footer layouts(từReport Layouts>Composite layout), chọnDefault Theme, chọn...>Actions>Export. - Đổi tên file thành
ML-Theme.dotx. Nhấp chuột phải, chọnOpen. Nhấp đúp sẽ tạo tài liệu mới từ template chứ không mở chính template. - Gõ tạm một tiêu đề, một nhãn, chèn một bảng 4 x 4 đặt style
BC Data Tableđể thấy kết quả khi chỉnh. Xóa phần này trước khi lưu.

Đổi bảng màu#
Vào Design > Colors > Customize Colors..., nhập mã hex cho từng ô rồi lưu bộ màu với tên Minh Long:
| Màu | Mã hex | Ô trong bảng màu theme | Dùng cho |
|---|---|---|---|
| Chữ chính | #1F2A37 | Text/Background - Dark 1 | Chữ thường |
| Navy | #0B3B5C | Text/Background - Dark 2 | Tiêu đề phiếu, hàng tiêu đề bảng, dòng tổng |
| Nền nhạt | #F2F6FA | Light 2 và Accent 1 | Dòng xen kẽ của bảng |
| Đường kẻ | #D5DEE8 | Accent 2 | Đường kẻ mảnh |
| Teal | #0E7C86 | Accent 3 | Nhãn khối: KHÁCH HÀNG, THÔNG TIN ĐƠN HÀNG |
| Hổ phách | #E8A33D | Accent 4 | Điểm nhấn |

Đổi bảng màu xong nhìn chưa khác mấy, vì theme chuẩn dùng chủ yếu đen và xám. Thay đổi rõ nhất nằm ở bước gắn màu vào style.
Gắn màu vào style chữ và style bảng#
Title: cỡ 24, màuText 2(navy).Heading 2: màuAccent 3(teal), tickAll caps.Normal: để màuAutomatic, chữ tự chuyển trắng khi nằm trên nền tối.- Trên
Table Design, nhấp chuột phải vàoBC Data Table>Modify Table Style, chọnApply formatting to=Header row, nền navy, chữBackground 1(trắng). Làm tương tự choBC Totals TablevớiTotal row.
Luôn chọn màu trong hàng Theme Colors, không chọn Standard Colors hay More Colors. Màu theme đổi theo bảng màu, màu chọn cứng thì không.

Lưu file dạng .dotx, trên trang Manage themes and header-footer layouts chọn New theme, đặt tên, tải file lên. Muốn sửa tiếp thì dùng Replace, mọi phiếu nhận bản mới ở lần in sau.
Bước 3. Tạo Header/Footer có mã số thuế và ngân hàng#
Header/Footer là file .docx, chỉ dùng vùng đầu trang và chân trang. Thông tin công ty là các ô dữ liệu (content control) gắn với nhóm CompanyMetadata. Bài này sửa từ mẫu External Modern Logo: chọn dòng đó, Export, đổi tên thành ML-HeaderFooter.docx.
Ô dữ liệu chèn bằng XML Mapping Pane trên tab Developer (bật ở File > Options > Customize Ribbon). Ở ô Custom XML Part, chọn dòng:
urn:microsoft-dynamics-nav/reports/Tenant_Report_Defaults/2000000001/
Rồi mở cây NavWordReportXmlPart > BCReportInformation > CompanyMetadata.

Danh sách có hai dòng gần giống nhau. Chọn nhầm dòng businesscentral/internal/extended thì ô vẫn chèn được nhưng in ra trống.
Để chèn mã số thuế: gõ nhãn Mã số thuế: , nhấp chuột phải vào CompanyVATRegistrationNo, chọn Insert Content Control > Plain Text. Tên công ty làm tương tự với CompanyName. Logo đã có sẵn ô hình gắn CompanyLogo; trong Word ô này báo "The picture can't be displayed", khi in BC thay bằng logo thật.

Ở chân trang, xóa các ô ít dùng ở Việt Nam (Company Fax No., Company Registration No., Company Giro No.), gõ nhãn tiếng Việt Hotline:, Ngân hàng:, Số tài khoản:. Nhãn phải gõ tay: các field ...Caption trong CompanyMetadata trả về nhãn tiếng Anh. File có hai bộ header/footer, trang đầu và các trang sau, sửa cả hai nếu chứng từ có thể dài hơn một trang.

Lưu và đóng file trong Word rồi mới upload bằng New header/footer. File đang mở thì BC báo File upload failed.
Bước 4. Duyệt và gán cho cả công ty#
Theme và Header/Footer mới ở trạng thái Draft, chưa chọn được khi gán. Chọn từng dòng, ... > Set as Approved.
Sau đó mở Company Information, FastTab Reporting, chọn Default Theme và Default Header/Footer.

Bước 5. Tạo layout Body cho xác nhận đơn hàng#
Body chỉ chứa nội dung riêng của phiếu: tiêu đề, khách hàng, bảng dòng hàng, tổng tiền, chữ ký. Không đặt logo hay thông tin công ty ở đây.
Report Layouts>New,Report ID= 1305 (báo giá là 1304),Format Options=Word,Subtype=Body, bậtCreate a Blank Layout from the report object.Export layout, mở file, gõ tiêu đề XÁC NHẬN ĐƠN HÀNG và các nhãn tiếng Việt.- Trong
XML Mapping Pane, chọnurn:microsoft-dynamics-nav/reports/Standard_Sales_Order_Conf/1305/, mởNavWordReportXmlPart>Header, chènDocumentNo,CustomerAddress1,ShipToAddress2,Totals>TotalAmountIncludingVATnhư ở bước 3. Nhấp trái vào field trước rồi mới nhấp phải, nhấp phải ngay thì menu đôi khi không hiện.
Không bọc toàn bộ phần thân trong một repeater Header. BC tự lặp phần thân cho từng chứng từ, bọc thêm thì bản in chỉ còn header và footer.
Bảng dòng hàng lặp theo từng dòng#
Chèn bảng 2 hàng x 5 cột. Hàng 1 là tiêu đề cột. Hàng 2 chèn ItemNo_Line, Description_Line, Quantity_Line, UnitPrice, LineAmount_Line từ nhánh Header > Line. Bôi đen cả hàng 2, nhấp chuột phải vào node Line, chọn Insert Content Control > Repeating. Cuối cùng đặt style BC Data Table để bảng nhận màu của theme.

Muốn tên hàng dài tự xuống dòng mà bảng không tràn lề: Table Layout > AutoFit > Fixed Column Width, bỏ tick Specify height ở tab Row, và bỏ tick Allow row to break across pages. Phần này là tính năng của Word, dùng được cả ở các bản BC trước 29.

Ẩn dòng Giao hàng đến khi trùng địa chỉ khách#
Report 1305 có sẵn field ShowShippingAddress, bằng False khi địa chỉ giao trùng địa chỉ khách. Bôi đen dòng Giao hàng đến bằng chuột, trên tab Business Central của add-in chọn Hide If False, để What to hide = Field, chọn ShowShippingAddress, bấm Insert.

Report 1305 chỉ có ba field True/False: ShowShippingAddress, ShowWorkDescription, PricesIncludingVAT. Ẩn theo điều kiện khác thì cần dev thêm field qua report extension.
Lưu, đóng file, Replace layout, chạy thử với một đơn hàng.
Bước 6. Duyệt layout và cho layout cũ nghỉ#
Từ bản 29, trạng thái layout áp cả cho layout của Microsoft. Layout Retired không còn hiện trong danh sách chọn khi in, người dùng hết in nhầm mẫu cũ.
- Chọn layout Body,
Layout>Layout Status>Set as Approved, rồiSet as default. - Chọn layout cũ đang mặc định,
Layout Status>Set as Retired.

In từ Sales Order bằng Print/Send > Print Confirmation..., trang yêu cầu đã chọn sẵn layout mới.
Muốn một phiếu riêng dùng bộ nhận diện khác thì chọn layout Body đó, Composite layout > Set report theme and header-footer.
Đổi ngân hàng, đổi màu cho cả bộ chứng từ#
Đổi tài khoản nhận tiền: sửa Bank Name, Bank Branch No., Bank Account No. trên Company Information rồi in lại. Báo giá và xác nhận đơn hàng cùng nhận số mới.

Đổi màu: thay theme gán cho công ty. Hình dưới cùng phần thân, cùng header/footer, chỉ khác theme. Màu gõ cứng trong file Body (như thẻ tổng giá trị nền navy) thì không đổi theo.

Thêm báo giá dùng chung nhận diện: làm lại bước 5 với Report ID = 1304. Theme và Header/Footer lấy theo mặc định công ty.
BC chọn theme và header/footer theo thứ tự nào#
Theme và header/footer được chọn độc lập, cấp nào trống thì xuống cấp dưới:
| Cấp | Phạm vi | Gán ở đâu |
|---|---|---|
| 1 | Layout Body này, company hiện tại | Report Layouts > Composite layout > Set report theme and header-footer |
| 2 | Layout Body này, mọi company | Report defaults for theme and header-footer > Set for one layout |
| 3 | Mọi layout Body của report, company hiện tại | Report defaults for theme and header-footer > Set for one report |
| 4 | Mọi layout Body của report, mọi company | Như cấp 3, để trống Company Name |
| 5 | Mọi report, company hiện tại | Company Information > Reporting |
| 6 | Mọi report, mọi company | Report defaults for theme and header-footer > Add global default |
Bản 29 có ba theme (Default Theme, Calm, Playful) và 11 mẫu header/footer, nhưng chưa có layout Body cho báo giá, xác nhận đơn hàng hay hóa đơn. Phần Body vẫn phải tự làm.
Lỗi đã gặp khi làm#
Upload báo UnknownDataBinding, ví dụ:
/NavWordReportXmlPart/Header/SellToPhoneNo specifies a path that is not valid
File Word dùng field không có trong report: báo giá 1304 không có SellToPhoneNo như 1305. Xóa ô đó, xem danh sách field bằng Layout > Export report schema.
Replace file header/footer xong, phiếu in mất header/footer. Trên bản 29.0, Replace làm trống phần Header/Footer đã gán riêng cho layout, dù tài liệu Microsoft ghi là giữ nguyên. Vào Set report theme and header-footer chọn lại. Gán ở cấp công ty thì không bị.
Số tiền in 286,172,000. Format Region của khách hàng đang là en-US. Đặt vi-VN trên Customer Card, chứng từ tạo sau đó kế thừa.
Ngày in "20 October 2026". Field ngày dạng chữ in theo ngôn ngữ báo cáo, bản 29 chưa có tiếng Việt. Ghép từ DayNumber, MonthNumber, Year.
Bấm Insert trong Hide If False không phản hồi. Gặp với Word desktop bản 2026, add-in 0.1.173, khi vùng chọn có ô dữ liệu chèn bằng XML Mapping Pane. Chọn lại bằng chuột chỉ phần chữ cần ẩn, hoặc làm trên Word for the web.
Tài liệu gốc của Microsoft: Set up reusable themes and header and footer layouts và Design report layouts with the Business Central Word add-in.