Բովանդակություն

Ներածություն

Տպելու ձևանմուշների ընդլայնումը իրականացվում է ծրագրավորման միջոցով՝ օգտագորելով C# լեզուն: Օգտագործվում է սերվերային մոդուլ ընդլայնումը համակարգ ներմուծելու համար։ Անհրաժեշտ է ստեղծել երկու ֆայլ՝

  1. պարամետրերի հաշվարկի ծրագրերը պարունակող C# ֆայլը,
  2. .as ընդլայնումով սերվերային մոդուլի նկարագրող ֆայլը, որը օգտագործվում է C# ֆայլը ներմուծելիս։

Ստեղծված ֆայլերը պետք է ներմուծել համակարգ, որից հետո կապակցել տպվող ձևի ձևանմուշին։ Ընդլայնվող տպելու ձևանմուշում բոլոր լրացուցիչ պարամետրերը պետք է ծրագրավորված լինեն մեկ C# դասի միջոցով։

Չնայած որ, մեկ ֆայլը կարող է պարունակել բազմաթիվ դասեր, տպելու ձևանմուշին հնարավոր է կապակցել միայն մեկ դաս։

Տպելու ձևանմուշին ընդլայնման բոլոր հատկությունները տրված են տեխնիկական նկարագրության էջում։

C# ֆայլի նկարագրություն

Տպելու ձևանմուշի ընդլայնման դասը պետք է ունենա [TemplateSubstitutionExtender] ատրիբուտը և իրագործի ITemplateSubstitutionExtender ինտերֆեյսը։

[TemplateSubstitutionExtender]
public class AccStateAdr_Extander : ITemplateSubstitutionExtender 

Նոր դասում կարելի է կատարել ինյեկցիա սերվերային API-ներին հասանելություն ստանալու համար։

[TemplateSubstitutionExtender]
public class AccStateAdr_Extander : ITemplateSubstitutionExtender 
{
    private readonly UserProxyService proxyService;
     
    public AccStateAdr_Extander(UserProxyService proxyService)
    {
        this.proxyService = proxyService;
    }

    ...
}

Ավելացվող տպելու պարամետրերի հաշվարկը իրականացվում է Calculate ֆունկցիայում։
Այն որպես պարամետր ստանում է TemplateSubstitutionExtenderArgs տիպի օբյեկտ, որի միջոցով հնարավոր է հասանելիություն ստանալ տպվող փաստաթղթին և հաշվարկված տպվող կոդերի բազմությանը։

Ավելացվող նոր պարամետրերի արժեքները պետք է լինեն ANSI կոդավորմամբ։ Տե՛ս հատուկ դեպքերը։

public Task Calculate(TemplateSubstitutionExtenderArgs args)
{
    //Վերադարձնում է ատոմար տպելու պարամետրերի ցուցակը
    var atomics = args.Substitution.AtomicSubstitutions;

    //Վերադարձնում է այն փաստաթուղթը, որի վրայից ձևավորվում է տպվող ձևը
    var agrDoc = args.Document;

    if (agrDoc["CURRENCY"].ToString() == "001" || agrDoc["CURRENCY"].ToString() == "049")
    {
        atomics.Add("CurType", "Ազատ փոխարկելի արտարժույթ".ToArmenianANSI());
    }
    else
    {
        atomics.Add("CurType", "");
    }
    return Task.CompletedTask;
}

Պարամետրի հաշվարկը և ավելացումը հնարավոր է կատարել նաև UserProxyServiceTryAddAtomic կամ TryAddAtomicAsync մեթոդներով։ Այս դեպքում մեկ պարամետրի հաշվարկի ընթացքում առաջացած սխալի դեպքում ծրագրի աշխատանքը չի ընդհատվի՝ շարունակելով մնացած բոլոր պարամետրերի հաշվարկը։

[TemplateSubstitutionExtender]
public class AccStatements : ITemplateSubstitutionExtender
{
    private readonly UserProxyService proxyService;
    public AccStatements(UserProxyService proxyService)
    {
        this.proxyService = proxyService;
    }
    public async Task Calculate(TemplateSubstitutionExtenderArgs args)
    {
        var accountDoc = (Account)args.Document;
        await proxyService.TryAddAtomicAsync("pass", async () =>
        {
            var clientDoc = await this.proxyService.LoadClientDescByCode(accountDoc.CLICOD);
            return clientDoc.PasCode;
        }, args);
    }
}

Ընդլայնման կապակցում տպելու ձևանմուշին

Ընդլայնման ֆայլերը ներմուծելուց հետո կատարվում է կապակցում տպելու ձևանմուշի հետ։ Այդ նպատակով անհրաժեշտ է լրացնել համապատասխան դաշտերը “Տպելու ձևանմուշի օգտ.նկարագրված պարամետրեր” փաստաթղթի “Տպվող ձևանմուշի ընդլայնումը սերվիսում” էջում։

Դաշտի անվանում Նկարագրություն
Ընդլայնման նկարագրության անվանում Համապատասխանում է .as ֆայլում սերվերային մոդուլի Name հատկության արժեքին:
Դասի անուն նկարգրությունում C# Ֆայլում պարունակվող դասի անվանումը, որտեղ իրագործված է լրացուցիչ պարամետրերի հաշվարկը:

Երկու դաշտերը հնարավոր է լրացնել ընտրելով համապատասխան արժեքը ցուցակից՝ սեղմելով դաշտի կողքի հապապատասխան կոճակը։

Ընդլայնման կապակցում ձևանմուշին

Օրինակներ

Տե՛ս հաշվի քաղվածքի ընդլայնման օրինակ։

Հատուկ դեպքեր

ՀԾ-Բանկում հաշվի և քարտի քաղվածքում նոր պարամետրեր ավելացնելուց արժեքը պետք է լինի Unicode կոդավորմամբ, երբ ձևանմուշը պետք է արտահանվի Unicode։