Access Property

Version: Available or changed with runtime version 4.0.

Sets the object accessibility level, which controls whether the object can be used from other code in your module or other modules.

Applies to

  • Codeunit
  • Query
  • Table
  • Table Field
  • Enum Type
  • Interface
  • Permission Set

Property Value

Value Description
Public The object can be accessed by any other code in the same module and in other modules that references it.
Internal The object can be accessed only by code in the same module, but not from another module.

Table field level

For table fields there are two additional settings for Access and you have the following settings available:

Access modifier Level of accessibility
Local The field can be accessed only by code in the same table or table extension where the field is defined.
Protected The field can be accessed only by code in the same table or table extensions of that table.
Public The object can be accessed by any other code in the same module and in other modules that references it.
Internal The object can be accessed only by code in the same module, but not from another module.

Syntax

Tables

table 50111 MyTable
{
    DataClassification = CustomerContent;
    Access = Internal;
    ...
    

Table fields

table 50111 MyTable
{
    DataClassification = CustomerContent;
        
    fields
    {
        field(1;MyField; Integer)
        {
            DataClassification = CustomerContent;
            Access = Protected;
    ...            

Queries

query 50114 MyQuery
{
    QueryType = Normal;
    Access = Internal;
    ...

Codeunits

codeunit 50113 MyCodeunit
{
    Access = Internal;
    ...

Remarks

Important

This property is only taken into consideration at compile time. For example, at compile time, a table with Access = Internal cannot be used from other modules that do not have access to the internals of the module where the table is defined, but at runtime, any module can access the table by using reflection-based mechanisms such as RecordRef, or TransferFields. And the OnRun trigger can be run on internal codeunits by using Codeunit.Run. Setting the object accessibility level as Access = Internal; cannot be used as a security boundary. Also see JSON Files.

See Also

Properties
Extensible Property
Protected Variables