Skip to content

Matriz Composta (Demonstrativo)

O Widget Matriz Composta é a ferramenta para demonstrativos financeiros: DRE, demonstrativo gerencial, orçado × realizado, fluxo gerencial. A diferença para a Matriz está em de onde vêm as linhas.

Na Matriz, as linhas são descobertas no dado: elas são os valores de uma dimensão. Isso resolve "Faturamento por Região × Mês", e não resolve DRE, porque "Receita Líquida" não existe como valor de coluna nenhuma. Ela é Receita Bruta menos Deduções.

Na Matriz Composta, cada linha é declarada por quem monta, e as colunas são sempre tempo. Apesar do nome, ela não serve só a DRE: qualquer relatório em que as linhas são um roteiro fixo (indicadores operacionais, quadro de pessoal, painel de safra) se monta do mesmo jeito.

Qual dos dois usar

Seu demonstrativoOnde montar
Balancete puro sobre um plano de contas que já tem Código e Código PaiMatriz, modo Hierárquico (resolve em uma consulta)
Tem linhas calculadas (Receita Líquida, EBITDA, margens)Matriz Composta
Mistura fatos que não se relacionam entre si (venda, financeiro, folha)Matriz Composta
Precisa de coluna de categoria (Região, Produto)Matriz

TIP

Se o plano de contas do cliente já está bem modelado com Pai/Filho, comece pela Matriz Hierárquica. Ela é muito mais barata. A Matriz Composta ganha quando o demonstrativo precisa de contas que o plano não tem.


🏗️ Montando a estrutura

O botão Montar matriz, no fim da barra lateral, abre a tela em que o demonstrativo é construído: a lista de linhas à esquerda, e à direita tudo o que a linha selecionada tem.

Toda linha é de uma destas três espécies, e os três botões de Adicionar ficam no topo da lista:

  • Grupo: totaliza as linhas de dentro, cada uma com o sinal dela. Não lê dado
  • Medida: lê dado. Escolhe um campo da Aplicação e, se precisar, filtros próprios
  • Conta: aritmética sobre outras linhas (Receita Bruta − Deduções)

A conta se monta clicando

Em Como esta linha é calculada, cada parcela é uma ficha: escolha a operação (somar, subtrair, multiplicar, dividir) e a linha que entra. Também dá para acrescentar um número fixo (Lucro antes do IR × 0,34) ou abrir um grupo de parênteses, que nasce e morre fechado. Logo abaixo, a conta aparece escrita por extenso, com os nomes das linhas, para conferência.

Uma conta só oferece as linhas que já terminaram acima dela. É isso que torna impossível escrever uma referência circular.

O sinal de cada linha

Em No total do grupo acima, cada linha diz como entra no total do grupo que a contém: Soma, Subtrai ou Não entra. Quem subtrai aparece no demonstrativo com um (−) antes do nome, para a leitura não depender de abrir a configuração.

O "Não entra" existe para linha de memória: número de colaboradores, toneladas, ticket médio, uma margem no meio de uma seção. Sem ele, o grupo somaria pessoas com dinheiro.

WARNING

O sinal vale para a soma do grupo. Contas, totalizadores e análise vertical leem sempre o valor sem sinal.

Ou seja: se "Deduções" está marcada como Subtrai dentro do grupo dela, a conta Receita Bruta − Deduções continua subtraindo uma vez, não duas.

Se o dado já vem com sinal invertido no banco (despesa gravada negativa, ou débito e crédito em coluna separada), isso se resolve onde é o lugar: numa expressão da tabela ou da Aplicação. É a causa número um de um demonstrativo que parece certo e não está.

Formato de cada linha

O campo Formato aceita Do próprio campo (o padrão, que respeita a máscara definida na modelagem), Número, Moeda, Percentual, Reduzido (mil, mi) e Inteiro. Grupos e contas herdam o formato de quem eles resumem, então um grupo não sai com R$ em cima de filhas sem R$.

Arrastar para reordenar

Cada linha da lista tem uma alça. Arrastando:

  • Soltar no terço de cima ou no terço de baixo de outra linha põe a linha antes ou depois dela
  • Soltar no meio de um grupo move a linha para dentro dele
  • Soltar na área vazia abaixo da árvore manda para o fim

