Introdução
Com o advento da migração do TOTVS Reports da versão 11.8x para as versões superiores a versão 12.1.4, muitas alterações foram feitas principalmente na geração sobre demanda dos dados vinculados a cada componente presente no relatório. Em relatórios da versão 11.8x, por exemplo, a geração sobre demanda dos dados era realizada no momento da impressão de cada componente, ao contrário dos das versões mais atuais (12.1.5 ou superiores), onde a geração dos dados é feita através de apenas uma consulta SQL (Fase de Preparação), que é gerada a partir das tabelas e consultas SQL vinculadas ao relatório. Ordenação / Quebra
O agrupamento de dados no TOTVS Reports da versão 12.1.5 ou superiores é realizado da seguinte maneira: 1 - O campo que vai ser a referência para o agrupamento (quebra), no caso IDBOLETO deverá estar contido na estrutura do relatório. Conforme a imagem abaixo:  Imagem 1 - Campo FLAN.IDBOLETO está contido no detalhe onde o agrupamento será aplicado.
 Imagem 2 - O agrupamento pelo campo FLAN.IDBOLETO foi aplicado com sucesso.
Informações |
---|
| Caso se utilize um campo IDBOLETO, por exemplo, porém de tabela diferente (FBOLETO.IDBOLETO, em vez de FLAN.IDBOLETO ), o agrupamento não será aplicado. Conforme imagem abaixo: |
 Imagem 3 - O campo FLAN.IDBOLETO não está contido na estrutura do relatório, em vez disso, o campo FBOLETO.IDBOLETO está presente em seu lugar, fazendo com que o agrupamento não seja aplicado.  Imagem 4 - O agrupamento pelo campo FLAN.IDBOLETO não foi aplicado.
Comportamento (Agrupamento Aplicado Corretamente)
Informações |
---|
icon | false |
---|
title | SQL (Agrupamento Aplicado) |
---|
| SELECT FLAN.IDBOLETO,FLAN.CODCOLIGADA,FLAN.IDLAN FROM FLAN FLAN (NOLOCK) WHERE (FLAN.CODCOLIGADA = 1) |
Observe que todos os campos da consulta apresentada acima (IDBOLETO, CODCOLIGADA, IDLAN) são pertencentes à tabela master FLAN. O Agrupamento é aplicado corretamente porque o campo referencia de agrupamento (quebra) foi preenchido no select gerado.  Imagem 5 - Dados Resultantes do SQL (Agrupamento Aplicado).
Internamente uma estrutura de dados é montada, vinculada a tabela FLAN, são utilizados os dados provenientes dessa tabela, para aplicar o agrupamento (quebra).  Imagem 6 - Estrutura de dados interna utilizada pelo agrupamento (quebra)
Comportamento (Agrupamento Não Aplicado)
Informações |
---|
icon | false |
---|
title | SQL (Agrupamento Não Aplicado) |
---|
| SELECT FLAN.CODCOLIGADA,FLAN.IDLAN,FBOLETO.IDBOLETO AS IDBOLETO_1965598223 FROM FLAN FLAN (NOLOCK) LEFT OUTER JOIN FLANBOLETO (NOLOCK) ON (FLANBOLETO.CODCOLIGADA = FLAN.CODCOLIGADA AND FLANBOLETO.IDLAN = FLAN.IDLAN ) LEFT OUTER JOIN FBOLETO (NOLOCK) ON (FBOLETO.CODCOLIGADA = FLANBOLETO.CODCOLIGADA AND FBOLETO.IDBOLETO = FLANBOLETO.IDBOLETO ) WHERE (FLAN.CODCOLIGADA = 1) |
Observe que os campos (CODCOLIGADA e IDLAN) são pertencentes a tabela FLAN, porém o campo IDBOLETO é pertencente a tabela FBOLETO.  Imagem 6 - Dados Resultantes do SQL (Agrupamento Não Aplicado).
Internamente duas estruturas de dados são montadas, uma para a tabela FLAN e outra para a tabela FBOLETO, porém o agrupamento (quebra) utiliza os dados provenientes apenas da tabela master FLAN (tabela vinculada ao detalhe), fazendo com que a quebra não utilize os valores provenientes da tabela FBOLETO, fazendo com que o agrupamento (quebra) não seja aplicado. Image Added Image Removed Imagem 7 - Estrutura de dados interna utilizada pelo agrupamento (quebra)
Conclusão
Conforme o que foi explicado anteriormente, ao configurar a Propriedade Ordenação / Quebra, adicione o campo referência do agrupamento, no caso explicado (FLAN.IDBOLETO);  Imagem 8 - No Cabeçalho do Detalhe escolha o campo referência de agrupamento.
Lembre-se de adicionar o campo de referência de agrupamento na estrutura do relatório. O campo em vermelho é o FBOLETO.IDBOLETO (apesar de ser o mesmo campo IDBOLETO, ele se encontra em uma tabela que não é master, não o utilize, pois a quebra não será aplicada)  Imagem 9 - Adicionar o campo referencia de agrupamento (FLAN.IDBOLETO) na estrutura do relatório.
|