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.
Esta nota é destinada aos desenvolvedores do BF AICS.
O BF AICS possui um conjunto de controles que permite máxima
fidelidade no envio dos dados ao servidor. Por exemplo, o evento
Gravar pode retornar falso e a gravação não ser efetuada enquanto
tais e tais condições não forem satisfeitas.
Quando o desenvolvedor cria formulários com os objetos TDBNavigator,
o evento BeforeAction, na verdade, não interrompe o processamento.
Entretanto, ao atribuir tal evento em suas rotinas, se for executado o
comando Abort (sintaxe: Procedure Abort;) neste momento, o BF AICS
irá interromper o processamento e o comando será descontinuado.
Este procedimento Abort pode não executar nenhum efeito se executado
dentro de outros eventos, atenção a isso. Se, em seus desenvolvimentos,
for encontrado algum caso em que esta metodologia seja aplicável e não
esteja implementada, basta avisar a BF para sua inclusão.
Esta nota é focada para desenvolvedores sobre o BF AICS.
Sabemos que os objetos nativos e mesmo outros podem ser utilizados
livremente no BF AICS, incluindo os descritores de formulários do
tipo DFM.
O objeto de formulário mais comum é o TForm, porém, este objeto
não possui a integração que o BF AICS apresenta em sua interface.
Para ajudar a melhorar os seus desenvolvimentos, a BF criou o objeto
TFormScript, que pode ser utilizado no lugar do TForm e terá as
seguintes vantagens:
1. Menu Janela e Explorar integrado aos demais módulos do sistema
2. O enter irá funcionar como TAB da mesma forma que as demais
telas do BF AICS
3. Apresenta o menu Ajuda, quando em login Supervisor, com as
opções Depuração e Visualizar Script Associado para rastreamento de
execuções.
Isto permitiu um comportamento extremamente uniforme mesmo
dos desenvolvimentos feitos completamente livres pelos programadores.
Migrações de sistemas legados nunca foram tão simples quanto agora.
Esta nota pode ser considerada altamente técnica para a maioria dos
usuários do sistema.
No Centro de Informações do AICS, publicamos os seguintes
objetos: TStringField e TFloatField.
Com estes objetos, pode-se criar campos dinamicamente nos
cursores de dados nativos. Ainda, publicamos a função interna
do AICS que permite fixar os campos ao cursor e, após isso,
criar outros objetos de campos livremente, como campos que
sejam calculados a tempo de exibição.
A função publicada foi:
Procedure PermDataSetFields(Cursor:DelphiTDataSet)
Execute-a passando um cursor (mesmo fechado) como parâmetro,
mas que já tenha a expressão SQL associada. Ele será aberto e seus
campos fixados ao objeto para aceitar adição de campos calculados
em seguida. Tudo isso numa única linha de comando.
Um dos recursos mais interessantes do Centro de Informações
do AICS é a criação automática de telas. Nesta criação, como padrão,
o sistema define uma largura dos campos que seja de acordo com
a barra de botões. Este comportamente, entretanto, pode não gerar
o melhor aproveitamento de monitores de alta resolução.
Nesta atualização do sistema, adicionamos na aba Opções do Centro
de informações, a nova opção Máxima largura. Como padrão, fica
desligada e o sistema se comporta da maneira anterior. Ainda, como
a opção se ativa apenas se ligada, as implementações anteriores não
sofrem modificações.
Esta atualização pode ser considerada técnica demais por alguns
leitores.
Na versão mais recente do sistema, visando as regras de negócios
dos clientes, a BF publicou o objeto WebBrowser. Isto significa que
será possível adicionar navegação em endereços de internet (URLs)
a quaisquer telas do Aics nativos ou criadas pelos clientes localmente.
Para utilizar este novo componente, basta declará-lo, criá-lo num dado
elemento pai e executar a ação "Navigate". Por exemplo:
MeuBrowser := TWebBrowser.Create(Self);
MeuBrowser.parent:=PanelPrincipal;
MeuBrowser.navigate('http://www.aics.com.br');
Muitas vezes, a movimentação de materiais por rotinas dos usuários
não necessitam de mensagens (que requerem até intervenção do usuário).
Por exemplo, em importações, isso acaba sendo anti-produtivo. Para
facilitar estes casos, a versão mais recente do sistema irá eliminar as
mensagens se uma variável global for ativada:
SetVariable('AICS_NOMESSAGE_IO','1');
Com isso, pode-se ligar ou desligar as mensagens relacionadas aos
comandos de movimentação de materiais de acordo com sua realidade.
É apenas um recurso cadastral que não estava disponível. No Centro
de Informações, controle e conteúdo, existe a possibilidade de associar
uma determinada colunas a uma determinada estrutura hirárquica.
Todas as estruturas podem ser associadas, por exemplo, comercial,
contábil, financeira, de materiais, classificações profissionais etc.
Entretanto, a estrutura de imagens, que dá acesso á pesquisa de imagens
pelo servidor, estava ausente. Adicionamos a opção IMG à lista.
Ativando-a, um botão de pesquisa será criado ao lado do campo na
tela permitindo navegar pelas imagens do servidor de conteúdo.
Lembrando que os conteúdos atuais podem ser imagens, documentos
e arquivos eletrônicos em geral.
A rotina que pode ser inserida em scripts do usuário para
assinar digitalmente documentos PDF foi alterada. Agora,
pode-se passar o motivo da assinatura (o motivo aparece
quando a mesma é exibida pelo Adobe Reader, por exemplo).
A nova sintaxe ficou:
Function PDFSign( FileToSign, Reason, CertFile, Password:String) :boolean
Por favor, caso alguma rotina tenha sido implementada na
sintaxe anterior, favor apenas adicionar uma string vazia no
segundo parâmetro, isso manterá o comportamento anterior.
Esta alteração afeta o processador de cálculos do AICS que
contempla, por exemplo, o cálculo de impostos e mesmo a
função CalculaStr por scripts.
O processador foi melhorado com a necessidade muito menor
de uso de parênteses adicionais. Atualizando o sistema, você
poderá testar o novo processador pelo menu Arquivo -> Utilitários
-> Testador de expressões. Um resumo das funções disponíveis
seria:
Operações matemáticas: básicas mais:
! -> negação. Ex.: !(valor), se valor = 0, retorna 1, senão 0
= -> igualdade. Ex.: valor1=valor2, se valor1 igual a valor 2, retorna 1, senão 0
> -> maior do que. Ex.: valor1>valor2, se valor1 maior que valor 2, retorna 1, senão 0
< -> menor do que. Ex.: valor1
Outras funções: sin, cos, tan, arctan, sinh, cosh, cotan, exp, ln, log10, log2, sqr,
sqrt, abs, trunc, int, ceil, floor, random, max, min, power
Rotina melhorada para AICS e para os serviços Web do AICS.
O AICS é uma ferramenta de informação completa, podendo ser
usado como o melhor ERP ou o melhor sistema de integração ou
complementação de sistemas internos ou públicos.
Ainda, permite assinatura eletrônica de documentos, como PDFs
ou arquivos XML, podendo se integrar a serviços públicos ou
privados de documentos, por exemplo, Nota Fiscal Eletrônica
Federal ou mesmo municipais, sem alteração do sistema.
Nesta atualização, a BF expandiu os recursos de criação livre de
formulários aceitando imagens embutidas nos descritores. Por exemplo,
pode-se simplesmente copiar as fontes dos formulários elaborados
em praticamente qualquer versão do Delphi e colar nos scripts do
AICS, INCLUINDO as imagens dos botões!
Associado ao novo recurso de repositórios armazenados (STORED
no Centro de Informações), pode-se facilmente criar recursos
avançados e livres de pesquisa ou processamentos como se fossem
sub-sistemas isolados, criados sob demanda (sem nenhuma queda
de recursos não importando o tamanho dos sistemas armazenados).
Acrescente a isso as diversas modalidades de acesso a banco de
dados (são 3!), mais o novo Correio Eletrônico integrado ao ERP,
mais a possibilidade de utilizar uma meia dúzia de servidores de
bancos de dados, mais a possibilidade de executar o sistema,
tanto em servidores quanto em clientes, em Linux, mais o recurso
de multi-conexões a uma infinidade de servidores e mais a versatilidade
do AICS ser pequeno e rápido e você terá certeza de solucionar
qualquer problema em TI na atualidade!