Um grupo viaja com tudo o que está dentro dele. Mirar no próprio conteúdo não faz nada, de propósito: seria a forma de o ramo sumir do demonstrativo sem aviso.

Cada linha também tem, ao passar o mouse, os botões Subir, Descer e Excluir, e os grupos ganham um Adicionar dentro para criar uma linha já no lugar certo.

IMPORTANT

Não existe linha de total automática no rodapé, e isso é de propósito. Um rodapé automático somaria um grupo que contém uma linha percentual e imprimiria um número sem significado. A última linha do demonstrativo é uma conta que você escreve, chamada Lucro Bruto ou Resultado Líquido.


🗓️ O eixo de tempo

A Matriz Composta exige uma Tabela Calendário. O motivo é direto: as linhas de um DRE costumam ler fatos diferentes, que não se relacionam entre si, e o Calendário é a única coisa que faz um filtro de data da Dashboard alcançar todos eles.

Na seção Tempo, escolha a Coluna do Calendário e o Agrupar por: Dia, Semana, Mês ou Ano.

WARNING

Não existe agrupamento por trimestre. Para uma visão trimestral, agrupe por mês e leia os grupos, ou agrupe por ano.

Se uma linha precisa de outra data (despesa por competência, financeiro por caixa), isso se resolve na modelagem, com Relacionamento Fantasma e uma expressão use(). Veja a receita Calendário e Filtros Dinâmicos.

Períodos exibidos

O demonstrativo sempre segue o filtro de data da Dashboard. O que se configura aqui é só o quanto esse filtro é expandido:

  • Exatamente o período filtrado: as colunas cobrem o que foi selecionado, arredondado para períodos inteiros. Selecionar do dia 15 até o dia 10 do mês seguinte mostra os dois meses completos, e não meio mês em cada ponta com cara de mês fechado
  • Sempre anos completos: filtrou um trimestre, aparece o ano inteiro. É o DRE que se lê de janeiro a dezembro independentemente do recorte da tela. Continua respondendo ao filtro: trocar o ano troca as colunas
  • Últimos N períodos: conta para trás a partir do fim do que foi filtrado. O campo Quantos períodos diz o N

No ano corrente, "Sempre anos completos" não desenha doze colunas vazias esperando o futuro: ele vai até o mês de hoje, e passa dele quando houver valor lançado à frente, como um previsto ou um orçamento já aprovado. Assim o ano abre em janeiro sem terminar em cinco colunas em branco.

Nos dois primeiros modos há um Mínimo de colunas, porque filtrar um mês só deixaria o demonstrativo com uma coluna. Em "Últimos N períodos" ele não aparece: o N já diz quantas.

Filtros padrão do widget

A seção Filtros padrão do widget, na barra lateral, vale para todas as linhas do demonstrativo: restringir tudo a uma filial, a um centro de custo, ou sobrescrever o período que veio da Dashboard.

Filtro de linha compõe por cima deste, do mais geral para o mais específico: primeiro o do Widget, depois o da linha.

TIP

Para o demonstrativo ler um recorte diferente do resto da Dashboard, use os Filtros padrão do widget, e não o seletor de períodos. É a mesma mecânica dos outros Widgets, e ela aparece na barra de filtros como qualquer outro filtro, em vez de ficar escondida numa configuração interna.

NOTE

Uma linha não pode filtrar a mesma data que define as colunas. Se tentar, o demonstrativo avisa e pede para ajustar o período na seção de Tempo, que é quem manda no eixo horizontal.


🔀 Colunas dentro do período

Por padrão, cada período é uma coluna. Declarando duas ou mais em Colunas dentro do período, cada período passa a ter várias: é assim que se monta orçado × realizado, ou a papeleta de consolidação Empresa A | Empresa B | Eliminações | Consolidado.

Uma coluna é só um nome. Não tem filtro nem configuração própria. O que muda entre elas é o campo que cada linha lê: com duas colunas declaradas, toda linha de medida passa a escolher dois campos, um para cada, em Campo de cada coluna.

Isso é o suficiente porque orçado e realizado costumam morar em tabelas diferentes. Quando moram na mesma, separados por um indicador de cenário, a diferença vira um campo de Expressão da Aplicação, e a coluna simplesmente aponta para ele. Uma coluna de variação percentual funciona do mesmo jeito.

