CONSULTA DE TABELA E EXIBIÇÃO PARA SELEÇÃO NO HTML

guifeitosasilva
Tera Contributor

Preciso exibir no meu HTML uma select de Gerentes com as opções dos dados da tabela como o nome deles. Porem, esta dando erro na consulta e exibição. 

 

 SCRIPT

 

(function () {
  /* populate the 'data' object */
  /* e.g., data.table = $sp.getValue('table'); */

  if (input) {
      if (input.hasOwnProperty("getAllChoicesFromField")) {
          data.choices = getAllChoicesFromField();
          data.company = getAllCoreCompany();
          data.suppliers = getAllSuppliers();
          data.gerentes = getMembersGerentes();
         
      }
  }

  function createObjectGlideRecord(table, query) {
      const records = new GlideRecord(table);
      records.addEncodedQuery(query);
      records.query();

      return records;
  }
function getMembersGerentes() {
    const id = [];
    const gr = new GlideRecord('sys_user_grmember');
    gr.addQuery("group", "0787786e1b0eacd0b1d9eb9fe54bcb94");
    gr.query();
    while (gr.next()) {
        console.log()
        id.push({
            value: gr.sys_id.toString(),
            label: gr.name.toString(),
        });
    }
    return id

}

 

 

CLIENT_SCRIPT

 

 

api.controller = function ($scope) {
  /* widget controller */
  var c = this;

  const action = c.server;

  $scope.onload = function () {
    action
      .get({
        getAllChoicesFromField: true,
      })
      .then((res) => {
        $scope.gerentes = res.data.gerentes;
        console.log(res.data.gerentes);
      });
};
  };

 

 

 

HTML

 

 

<select class="select-text" required>
<option value="" disabled selected></option>
<option ng-repeat="item in user" value="{{item.value}}">{{item.label}} </option>
</select>
<label class="select-label">Gerente </label>

 

1 ACCEPTED SOLUTION

Ivan Betev
Mega Sage
Mega Sage

Olá @guifeitosasilva ,

 

Complementando minha resposta anterior, gostaria de esclarecer um ponto importante sobre a tabela sys_user_grmember, que é utilizada como uma tabela de associação (bridge table) entre usuários e grupos. Para acessar o sys_id e o nome do usuário a partir dessa tabela, é necessário utilizar a técnica de dot walking. Isso significa que você pode acessar as propriedades do registro de usuário relacionado diretamente na sua consulta.

 

Aqui está uma forma de fazer isso corretamente na sua função getMembersGerentes:

 

function getMembersGerentes() {
    var id = [];
    var gr = new GlideRecord('sys_user_grmember');
    gr.addQuery("group", "0787786e1b0eacd0b1d9eb9fe54bcb94");
    gr.query();
    while (gr.next()) {
        id.push({
            value: gr.user.sys_id.toString(), // Dot-walking para obter o sys_id do usuário
            label: gr.user.name.toString(), // Dot-walking para obter o nome do usuário
        });
    }
    return id;
}

 

Espero que isso ajude a esclarecer o processo. Por favor, me avise se tiver mais dúvidas ou precisar de mais assistência.

 

Cumprimentos, Ivan

View solution in original post

2 REPLIES 2

Ivan Betev
Mega Sage
Mega Sage

Ola @guifeitosasilva ,

 

Você poderia especificar qual erro está encontrando? Se possível, você poderia compartilhar uma captura de tela ou descrever a mensagem de erro que está recebendo? Isso ajudaria a diagnosticar o problema com mais precisão.

 

Cumprimentos, Ivan

Ivan Betev
Mega Sage
Mega Sage

Olá @guifeitosasilva ,

 

Complementando minha resposta anterior, gostaria de esclarecer um ponto importante sobre a tabela sys_user_grmember, que é utilizada como uma tabela de associação (bridge table) entre usuários e grupos. Para acessar o sys_id e o nome do usuário a partir dessa tabela, é necessário utilizar a técnica de dot walking. Isso significa que você pode acessar as propriedades do registro de usuário relacionado diretamente na sua consulta.

 

Aqui está uma forma de fazer isso corretamente na sua função getMembersGerentes:

 

function getMembersGerentes() {
    var id = [];
    var gr = new GlideRecord('sys_user_grmember');
    gr.addQuery("group", "0787786e1b0eacd0b1d9eb9fe54bcb94");
    gr.query();
    while (gr.next()) {
        id.push({
            value: gr.user.sys_id.toString(), // Dot-walking para obter o sys_id do usuário
            label: gr.user.name.toString(), // Dot-walking para obter o nome do usuário
        });
    }
    return id;
}

 

Espero que isso ajude a esclarecer o processo. Por favor, me avise se tiver mais dúvidas ou precisar de mais assistência.

 

Cumprimentos, Ivan