Hướng dẫn sử dụng phần mềm dynamic microsoft kế toán năm 2024

Bạn có thể sử dụng Microsoft Dynamics 365 trên đám mây hoặc trong môi trường đám mây kết hợp. Thật đơn giản để quản lý và triển khai theo bất kỳ cách nào bạn cần dựa trên ngân sách và cơ sở hạ tầng của bạn.

Vì Microsoft Dynamics 365 dựa trên đám mây nên nó lý tưởng cho các công ty có chính sách làm việc linh hoạt ở mọi vị trí không gian và thời gian. Nhân viên có thể dễ dàng truy cập ứng dụng Microsoft Dynamics 365 của họ từ Outlook, trình duyệt web hoặc bất kỳ thiết bị di động nào.

2. Tích hợp hoàn toàn với các sản phẩm của Microsoft

Microsoft Dynamics 365 dễ dàng tích hợp với các sản phẩm khác của Microsoft, bao gồm cả bộ Office 365 đầy đủ. Những tích hợp này cho phép các công ty chuyển từ Dynamics 365 sang Outlook để giao tiếp, sang Power BI để phân tích dữ liệu hoặc sang SharePoint để làm tài liệu.

Làm việc và di chuyển giữa các ứng dụng càng dễ dàng, nhân viên càng ít phải dành thời gian để chuyển dữ liệu giữa các ứng dụng và mất công tìm hiểu các nền tảng mới.

3. Trải nghiệm bán hàng nhanh chóng

Microsoft Dynamics 365 cung cấp cho các nhóm bán hàng quyền truy cập vào vô số dữ liệu khách hàng chuyên sâu – cho dù họ đang làm việc tại cửa hàng hay tại văn phòng.

Nhóm bán hàng có thể tạo phản hồi nhanh và cung cấp thông tin trên hệ thống ngay tức thì cho khách hàng, mà không cần phải qua bộ phận trung gian. Và người quản lý kinh doanh có được bức tranh toàn cảnh về hành trình của mỗi khách hàng tiềm năng, xem xét và đưa ra các quyết định đứng đắn để thúc đẩy trải nghiệm bán hàng tốt hơn.

4. Có thể tùy chỉnh

Microsoft Dynamics 365 có nhiều mô-đun và công cụ quy trình làm việc tích hợp sẵn mà bạn có thể sử dụng để tự động hóa các tác vụ trong bán hàng, tiếp thị, dịch vụ khách hàng, dịch vụ hiện trường và dịch vụ dự án.

Nếu các công cụ được tạo sẵn không phù hợp với chính xác những gì bạn cần, bạn không cần phải lo lắng. Microsoft Dynamics 365 cũng cho phép bạn sửa đổi quy trình làm việc để đáp ứng nhu cầu của bạn. Sử dụng các công cụ tùy chỉnh để xác định các trường bổ sung và các đối tượng mới trong hệ thống.

Đó không phải là tất cả những gì bạn có thể tùy chỉnh. Microsoft Dynamics 365 có kiến ​​trúc linh hoạt, các tùy chọn triển khai và các cấp giá để bạn có thể điều chỉnh nền tảng cho phù hợp với ngân sách, quy mô nhóm và KPI của mình.

Giả sử rằng bạn đặt áp dụng cho Oldest là Ứng dụng phương pháp cho một nhà cung cấp trong Microsoft Dynamics NAV 2009. Và bạn gửi một tín dụng ghi và hai đơn bằng cách sử dụng một Nhật ký. Là kết quả, Hệ thống áp dụng ghi tín dụng cho cả đơn. Sau đó, bạn unapply tất cả tài liệu. Trong trường hợp này, khi bạn chạy hàm ngược lại giao dịch tín dụng ghi dòng, Hệ thống tạo mục sổ kế toán tổng hợp không cần thiết.

Sự cố này xảy ra trong các sản phẩm sau:

  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV 2009 R2

Giải pháp

Thông tin về cập nhật nóng

Microsoft hiện đã cung cấp bản cập nhật nóng được hỗ trợ. Tuy nhiên, nó chỉ được dùng để khắc phục sự cố được mô tả trong bài viết này. Áp dụng cho các hệ thống đang gặp sự cố cụ thể này. Hotfix này có thể được kiểm tra thêm. Vì vậy, nếu bạn không bị ảnh hưởng bởi sự cố này, chúng tôi khuyến nghị bạn đợi cho gói dịch vụ tiếp theo của Microsoft Dynamics NAV 2009 hoặc phiên bản Microsoft Dynamics NAV tiếp theo có chứa hotfix này.

Lưu ý Trong trường hợp đặc biệt, chi phí thường phát sinh để hỗ trợ cuộc gọi có thể được hủy bỏ nếu chuyên viên hỗ trợ kỹ thuật cho Microsoft Dynamics và sản phẩm liên quan xác định rằng một Cập Nhật cụ thể sẽ giải quyết vấn đề của bạn. Chi phí hỗ trợ thông thường sẽ áp dụng cho các vấn đề không phù hợp với bản Cập Nhật cụ thể trong câu hỏi và câu hỏi hỗ trợ bổ sung.