TIP

Ao adicionar a primeira, já nascem duas ("Realizado" e "Orçado"). Uma coluna sozinha não significa nada: cada período já é uma.


💰 A coluna de Acumulado

A Coluna de acumulado fica ligada por padrão, em Totalizadores e análises, e o rótulo dela é editável. O acumulado é uma consulta própria, sem agrupamento por período. Não é a soma das células.

Isso não é detalhe técnico, é o que faz o número certo aparecer:

  • Uma linha de ticket médio mostra a média do período inteiro, e não a soma das médias mensais
  • Uma linha de contagem distinta mostra os distintos do período, e não a soma dos distintos de cada mês
  • Uma conta recalcula: a margem do ano é o lucro do ano sobre a receita do ano, nunca a média das margens mensais

📊 Análises

Vertical (AV%)

Cada linha como percentual de uma linha base que você escolhe, tipicamente a Receita Líquida.

  • Por padrão sai numa coluna só, no fim, calculada sobre o acumulado
  • Ligando Uma coluna em cada período, ela aparece dentro de cada mês, sobre a base daquele mês

Horizontal (variação)

Compara o período com outro. Ao ligar, escolha com o que ela compara:

  • Contra o período anterior (fevereiro contra janeiro)
  • Contra o mesmo período do ano anterior (fev/26 contra fev/25)

E escolha onde ela aparece:

  • Numa sub-linha abaixo de cada linha: cabe em demonstrativo largo, com muitos períodos
  • Numa coluna dentro de cada período: cabe em demonstrativo alto, com muitas linhas

São o mesmo número desenhado em dois lugares.

NOTE

Numa linha de percentual a variação sai em pontos percentuais. Uma margem que foi de 10% para 12% aparece como +2,0 p.p., e não como +20%, porque é assim que se lê demonstrativo.


🌿 Abrir uma linha por dimensão

Uma linha de medida pode se abrir em filhas, uma por valor de uma dimensão: despesas comerciais abertas por centro de custo, por exemplo. Configure em Quebrar por, dentro da linha.

As filhas saem dos valores da dimensão, então um centro de custo criado no mês que vem aparece sozinho, sem ninguém editar o demonstrativo.

  • Máximo de itens: quantas filhas mostrar, escolhidas pelas maiores
  • Agrupar o resto: mantenha ligado. Sem ele, as filhas exibidas não somam o valor do pai, e um demonstrativo em que os filhos não fecham com o pai está errado aos olhos de quem lê

Até três níveis. Acima disso a quantidade de linhas explode e o demonstrativo fica ilegível.

Com colunas declaradas, a lista de filhas é a mesma em todas: quem define o conjunto é a primeira coluna. Sem isso, o orçado teria centros de custo que o realizado não tem e a matriz deixaria de ser uma matriz.


🎨 Aparência

A seção Aparência, na barra lateral, tem a galeria de modelos. Escolher um resolve o caso comum sem abrir mais nada:

ModeloCaracterística
LimpoSem grade. A hierarquia vem do peso do texto. É o padrão
ContábilNegativo entre parênteses, sem grade nenhuma, traço acima dos subtotais
CompactoGrade completa, linhas alternadas e texto menor. Cabe mais linha na tela
ExecutivoTexto maior e faixa colorida nos grupos. Para telão e apresentação
ZebradoLinhas alternadas com grade horizontal. Ajuda a percorrer muitos períodos

TIP

Trocar de modelo não apaga os ajustes que você já fez. O modelo é o ponto de partida, e o que você mexeu continua por cima. Dá para experimentar os cinco sem perder trabalho.

A tela de aparência

O botão Ajuste fino, logo abaixo da galeria, abre uma tela maior com prévia ao vivo grudada no canto: mexeu num controle, o exemplo ao lado muda na hora. Ela vem em seções recolhíveis.

Modelo

A mesma galeria, em cartões maiores, com a explicação de cada um ao lado do nome.

Geral

  • Espaçamento: Apertado, Normal ou Espaçoso
  • Grade: Nenhuma, Só entre linhas ou Completa, com cor própria
  • Cabeçalho: Simples, Com traço ou Com fundo
  • Recuo por nível: quanto cada nível da hierarquia entra para a direita
  • Tamanho do texto: contínuo, entre 80% e 140% do corpo. A mesma matriz num telão e num monitor de 24" quer tamanhos diferentes
  • Listrar linhas alternadas
  • Cor de destaque: alimenta a coluna de acumulado e as faixas dos modelos que usam cor

