Referência dataApi para páginas generativas

Quando geras uma página usando linguagem natural, a IA cria uma página React em TypeScript. A página gerada cobre tanto a experiência do utilizador front-end, selecionando os componentes certos e determinando o melhor layout, como a lógica de negócio correspondente.

Pode visualizar e editar o código gerado para refinar a saída. As operações de dados utilizam um dataApi objeto que expõe os seguintes métodos públicos:

Método Description
createRow Cria uma nova linha na tabela especificada.
deleteRow Apaga uma linha da tabela especificada.
getChoices Recupera as opções para o nome da coluna de escolha especificada.
queryTable Consulta uma tabela com as opções especificadas.
retrieveRow Recupera uma linha da tabela especificada com as opções especificadas.
setPageOutput Define o valor devolvido ao script de chamada quando um diálogo de página generativa fecha.
updateRow Atualiza uma linha existente na tabela especificada.

createRow método

Cria uma nova linha na tabela especificada.

Parâmetros

Defina valores para estes parâmetros exigidos.

Nome Tipo Description
tableName cadeia (de caracteres) O nome lógico da tabela para criar a linha em.
row objecto Os dados de linha a criar.

Devoluções

Uma promessa contendo o resultado da operação. Quando a operação tem sucesso, o resultado é o valor ID (Guid) da linha criada.

Example

// Define the row data to create new account
var row =
    {
        "name": "Sample Account",
        "creditonhold": false,
        "address1_latitude": 47.639583,
        "description": "This is the description of the sample account",
        "revenue": 5000000,
        "accountcategorycode": 1,
    }

try {
  // Create a new account record
  const newAccountId = await dataApi.createRow("account", row);
  console.log("Account created with ID: " + newAccountId);

  // Create a contact with a lookup to an account
  const newContactId = await dataApi.createRow('contact', {
    firstname: 'John',
    lastname: 'Doe',
    emailaddress1: 'john.doe@contoso.com',
    "parentcustomerid@odata.bind": `/account(${newAccountId})`, // Lookup format
  });
}
catch (error) {
  console.log(error.message);
}

deleteRow método

Apaga uma linha da tabela especificada.

Parâmetros

Defina valores para estes parâmetros exigidos.

Nome Tipo Description
tableName cadeia (de caracteres) O nome lógico da tabela para eliminar a linha.
rowId cadeia (de caracteres) O ID da fila a apagar.

Devoluções

Uma promessa contendo o resultado da operação. Quando a operação tem sucesso, não retorna valor.

Example

let rowId = "5531d753-95af-e711-a94e-000d3a11e605";
try {
  await dataApi.deleteRow("account", rowId);
}
catch (error) {
  console.log(error.message);
}

getChoices método

Recupera as opções para o nome da coluna de escolha especificada.

Parâmetros

Este parâmetro é obrigatório.

Nome Tipo Description
enumName string O nome da coluna de escolha no formato tablename-columnname

Devoluções

Uma promessa contendo o resultado da operação. Quando a operação tem sucesso, devolve um array das opções de escolha. Cada opção tem as seguintes propriedades:

Nome Tipo Description
label cadeia (de caracteres) O valor da etiqueta localizada da opção.
value número O valor numérico da opção.

Example

// Returns the accountcategorycode column options from the account table
const categoryChoices = await dataApi.getChoices("account-accountcategorycode");
// Returns the statecode column options from the contact table
const stateChoices = await dataApi.getChoices('contact-statecode');
// Returns the statuscode column options from the account table
const statusChoices = await dataApi.getChoices('account-statuscode');

queryTable método

Consulta a uma tabela usando as opções especificadas.

Parâmetros

Defina valores para estes parâmetros exigidos.

Nome Tipo Description
tableName string O nome lógico da tabela a consultar
query QueryTableOptions Opções para consultar a tabela

QueryTableOptions

Nome Tipo Description
select string[] (Recomendado) Array de nomes de colunas para recuperar.
filter string (Opcional) Expressão do filtro OData (por exemplo, statecode eq 0).
orderBy string (Opcional) OData expressão por ordem (por exemplo, name asc, createdon desc).
pageSize number (Opcional) Número máximo de linhas a devolver por página.

Devoluções

