×

    By submitting this form, you are agreeing to Folio3's Privacy Policy and Terms of Service.

    Get a free Consultation

    Every object in Business Central is given various permissions. Assignable Permissions refers to permission sets that may be applied to objects via the user interface (UI), while Non-Assignable Permissions refers to permission sets that cannot be applied via the UI.

    Permissions on Object

    Each object has one of the four sorts of permissions listed below:

    Read R for direct access and r for Indirect access
    Write W for direct access and w for Indirect access
    Modify M for direct access and m for Indirect access
    Delete D for direct access and d for Indirect access

    You can only read an object if you have given it read-only rights. You cannot add to or change the data of that object if you don’t have write access.

    But what if we only have read permission on the data and want to insert or modify it? Here, I’ll explain how to add or modify a record when Business Central disallows direct permissions.

    Let’s take an example of posted sales shipment

    Modify Posted Sales Shipment Lines

    For instance, we modify some fields of posted sales shipping lines based on certain criteria using the AL code. However we can’t modify the fields using table.insert() or table.modify() directly. Because Business Central does not permit write permissions on the “Sales Shipment Line” table.

    We will create a code unit and provide permission to the table in order to allow permissions on it. In this code block, use the onrun() trigger to insert or modify the record.

    codeunit 50120 "F3 Shipment Line - Edit"
    {
        Permissions = TableData "Sales Shipment Line" = rimd; //Full Indirect access
        TableNo = "Sales Shipment Line";
        trigger OnRun()
        begin
            SalesShipmentLine := Rec;
            SalesShipmentLine.Modify();
            Rec := SalesShipmentLine;
        end;
        var
            SalesShipmentLine: Record "Sales Shipment Line"; }