Ajuste fino, marcado como o que quase ninguém precisa

Largura da coluna de rótulos (plano de contas costuma ter nome comprido), fonte dos números (A da interface ou Monoespaçada, que alinha dígito a dígito em conferência), caixa e alinhamento do cabeçalho, traço abaixo do cabeçalho com largura, tipo e cor, cores do cabeçalho, e Esconder o cabeçalho para quando o Widget já tem título logo acima.

Período corrente

Destacar o período em que estamos marca a coluna do mês de hoje, em negrito e com cor de fundo e de texto configuráveis. Numa matriz de doze colunas, achar o mês corrente no meio delas é um trabalho que a tela pode fazer.

Por espécie de linha

Ajusta uma espécie inteira de uma vez: Todas as linhas, Grupos e seções, Medidas, Contas, Itens de quebra e Linha de variação. Cada uma tem um "voltar ao modelo" próprio.

Note que a régua é visual, e não o tipo declarado: uma medida quebrada por dimensão conta como Grupos e seções, porque para quem lê ela é uma seção que se desdobra.

As duas últimas seções, Regras da matriz e Colunas especiais, são formatação condicional e estão descritas mais abaixo.

Aparência de uma linha específica

Dentro de Montar matriz, cada linha tem sua própria seção de aparência, e o que estiver ali vence o da espécie. Ela fica onde a linha se edita de propósito: procurar "onde eu mudo a cor do Lucro Líquido" numa tela à parte é o tipo de caça que faz gente desistir de customizar.

O vocabulário é o mesmo dos dois lados: negrito, itálico, caixa alta, tamanho relativo (Menor, Normal, Maior), cor de texto e de fundo, e o Traço, que carrega as convenções contábeis prontas: Traço acima significa "aqui fecha uma conta", Traço duplo abaixo significa "aqui fecha o resultado". Atrás do "Ajuste fino" da própria linha ficam largura, estilo e cor do traço, respiro acima e abaixo, sublinhado, riscado, alinhamento do rótulo, um ícone fixo e uma segunda cor de fundo, que transforma o fundo da linha em degradê.

Cada controle mostra um ponto ao lado quando o valor foi declarado ali, e não herdado. É o que separa "não mexi nisto" de "quero isto assim", e é o que permite tirar o negrito que o modelo põe em toda conta.

Números negativos

Em Geral:

  • Números negativos: Com sinal de menos ou Entre parênteses, a convenção contábil
  • Negativo em vermelho: desligado por padrão nos cinco modelos

O padrão é desligado porque num demonstrativo a seção de custos é negativa por natureza: pintar todo negativo de vermelho pinta metade da página e o resultado se lê como relatório de erro. Vermelho aqui funciona melhor como sinal de exceção, e exceção é o que a formatação condicional marca. Quando você liga, qualquer regra condicional sobre negativos continua vencendo, inclusive para escolher outra cor.


🚦 Formatação condicional

Existe em dois lugares, com a mesma tela:

  • Regras da matriz, no Ajuste fino da aparência: valem para todas as células
  • Formatação condicional, dentro de cada linha: valem só para ela, e vencem as da matriz

A régua é o escopo: o que fala de uma linha vence o que fala de todas. É assim que se isenta uma linha de uma regra geral sem inventar exceção.

A regra se lê como uma frase

Cada regra tem duas metades lado a lado: Quando a célula (o teste) e Ela fica assim (o efeito).

Do lado esquerdo, o teste:

  • For negativa, For positiva, For zero, Não tiver valor
  • Comparar com um número (>, >=, <, <=, =, !=)
  • Estiver numa faixa (de / até)
  • Regra em código

Do lado direito, o efeito. Comece pelos estilos prontos, que dizem a leitura em vez de pedir uma escolha entre dois vermelhos: Ruim, Bom, Atenção, Destaque, as três versões com fundo, e Apagado. Cada botão mostra um número de verdade, então dá para ver se o texto continua legível. Além deles: negrito, itálico, sublinhado, riscado, um ícone de um catálogo curto (semáforo, direção, situação, marcação) que pode ficar antes ou depois do número, e as cores à mão.