Uma promessa contendo o resultado da operação. Quando a operação tem sucesso, a promessa devolve um objeto contendo uma tabela de dados com os resultados com estas propriedades:

Nome Tipo Description
rows Object[] Array de dados de linhas
hasMoreRows boolean Indica se há mais linhas disponíveis
loadMoreRows function Função para carregar a página seguinte de resultados. (Opcional)

Example

// Query tasks with options
const result = await dataApi.queryTable("task", {
    select: ["activityid", "subject", "scheduledend", "prioritycode", "statecode"],
    orderBy: "scheduledend asc",
    pageSize: 50,
    filter: "statecode eq 0"
});

// Query accounts with pagination
const pagedAccounts = await dataApi.queryTable('account', {
  select: ['name'],
  pageSize: 50,
});

console.log(`Page 1: ${pagedAccounts.rows.length} accounts`);

if (pagedAccounts.hasMoreRows && pagedAccounts.loadMoreRows) {
  const nextPage = await pagedAccounts.loadMoreRows();
  console.log(`Page 2: ${nextPage.rows.length} accounts`);
}

Observações

Observação

Para melhor desempenho, limite sempre o número de colunas devolvidas usando a propriedade QueryTableOptionsselect .

retrieveRow método

Recupera uma linha da tabela especificada usando as opções especificadas.

Parâmetros

Defina valores para estes parâmetros exigidos.

Nome Tipo Description
tableName string O nome lógico da tabela a recuperar de
options RetrieveRowOptions Opções para recuperar a linha

RetrieveRowOptions

Nome Tipo Description
id string O ID (Guid) da linha a recuperar
select string[] (Recomendado) Array de nomes de colunas para recuperar. Se omitidas, todas as colunas serão retornadas.

Devoluções

Uma promessa contendo o resultado da operação. Quando a operação é bem-sucedida, é devolvido um objeto contendo os dados do registo, incluindo todas as colunas selecionadas.

Example

// Retrieve an account with all columns
const account = await dataApi.retrieveRow('account', {
  id: '30dc51e9-947d-47d8-ad48-4fc48fba4a95',
});

// Retrieve specific columns only
const contact = await dataApi.retrieveRow('contact', {
  id: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
  select: ['firstname', 'lastname', '_parentcustomerid_value'],
});

setPageOutput método

Define o valor devolvido ao script que chama quando uma página generativa é aberta enquanto um diálogo fecha.

Parâmetros

Nome Tipo Description
value desconhecido O valor a devolver ao script que abriu o diálogo. O valor pode ser um primitivo, objeto ou array.

Devoluções

Sem valor.

Example

dataApi.setPageOutput({
    action: "selected",
    recordId: selectedRecordId
});

const xrm = (window as any).Xrm;
await xrm.Navigation.navigateBack();

Ligar setPageOutput não fecha o diálogo nem atualiza a página de chamada. Feche o diálogo com Xrm.Navigation.navigateBack(). A promessa devolvida então Xrm.Navigation.navigateTo resolve-se com um objeto cuja returnValue propriedade contém o valor armazenado mais recentemente. O script de chamada deve aplicar explicitamente o valor devolvido à sua forma, grelha ou outro estado.

Este método aplica-se a páginas generativas abertas como diálogos. Páginas generativas abertas em linha ou num painel lateral da aplicação não devolvem um valor ao script de chamada.

updateRow método

Atualiza uma linha existente na tabela especificada.

Parâmetros

Defina valores para estes parâmetros exigidos.

Nome Tipo Description
tableName cadeia (de caracteres) O nome lógico da tabela para atualizar a linha.
rowId cadeia (de caracteres) O ID da linha a atualizar.
row Objeto Os dados da linha a atualizar.

Devoluções

Uma promessa contendo o resultado da operação. Quando a operação tem sucesso, não retorna valor.

Example

let rowId = "5531d753-95af-e711-a94e-000d3a11e605"

// Define the row to update a record
var row =
    {
        "name": "Updated Sample Account ",
        "creditonhold": true,
        "address1_latitude": 47.639583,
        "description": "This is the updated description of the sample account",
        "revenue": 6000000,
        "accountcategorycode": 2
    }

// update the record

try {
   await dataApi.updateRow("account", rowId, row);
}
catch (error){
  console.log(error.message);
}