Thông tin cài đặt

Microsoft cung cấp mô hình lập trình để minh hoạ, không bảo hành hoặc rõ ràng hay ngụ ý. Điều này bao gồm, nhưng không giới hạn ở các bảo đảm cho một mục đích cụ thể hoặc sự. Bài viết này giả định rằng bạn đã quen với ngôn ngữ lập trình đang được giải thích và các công cụ được sử dụng để tạo và quy trình gỡ lỗi. Các kỹ sư hỗ trợ Microsoft có thể giúp giải thích các chức năng của một quy trình cụ thể. Tuy nhiên, họ sẽ không sửa đổi các ví dụ để cung cấp thêm chức năng hoặc xây dựng quy trình nhằm đáp ứng các yêu cầu cụ thể của bạn.

Lưu ý Trước khi cài đặt hotfix này, xác minh rằng tất cả người dùng máy khách Microsoft Dynamics NAV đã đăng xuất hệ thống. Điều này bao gồm dịch vụ Microsoft Dynamics NAV ứng dụng máy chủ (NAS). Bạn nên khách hàng chỉ người được đăng nhập khi bạn áp dụng hotfix này.

Để áp dụng hotfix này, bạn phải có giấy phép nhà phát triển.

Chúng tôi khuyên bạn nên tài khoản người dùng trong cửa sổ thông tin đăng nhập Windows hoặc trong cửa sổ thông tin đăng nhập cơ sở dữ liệu được gán vai trò "Siêu" của bạn. Nếu tài khoản người dùng không thể gán vai trò "SUPER" ID, bạn phải xác minh rằng tài khoản người dùng có các quyền sau đây:

  • Thay đổi quyền cho các đối tượng mà bạn sẽ thay đổi.
  • Quyền thực thi các đối tượng hệ thống đối tượng ID 5210 và hệ thống đối tượng ID 9015 đối tượng.

Lưu ý Bạn không cần phải có quyền để lưu trữ dữ liệu nếu bạn phải tiến hành sửa chữa dữ liệu.

Thay đổi mã

Lưu ý Luôn kiểm tra mã khắc phục trong một môi trường được kiểm soát trước khi bạn áp dụng bản vá để sản xuất máy tính của bạn.

Để khắc phục sự cố này, hãy làm theo các bước sau:

  1. Thay đổi mã trong hàm InsertReversalEntry đảo ngược mục bảng (179) như sau: Hiện có mã 1 ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 0 Thay thế mã 1 ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 1 Hiện có mã 2 ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 2 Thay thế mã 2 ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 3
  2. Thay đổi mã trong hàm CheckDtldCustLedgEntry đảo ngược mục bảng (179) như sau: Mã hiện tại ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 4 Thay thế mã ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 5
  3. Thay đổi mã trong hàm CheckDtldVendLedgEntry đảo ngược mục bảng (179) như sau: Mã hiện tại ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 6 ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 7 Thay thế mã ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 6 ...CLEAR(DtldCustLedgEntry);
          DtldCustLedgEntry.SETCURRENTKEY("Transaction No.","Customer No.","Entry Type");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Transaction No.",CustLedgEntry."Transaction No.");  
          DtldCustLedgEntry.SETRANGE(DtldCustLedgEntry."Customer No.",CustLedgEntry."Customer No.");  
          DtldCustLedgEntry.SETFILTER(  
            DtldCustLedgEntry."Entry Type",'<>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");  
    
    // Add the following line.
          IF NOT DtldCustLedgEntry.ISEMPTY THEN  
    
    // End of the added line.
            IF RevType = RevType::Register THEN  
              ERROR(Text012,Number);  
    
    // Add the following line.
          CheckDtldCustLedgEntry(CustLedgEntry);  
    
    // End of the added line.
        UNTIL CustLedgEntry.NEXT = 0;  
      IF VendLedgEntry.FIND('-') THEN  
        REPEAT  
          CLEAR(ReversalEntry);  
    
    ... 9

Điều kiện tiên quyết

Bạn phải có Microsoft Dynamics NAV 2009 cài đặt để áp dụng hotfix này.

Thông tin về việc loại bỏ

Bạn không thể xoá hotfix này.

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".

Lưu ý Đây là một bài viết "XUẤT BẢN NHANH" được tạo trực tiếp từ trung tâm hỗ trợ của Microsoft. Thông tin này được cung cấp-trả lời cho các vấn đề mới xuất hiện. Vì nhanh chóng có sẵn, các tài liệu có thể bao gồm lỗi và có thể được sửa đổi bất kỳ lúc nào mà không cần thông báo. Xem Điều khoản sử dụngđể xem xét khác.

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.