Այս օրինակում բերված են 4 ֆայլերը, որոնք ամբողջությամբ նկարագրում են փաստաթուղթը 8X համակարգում։

UsrAccs.as ֆայլի պարունակություն։ Ստեղծվում է 4X գործիքներով։ Պետք է գրված լինի ANSI կոդավորմամբ։

DOCUMENT {
  NAME = UsrAccs;
  CAPTION = "Օգտագործողի հաշիվներ";
  ECAPTION = "User's accounts";
  ALLOWSTOREINSERVICE = 1;
  PROCESSINGMODE = 8; '#DocProcessingMode2

  PAGE { CAPTION = "Ընդհանուր"; ECAPTION = "General";
    REKVIZIT {NAME = USERNAME; CAPTION = "Օգտագործողի անուն"; ECAPTION="User's name";         TYPE = C(20); };
    REKVIZIT {NAME = BRANCH;   CAPTION = "Մասնաճյուղ";        ECAPTION="Registration branch"; TYPE = C(10); };

    GRID {NAME = Accounts; CAPTION = "Հաշիվներ"; ECAPTION = "Accounts"; WIDTH = 13000; HEIGHT = 3000;
      COLUMN {NAME = ACCTYPE; CAPTION = "Տիպ"; ECAPTION = "Type"; TYPE = C(10);  };
      COLUMN {NAME = CODE;    CAPTION = "Կոդ"; ECAPTION = "Code"; TYPE = NP(16); };
    };

    MEMO {NAME = COMMENT; CAPTION = "Մեկնաբանություն"; ECAPTION = "Comment"; WIDTH = 7000; HEIGHT = 2300; };
  };
};

UsrAccs.CodeGen.tt ֆայլի պարունակություն։ Ստեղծվում է ձեռքով 8X սերվիսի պրոյեկտում կամ ընդլայնման պրոյեկտում։

<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="ArmSoft.AS8X.CodeGen" #>
<#@ import namespace="ArmSoft.AS8X.CodeGen" #>
<#@ output extension=".cs" encoding="utf-8" #>
<#
    string code = DocParser.Parse(
        configFilePath: this.Host.ResolvePath(@"..\CodeGen.xml"), 
        filename: @"\Users\UsrAccs.as", 
        docType: "UsrAccs", 
        namespaceName: "Bank");
#>
<#= code #>

UsrAccs.CodeGen.cs ֆայլի պարունակություն։ Ստեղծվում է ավտոմատ .tt ֆայլի վրա Run Custom Tool գործողությամբ։

// Ավտոմատ գեներացված է՝ սկիզբ
using ArmSoft.AS8X.Core;
using ArmSoft.AS8X.Core.Document;
using ArmSoft.AS8X.Common.Extensions;

namespace ArmSoft.AS8X.Bank
{
    [Document("UsrAccs")]
    public partial class UsrAccs : Document
    {
        public partial class AccountsRow : GridRow
        {
            /// <summary>
            /// Տիպ
            /// </summary>
            public string ACCTYPE
            {
                get { return (string)this[nameof(this.ACCTYPE)]; }
                set { this[nameof(this.ACCTYPE)] = value; }
            }

            /// <summary>
            /// Կոդ
            /// </summary>
            public decimal CODE
            {
                get { return (decimal)this[nameof(this.CODE)]; }
                set { this[nameof(this.CODE)] = value; }
            }

        }

        /// <summary>
        /// Հաշիվներ
        /// </summary>
        public Grid<AccountsRow> Accounts
        {
            get
            {
                return (Grid<AccountsRow>)this.Grids[nameof(this.Accounts)];
            }
        }


        // Fields
        /// <summary>
        /// Օգտագործողի անուն
        /// </summary>
        public string USERNAME
        {
            get { return (string)this[nameof(this.USERNAME)]; }
            set { this[nameof(this.USERNAME)] = value; }
        }

        /// <summary>
        /// Մասնաճյուղ
        /// </summary>
        public string BRANCH
        {
            get { return (string)this[nameof(this.BRANCH)]; }
            set { this[nameof(this.BRANCH)] = value; }
        }

        // Memos
        /// <summary>
        /// Մեկնաբանություն
        /// </summary>
        public string COMMENT
        {
            get { return GetMemo(nameof(this.COMMENT)); }
            set { SetMemo(nameof(this.COMMENT), value); }
        }
    }
}
// Ավտոմատ գեներացված է՝ վերջ

UsrAccs.cs ֆայլի պարունակություն։ Ստեղծվում է ձեռքով 8X սերվիսի պրոյեկտում կամ ընդլայնման պրոյեկտում։

using System;

namespace ArmSoft.AS8X.Bank;

public partial class UsrAccs
{
    private readonly IParametersService parametersService;

    public UserAccounts(IParametersService parameterService, IServiceProvider serviceProvider) : base(serviceProvider)
    {
        this.parametersService = parameterService;

    }

    public override Task Validate(ValidateEventArgs args)
    {
        if (this.Accounts.RowCount == 0)
        {
            throw new Exception("Օգտագործողին հաշիվներ կցված չեն".ToArmenianANSI());
        }
        return Task.CompletedTask;
    }

    public override async Task Action(ActionEventArgs args)
    {
        if (string.IsNullOrWhiteSpace(this.BRANCH))
        {
            this.BRANCH = await this.parametersService.DefaultBranch();
        }
    }

    public override Task Folders(FoldersEventArgs args)
    {
        var folderElement = new FolderElement()
        {
            FolderId = "UserAccounts",
            Status = FolderStatus.Edit,
            Key = this.USERNAME,
            Comment = this.Description.ArmenianCaption,
            EComment = this.Description.EnglishCaption,
            Spec = this.USERNAME.LeftAlign(20) + this.BRANCH.LeftAlign(50)
        };
        this.DocumentService.StoreInFolder(this, folderElement);
        return Task.CompletedTask;
    }

    public override async Task Delete(DeleteEventArgs args)
    {
        bool isDeletionAllowed = await this.parametersService.GetBooleanValue("DELETEALIENDOCS");
        if (!isDeletionAllowed)
        {
            throw new Exception("Փաստաթուղթը հեռացնելու իրավասություն չունեք".ToArmenianANSI());
        }
    }
}