POR QUE ESCOLHER A BYTE FACTORY?

Além de oferecer 100% de ferramentas e serviços personalizados, nossa equipe tem o foco na alavancagem do seu negócio, informando e auxiliando sua expansão.

CONTATO
  • End.: Rua Oriente Nº 55, cj 1310
    Campinas-SP CEP 13090-740
  • Tel: +55 19 3251-8496
  • Email: atendimento@bf.net.br

Evento Após gravar ao gerar NFs automáticas

06/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota pode ser considerada altamente técnica por alguns usuários do BF AICS.
Tanto pelo módulo Comercial quanto pelo módulo Assistência Ténica, existe o atalho para geração de NFs. A NF gerada já disparava o evento associado à gravação da NOTA. Esta chamada facilita e integra as regras fiscais.
Nesta atualização do sistema, o evento Após Gravar também está sendo disparado. Com isso, a integração das regras pela tela do Fiscal e pela geração automática ficam ainda maiores.

Nova rotina para geração livre de OPs

06/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota pode ser considerada altamente técnica por alguns usuários.
O BF AICS dispõe de uma rotina simples para geração de OPs, cuja sintaxe é: Function GeraOP(Cod_Res,Netcod:String;Quant:Double):Double Entretanto, com o novo recurso de Engenharia integrada ao Comercial, a possibilidade de se gerar uma OP sobre as novas tabelas da Engenharia editada precisou ser criada. Portanto, a nova rotina para criação mais aberta de OPs passou a ser:
Function GeraOPAdv(Cod_Res,Netcod:String;Quant:Double;TabProc,TabMat:String):Double Onde, TabProc e TabMat são os nomes dos cursores que contém a "receita" que deverá ser produzida. TabProc é equivalente à tabela ESTPROCOP e TabMat à tabela ESTELABOP. Quando esta rotina for utilizada para gerar OPs das Engenharias específicas dos pedidos, basta chamá-la já com os dados selecionados relacionados às tabelas PEDESTELABOP e PEDESTPROCOP, que contém, para fins de geração de OPs, as mesmas colunas das tabelas anteriores.

Criação de colunas no CI alterada

06/12/2009 em CENTRO DE INFORMAÇÕES

Esta alteração visa corrigir um possível problema de colunas duplicadas em servidores que sejam case sensitive para texto (SAPdb e PostgreSQL, por exemplo).
Agora, quando uma vista ou tabela for criada, o AICS irá forçar que o nome da coluna seja gravada em letras maiúsculas, logo, não importando qual o destino da vista ou tabela exportada, não ocorrerá mais o problema de colunas iguais podendo gerar mensagens de erro de chave.

Processamento de DFMs sofreu alterações

05/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota é considerada de caráter de desenvolvimento e pode não ser compreendida por todos os usuários.
Um DFM é uma descrição de objetos de formulário que permite livre criação de estruturas de tela e mesmo de relatórios. O AICS processa a descrição da mesma forma que um ambiente Delphi faria. Inclusive, pode-se copiar e colar estruturas DFMs no próprio AICS diretamente nos scripts (clique com o botão direito em um script para ver as opções disponíveis).
Entretanto, o AICS não associava o nome aos objetos criados.
Isso não causa nenhum problema para executar as rotinas, entretanto, o nome associado facilita muito a análise das telas criadas com o uso deste recurso.
Nesta atualização do sistema, os objetos receberão o seu nome diretamente pela propriedade "name". O único comportamento que se altera com isso é o processamento desta associação pelos próprios objetos. Isso pode requerer que algum campo text ou caption seja limpo explicitamente (pode ser no próprio DFM).
Por exemplo, um TEdit passa a receber o nome em seu text, coloque Text = '' dentro da cláusula object deste objeto. O mesmo vale para TPanel e outros objetos que possuem captions ou texts. Se já houver associação do valor, isso não altera em nada o comportamente atual, somente na ausência da informação esta mudança ocorre.

Novo comando para associar Blobs

03/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota técnica é avançada.
O processador do AICS possuía a função SetString para associar textos, memos e blobs aos cursores SQLs. Entretanto, pode ocorrer a necessidade de especificar ao servidor de que uma dada coluna é do tipo Blob e não do tipo Memo (ou long).
Para alcançar este objetivo, criamos a função SetBlob com a mesma sintaxe da SetString, porém, irá indicar ao servidor de que o dado é um Blob.
Portanto, a sintaxe é:
SetBlob(Tabela,Coluna,Conteudo:String);
Sendo que Conteudo pode ser um string binário de até 2GB.

