Հաշվառման ընդլայնման ձեռնարկ
Բովանդակություն
Ներածություն
Գոյություն ունեցող հաշվառումների մշակման գործընթացում լրացուցիչ ստուգումներ իրականացնելու և այլ սեփական տրամաբանություն ավելացնելու համար նկարագրվում է հաշվառման ընդլայնում։
Հաշվառման ընդլայնումը իրանից ներկայացնում է վիրտուալ մեթոդների բազմություն, որոնք կանչվում են հաշվառման հիմնական իրադարձություններից առաջ և հետո։
8X համակարգում հաշվառման ընդլայնում նկարագրելու համար հարկավոր է ունենալ
- .as ընդլայնմամբ ֆայլ սկրիպտերում ACCEXTENDER նկարագրությամբ, որը պարունակում է մետատվյալներ ընդլայնման մասին,
- .cs ընդլայնմամբ ֆայլ, որը պարունակում է սերվերում աշխատող տրամաբանությունը։
.as ֆայլի ստեղծում
ACCEXTENDER {
NAME = 01;
CAPTION = "Սինթետիկ հաշիվների հաշվառման ընդլայնում";
ECAPTION = "Synthetic accounts' accounting's extender";
CSSOURCE = SyntAccountingExtender.cs;
}
Ստեղծել .as ընդլայնմամբ ֆայլ ACCEXTENDER
նկարագրությամբ, որը պարունակում է
NAME
- Ընդլայնվող հաշվառման ներքին անունը (կոդը)։CAPTION
- Ընդլայնման հայերեն անվանումը ANSI կոդավորմամբ։ECAPTION
- Ընդլայնման անգլերեն անվանումը։CSSOURCE
- Ընդլայնող C# ֆայլի հարաբերական ճանապարհը .as ֆայլի նկատմամբ։
Օրինակներ՝
- Եթե extend.as և extend.cs ֆայլերը գտնվում են նույն թղթապանակում, ապա կգրվի
CSSOURCE = "extend.cs";
։ - Եթե extend.as գտվում է “C:\WorkingDir\Scripts\App\extend.as” հասցեում, իսկ extend.cs-ը՝ “C:\WorkingDir\SubFolder1\SubFolder2\extend.as” հասցեում, ապա
CSSOURCE = "..\..\SubFolder1\SubFolder2\extend.cs";
։ - Կամ կլինի գրել ամբողջական ճանապարհը, ինչը խրախուսելի չէ
CSSOURCE = "C:\WoringDir\SubFolder1\SubFolder2\extend.cs";
.cs ֆայլի ստեղծում
- Ստեղծել դաս, որը ունի
AccountingExtender
ատրիբուտը և ժառանգում է AccountingExtender դասը:
[AccountingExtender]
public class SyntAccountingExtender : AccountingExtender
- Ձևավորել ընդլայնող դասի կոնստրուկտորը՝ ինյեկցիա անելով աշխատանքի համար անհրաժեշտ սերվիսները։
private readonly EnterpriseParametersService parametersService;
private readonly IDBService dbService;
public SyntAccountingExtender(EnterpriseParametersService parametersService, IDBService dbService)
{
this.parametersService = parametersService;
this.dbService = dbService;
}
- OnDelete մեթոդով հաշվառումը հեռացնելուց առաջ լրացուցիչ տրամաբանություն ավելացնելու համար անհրաժեշտ է override անել PreOnDelete մեթոդը։
Մեթոդը կանչվում է միջուկի կողմից։
Օրինակում ստուգվում է արդյոք թույլատրված է հաշվառման հեռացումը՝ կախված պարամետրից։ Թույլատրված չլինելու դեպքում առաջացնում է սխալ։
public override async Task PreOnDelete(Core.Accounting.Accounting sender, OnDeleteEventArgs onDeleteEventArgs)
{
if (!await this.parametersService.GetBooleanValue("CanDeleteAccTrans"))
{
throw new RESTException("Հաշվապահական ձևակերպումը հեռացնելու իրավասություն չունեք".ToArmenianANSI());
}
}
- OnDelete մեթոդով հաշվառումը հեռացնելուց հետո լրացուցիչ տրամաբանություն ավելացնելու համար անհրաժեշտ է override անել PostOnDelete մեթոդը։
Մեթոդը կանչվում է միջուկի կողմից։
Օրինակում հեռացվում են հաշվառման հաշվի մնացորդները HIREST2 աղյուսակից։
public override async Task PostOnDelete(Core.Accounting.Accounting sender, OnDeleteEventArgs onDeleteEventArgs)
{
using var cmd = this.dbService.CreateCommand();
cmd.CommandText = "DELETE FROM HIREST2 WHERE fOBJECT = ?ObjectISN";
cmd.Parameters.Add("@ObjectISN", SqlDbType.Int).Value = onDeleteEventArgs.Fact.ObjectISN;
await cmd.ExecuteNonQueryAsync();
}
Ֆայլերի ներմուծում
.as և .cs ընդլայնմամբ ֆայլերը պատրաստ լինելուն պես անհրաժեշտ է SYSCON-ով համապատասխան .as ֆայլը ներմուծել համակարգ, ինչի արդյունքում .cs ֆայլը նույնպես կներմուծվի։