Расширение Business Central API: как подключить триггер вставки к пользовательской странице API? - PullRequest
0 голосов
/ 19 июня 2020

Я создал новый тип страницы API, который использует источник заголовка счета-фактуры. Я хочу получить только что вставленную запись и обновить ее значение. После этого отобразите эти значения в предупреждении. В настоящее время у меня есть пустая страница после создания нового счета-фактуры.

Это мой код:

page 50105 "Custom Invoice API" {
    PageType = API;
    Caption = 'Custom Sales Invoice Header API';
    APIPublisher = 'xy';
    APIVersion = 'beta';
    APIGroup = 'customsalesinvoiceheader';
    EntityName = 'salesInvoiceHeader';
    EntitySetName = 'salesInvoiceHeaders';
    SourceTable = "Sales Invoice Header";
    DelayedInsert = true;


    layout
    {
        area(Content)
        {
            repeater(GroupName)
            {
                field(id; "No.")
                {
                    Caption = 'No.';
                }
                field(name; "Sell-to Customer Name")
                {
                    Caption = 'Customer Name';
                }
                field(address; "Sell-to Address")
                {
                    Caption = 'Sell-to Adress';
                }
                field(shipdate; "Shipment Date")
                {
                    Caption = 'Shipment Date';
                }
            }
        }
    }
    trigger OnInsertRecord(BelowxRec: Boolean): Boolean
    begin
        Insert(true);
        Message(readInvoice());
        updateInvoice();
        exit(true);
    end;

    procedure readInvoice(): Text
    var
        currentInvoice: Record "Sales Invoice Header";
    begin
        exit(currentInvoice."No." + ' ' + currentInvoice."Sell-to Customer Name" + ' ' + currentInvoice."Sell-to Address" + ' ' + Format(currentInvoice."Shipment Date"));
    end;

    procedure updateInvoice()
    var
        currentInvoice: Record "Sales Invoice Header";
    begin
        currentInvoice."Shipment Date" := DMY2Date(19, 6, 2020);
    end; 
}

После этого я создал новую веб-службу внутри своего запроса типа B C который нацелен на счет-фактуру, но в почтальоне я получаю 401, независимо от того, использую ли я базовую c аутентификацию с моим пользователем-администратором или ключ приложения веб-службы, который я сгенерировал для моего пользователя-администратора.

Как подключить триггер вставки действие с моей пользовательской страницей API?

1 Ответ

0 голосов
/ 21 июня 2020

В вашей стратегии есть несколько ошибок, я перечислю их здесь:

  • Вам не нужно ставить Insert (true); внутри OnInsertRecord, когда выполнение находится внутри этого триггера, планируется действие триггера, и при повторной вставке записи будет выдана ошибка.
  • Вы не можете использовать пользовательский интерфейс, например Message (readInvoice ()); внутри Api или веб-службы сообщение вернет ошибку обратного вызова. Вам нужен механизм, чтобы получить ответ от сервера и показать его на стороне клиента (во внешнем интерфейсе). t обязательно нужно создавать собственные серверные функции. Рекомендую взглянуть на эти статьи: https://www.olisterr.tech/2019/05/creating-apis-in-business-central-1.html https://www.olisterr.tech/2019/09/understanding-apis-in-business-central.html

Насчет ошибки 401 во многом зависит от того, что если вы используете publi c облако B C (размещено на MS) или локальную конфигурацию / OnPrem.

...