TIP

A ordem importa, e ela está na tela. As regras valem de cima para baixo, e as de baixo refinam as de cima: uma que pinta o fundo depois de outra que pinta o texto mantém as duas coisas. Use as setas para reordenar, e o olho para desligar uma regra sem apagá-la.

Regra em código

Para o que os testes prontos não alcançam ("marque o melhor mês desta linha", "pinte numa escala contínua"), o teste Regra em código abre o editor do produto.

O código devolve true, e aí a célula recebe o efeito escolhido ao lado, ou devolve o próprio efeito como objeto, quando ele depende do valor. O painel O que dá para usar aqui lista o que o código recebe e traz exemplos prontos:

  • this.value: o valor da célula, ou null quando não deu para calcular
  • this.row: a linha (nome e tipo)
  • this.period: o período da coluna, e se ela é a do acumulado
  • this.column: a coluna dentro do período, quando há mais de uma
  • this.rowValues: todos os valores daquela linha, na ordem dos períodos

1. Usar o efeito escolhido ao lado

javascript
// Marca o melhor mês desta linha.
const v = this.rowValues.filter(x => x !== null);
return this.value !== null && this.value === Math.max(...v);

2. Decidir o efeito pelo valor

javascript
if (this.value === null) return false;
if (this.value < -1e6) return { color: "#dc2626", bold: true, icon: "mdi:alert-octagon" };
if (this.value < 0)    return { color: "#dc2626", icon: "mdi:triangle-down" };
return false;

3. Escala de cor contínua

javascript
// A cor aceita qualquer notação de cor, então o degradê sai da conta.
const v = this.rowValues.filter(x => x !== null);
if (this.value === null || !v.length) return false;
const min = Math.min(...v), max = Math.max(...v);
const t = max === min ? 0.5 : (this.value - min) / (max - min);
return { background: `hsl(${Math.round(120 * t)} 70% 92%)` };

Enquanto escreve, o editor testa a regra contra células reais do seu próprio demonstrativo e mostra como o número ficaria. É o que transforma "não funcionou" em "devolveu isto".

NOTE

Só cor, fundo, marcas de texto e ícone atravessam. Tamanho, espaçamento e borda ficam de fora porque mudariam a métrica da tabela inteira a partir de uma célula, e o alinhamento entre linhas é o que faz um demonstrativo se ler.

WARNING

Uma regra em código que dá erro se desliga sozinha e o demonstrativo mostra o aviso na tela, com o nome da linha. Ele some quando a regra é corrigida.

Colunas especiais

A coluna de acumulado, a de AV% e a de variação têm aparência própria, tanto no nível do demonstrativo (Colunas especiais, no Ajuste fino) quanto dentro de uma linha (Colunas especiais nesta linha). Serve para deixar o acumulado de uma linha em destaque sem mexer nas outras.

A ordem de precedência, do mais fraco para o mais forte, é sempre a mesma:

modelo  <  espécie de linha  <  a linha  <  regra condicional

🖱️ Clicar num número

Clicar numa célula (com o botão esquerdo mesmo) abre o menu de ações daquele número:

  • Copiar Valor: o número como está na tela, já formatado
  • Copiar valor sem formatação: o número cru, para colar numa conta
  • Ver relatório deste número: abre o Relatório tabular com exatamente o recorte que produziu a célula (o campo da linha, o período da coluna e a pilha de filtros)
  • De onde vem este número: abre a decomposição
  • Copiar linha: a série inteira daquela linha, com cabeçalho
  • Copiar matriz: o demonstrativo inteiro

TIP

"Copiar linha" e "Copiar matriz" colam direto numa planilha, já em colunas, sem passar por arquivo. As colunas saem na mesma ordem em que estão na tela, incluindo acumulado e análises.

De onde vem este número

Ver relatório aparece nas linhas de medida, porque ali existe uma consulta que devolve aquele número. Numa linha de grupo ou de conta não existe: "Lucro Bruto" não é uma consulta, é aritmética. Para essas, a ação é De onde vem este número, que abre a decomposição:

  • Cada parcela aparece com o operador pelo qual entrou (+, , ×, ÷, ou não entra), e o rodapé repete o total, então dá para conferir a conta na hora
  • A parcela marcada como "não entra" também é listada. Escondê-la deixaria uma lista que não fecha com o total
  • Decompor desce numa parcela que também é composta, e o caminho percorrido fica clicável no topo
  • Ao chegar numa medida, a parcela ganha o botão Relatório e a descida acaba ali, porque é ali que o dado existe

