4D Write Pro: Estão disponíveis linhas de transporte!

Tradução automática de Deepl

Utilizar tabelas em documentos 4D Write Pro é mais frequente, especialmente porque é possível associar-lhes uma fonte de dados, que alimenta automaticamente as suas filas!

À medida que o número de filas se torna mais proeminente, é comum que estas tabelas sejam automaticamente divididas em várias partes para permitir uma quebra de página ou coluna. Nesta situação, é por vezes conveniente inserir (automaticamente!) uma linha “subtotal ” na parte inferior de cada parte das respectivas tabelas. Sim, é verdade, isto é possível em 4D v19 R7 ?

Base de dados de demonstração

Uma imagem vale mais que mil palavras.

Uma imagem é sempre melhor do que uma longa explicação. Eis o que queremos obter:

Como pode ver, cada parte da tabela – excepto a última – contém uma linha extra utilizada aqui para exibir um subtotal.

Isto é frequentemente necessário, por vezes até legalmente exigido, ao editar facturas longas, por exemplo.

UMA VIA no modelo, TÃO COMO MUITO NECESSÁRIO NO documento final

Tal como mencionado na introdução, esta funcionalidade está disponível para todas as tabelas. Ainda assim, só é considerada quando as tabelas estão associadas a uma fonte de dados (uma colecção ou uma selecção de entidades). Uma vez activada esta propriedade, a linha imediatamente a seguir à linha “repetida” tornar-se-á a linha de transporte.

blank

A activação desta propriedade pode ser feita através da interface.

Em ambas as interfaces (barra de ferramentas e barra lateral), o menu da tabela ( ) contém um novo item, “Fila de transporte de fundo”.

blankblank

… Ou por programação

WP SET ATTRIBUTES($table ; wk bottom carry over row ; True | False)

DUPLICADO OU NÃO?

É essencial compreender que esta fila, única no modelo, será duplicada tantas vezes quantas forem necessárias, uma vez avaliado o documento.

Note-se que isto não será necessário se a tabela “encaixar” num único bloco. Neste caso, a fila de transporte não será representada no documento avaliado.

Caso contrário, será inserida no final de cada bloco, excepto no último. Logicamente, a última parte da tabela dividida não deverá conter um subtotal mas um “Grande Total”. É por isso que, no modelo, a linha de transferência não é a última, mas é seguida pelas últimas linhas da tabela.

O CONTEÚDO DAS FILAS DE TRANSPORTE

Como deve ser definido o conteúdo das células desta fila de transporte?

Como já deve ter adivinhado, nasce um novo atributo: os hastes anteriores, que podem ser utilizados como se segue:

This.previousItems.sum("preço")

This.previousItems devolve, dependendo da fonte de dados da tabela, ou uma colecção ou uma selecção de entidades.

Este conjunto contém todos os itens que já foram avaliados na página actual e nas anteriores. Pode aplicar todas as funções disponíveis (min/max/sum/etc.) para colecções ou selecção de entidades!

Note que se This.previousItems foi concebido principalmente para ser utilizado em linhas de transporte, a sua utilização não se limita a este contexto particular. Pode ser utilizado em qualquer parte da tabela (excepto cabeçalhos) com valores diferentes em cada contexto.

Conclusão

Esta nova propriedade torna possível livrar-se de códigos complexos e enriquecer tabelas durante saltos de página automáticos.
Desfrute da criação de lindos modelos e evite a codificação complexa! E, como sempre, o seu feedback é muito apreciado. Junte-se à discussão no Fórum 4D.

Mais informações sobre as linhas de transporte podem ser lidas na documentação.

Roland Lannuzel
- Proprietário do produto & Especialista 4D - Depois de estudar electrónica, a Roland entrou nas TI industriais como desenvolvedor e consultor, construindo soluções para clientes com uma variedade de bases de dados e tecnologias. No final dos anos 80, apaixonou-se pela 4D e utilizou-a para escrever aplicações comerciais que incluem sistemas de contabilidade, facturação e correio electrónico. Juntando-se à empresa em 1997, as valiosas contribuições de Roland incluem a concepção de especificações, ferramentas de teste, demonstrações, bem como formação e palestras para a comunidade 4D em muitas conferências. Ele continua a moldar activamente o futuro da 4D, definindo novas características e ferramentas de desenvolvimento de bases de dados.