Gerador de números aleatórios alterado

03/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota pode ser considerada técnica e avançada.
O AICS expõe a função "random" que retorna um número aleatório entre 0 e 1, o número é em ponto flutuante. Entretanto, o algoritmo nativo do compilador não apresenta uma distribuição aleatória uniforme para aplicações críticas. Seguindo o trabalho de Makoto Matsumoto and Takuji Nishimura, que desenvolveram o algorimo Mersenne Twister (mais informações podem ser obtidas em en.wikipedia.org/wiki/Mersenne_twister), a Byte Factory substituiu, para a função Random dos usuários, para seguir esta implementação mais moderna. Logo, a mesma declaração terá resultados mais uniformes:
Function Random:double;
Nem é necessário inicializar as sementes, pois o AICS o faz logo na inicialização do sistema.

Manipulação de XML expandida

03/12/2009 em CENTRO DE INFORMAÇÕES

Esta nota é considerada técnica para desenvolvimento.
O AICS possui a função ObtemTag (veja no help do editor sua declaração completa) que permite obter o conteúdo dentro dos comandos de início e fim da Tag (semelhante a códigos html). Na versão mais recente do AICS, este comando obtém os dados mesmo que o tag seja com atributos dentro da abertura.
Os atributos na abertura do Tag são muito comuns em arquivos XML mais complexos. Da mesma forma, agora visando estes atributos, a BF criou uma nova função específica para a extração deles com a seguinte sintaxe:
function ObtemParTag(Tag, Param, Texto:string):string Muito semelhante à ObtemTag, com a chamada adicional indicando qual o parâmetro que deseja retornar. Esta função e a ObtemTag expandida foram incorporadas ao AICS e todas as suas vertentes em Web e CGIs. Além da expansão, foram otimizadas para ficarem mais rápidas. O impacto do ganho de velocidade pode ser sentido em ganhos de frações de segundo na montagem de relatórios editados pelos usuários, por exemplo.

Rotinas para codificação de URL publicadas

01/09/2009 em CENTRO DE INFORMAÇÕES

O AICS está cada vez mais sendo utilizado como ferramenta central na gestão de informações pela internet. A principal vantagem é sua fantástica integração com uniformidade nas regras de negócios e desenvolvimento integrado com o sistema desktop.
Visando melhorar os sites que utilizam Ajax + AICS, publicamos 2 funções bem úteis que permitem transpassar qualquer problema de código de página entre o navegador e o servidor:
function UrlEncode(DecodedStr: String; SinasDeMais: Boolean): String;
function UrlDecode(EncodedStr: String): String;
Além disso, no ServAICS, foi criada a função alert_aics que, antes de mostrar uma mensagem, a decodifica e deixa sem o possível marcador de erro NOK. O objetivo é deixá-la mais amigável apenas. Esta função pode ser utilizada no lugar da alert convencional do JavScript.

Nova função para obter cursor em formato de tags

01/09/2009 em CENTRO DE INFORMAÇÕES

Nota técnica avançada.
Com esta função, será possível preparar dados para envio por meio eletrônico, armazenagem com posterior aplicação e o que mais a realidade necessitar.
Sintaxe:
function CursorToTags(CursorName:string):String Onde, CursorName é o nome do cursor que deve ser exportado O resultado será o conteúdo formatado como tags XML ou HTML.

Função para Transferência de parâmetros

01/09/2009 em CENTRO DE INFORMAÇÕES

Esta nota pode ser considerada puramente técnica por alguns usuários do sistema. Além disso, é importante para usuários que utilizem scripts em rotinas "web".
Quando ocorre um post sobre o serviço web, dependendo da ação, os parâmetros já são transferidos para a tabela indicada.
Por exemplo, uma ação "tabsave" transfere os dados para a tabela indicada no parâmetro "tab".
Entretanto, se a rotina precisar transferir os parâmetros para outros comandos SQL (indo desde comandos de seleção a de atualização), isso teria que ser feito linha a linha.
Visando ganhar tempo e velocidade, publicamos uma função que irá passar os parâmetros do formulário para um cursor qualquer, sua declaração é:
Procedure SetContentFromWebFields(NomeCursor:String)
Onde NomeCursor é o nome que foi dado numa declaração de comando do tipo TablePrepareSql. Após este comando, você ainda poderá manipular livremente os atributos antes de enviá-lo ao servidor.

Leia, por favor

Nosso website utiliza cookies para facilitar a navegação. Ao continuar o acesso, você aceita essa política automaticamente.