Células de AV% e de variação não têm nenhuma das duas ações: elas são derivadas de outras duas células, que já as têm.


🔽 Abrir e fechar níveis

Toda linha que se desdobra (um grupo, ou uma medida quebrada por dimensão) ganha uma seta à esquerda do nome. Clicar abre e fecha.

O estado inicial se define em dois lugares:

  • Ao abrir a dashboard, no Ajuste fino da aparência: Tudo aberto, Só o primeiro nível aberto ou Tudo fechado
  • Começar fechado, dentro de um grupo específico, para aquele grupo nascer fechado independentemente do padrão

NOTE

Refiltrar a Dashboard não desfaz o que você abriu ou fechou à mão. As linhas vêm da configuração, não do dado, então trocar o mês não é motivo para colapsar o demonstrativo de volta.


⏳ Enquanto carrega, e o custo

Este é o Widget mais caro do produto. Cada linha de medida faz uma consulta por coluna, mais uma para o acumulado. Um demonstrativo de 30 linhas de medida com duas colunas e acumulado ligado são 120 consultas.

Duas consequências práticas:

  • Prefira poucas linhas largas abertas por dimensão a muitas linhas irmãs escritas à mão. Uma linha "Despesas comerciais" aberta por centro de custo é uma consulta; quinze linhas de centro de custo são quinze
  • Grupos e contas não custam nada: são aritmética sobre linhas já buscadas

Enquanto carrega, a tela mostra o progresso real (a porcentagem dos dados já carregados, não uma animação genérica). A matriz não desenha pela metade, de propósito: meio demonstrativo preenchido parece um demonstrativo pronto.

Depois de montado, editar nome, sinal, conta, cor ou análise não volta ao banco: só o que muda o recorte dos dados (campo, filtro, período, colunas, quebra) refaz as consultas.


⚠️ Quando o demonstrativo se recusa a desenhar

Se a montagem tiver erro (uma conta referenciando uma linha que não existe, um grupo vazio, uma linha de medida sem campo), a Matriz Composta não desenha e lista o que está errado, com o nome da linha. A barra lateral também mostra quantos ajustes estão pendentes, e clicar nela abre a tela de montagem.

Isso é diferente dos outros Widgets, e é deliberado. Num demonstrativo, uma linha que some deixa um resultado completo, internamente coerente e errado, e alguém toma decisão em cima dele. Erro visível é melhor que número plausível.

Quando aparece um traço

Uma célula com no lugar do número significa não foi possível calcular, e nunca zero.

O caso mais comum é uma margem num mês sem movimento: a receita é zero e a divisão não existe. Mostrar 0% ali seria pior, porque 0% de margem se lê como prejuízo operacional, enquanto o traço se lê como ausência de dado, que é o que de fato houve. Nesses meses o Acumulado continua mostrando a margem real do período inteiro.

O traço também aparece quando a linha depende de um campo que o seu acesso não alcança. Nesse caso só ela e quem depende dela ficam vazios; o resto do demonstrativo continua desenhado.


🚫 O que fica fora

  • Saldo acumulado (saldo inicial e final, caixa acumulado). Uma linha não consegue enxergar o período anterior. Isso é modelagem: materialize o saldo no ETL com função de janela. Lembre que o Acumulado é uma consulta sem agrupamento, então o saldo precisa de uma agregação que sobreviva a isso
  • Rateio de custo indireto. É política contábil, muda por exercício e precisa ser auditável: o lugar é o ETL
  • Subtotal de período no meio (Jan | Fev | Mar | 1º Tri | Abr…)
  • Barra de dados e escala de calor prontas. Numa matriz cujas linhas são grandezas diferentes (receita, número de colaboradores, margem), uma barra comparando células de linhas distintas não significa nada. A escala de calor, quando faz sentido dentro de uma linha, sai de uma regra em código de poucas linhas (exemplo 3 acima)
  • Colunas por categoria. O eixo horizontal é sempre tempo. Para categoria, use a Matriz