Имя: Пароль:
1C
1С v8
Как вывести повторяющиеся строки на одной странице в макете
0 Штурман
 
15.11.13
15:40
В результате работы запроса есть повторяющиеся строки, пример:

Иванов
Иванов
Петров

Эти строки выводятся в макет, каждая строка на отдельной странице, как-то так:

Пока Выборка.Следующий() Цикл
    ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;

Однако при таком подходе каждая строка выводится на отдельной странице.

Как на одной странице вывести дубликаты?

Т.е. на одной странице выводим двух Ивановых, а на следующей Петрова.
1 Fram
 
15.11.13
15:50
Элементарная задачка. В чем сложность?
2 Штурман
 
15.11.13
15:52
(1) Просвяти штоль?
3 Fram
 
15.11.13
15:57
Для начала отсортируй результат запроса по фамилии. Дальше рассказывать?
4 bolobol
 
15.11.13
15:57
По моему, вся проблема в макете - в нём разрыв страницы выводится после каждой фамилии. Разве нет? Доработайте макет и всё станет пучком.
5 bolobol
 
15.11.13
16:00
Описание для ТабличныйДокумент.Вывести:

Выводит табличный документ в результирующий табличный документ, добавляя его со следующей строки вслед за самой нижней выведенной строкой, начиная с первой колонки.

- нигде не написано про новую строку
- в примере (0) тоже нет разделения на страницы
= разрыв страницы в ОбластьМакета
6 Штурман
 
15.11.13
16:01
(4) Ага, после каждой фамилии, чет не врублю как вывести дубликаты на одной странице
7 Штурман
 
15.11.13
16:02
(5) А в типовых конфах есть пример подобного вывода в макет дубликатов?
8 bolobol
 
15.11.13
16:14
(6) В макете ещё нет фамилий, там только Параметр, куда выводится Фамилия. А вместе с этим параметром в макете усановлен разрыв страницы, скорее всего. Иначе, из приведённого текста в (0) не понять.
Кстати, не совсем понял, почему в цикле нет самого заполнения параметра? Фамилии же в выборке должны быть, разве нет?

(7) И забудьте о выводе дубликатов. Есть понятие - вывести разрыв страницы. То есть, когда все одинаковые фамилии добавите на страницу - выводится отдельно разрыв страницы, например.
9 samozvanec
 
15.11.13
16:14
(7) Если НЕ Дубликат Тогда
ВставитьРазделитель();
КонецЕсли;
10 Штурман
 
15.11.13
16:32
Всем спасибо, попробую :)
11 Штурман
 
19.11.13
12:22
Пишу:

Пока Выборка.Следующий() Цикл
      ОбластьМакета.Параметры.ФИО = Выборка.ФИО;
      ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;

Как тут вообще 2 дубликата на одной странице поместить?
12 Штурман
 
19.11.13
12:24
Пробовал через условие Если... и

Выборка.НайтиСледующий(

Так вообще не находит дубликатов
13 User_Agronom
 
19.11.13
12:28
Всё грустно, однако.
Даже не знаю как подсказать автору.
(3) Это удалось сделать? Как проверили?
14 Штурман
 
19.11.13
12:50
Пока Выборка.Следующий() цикл
        ф = Выборка.ФИО;
        Если ф = Выборка.НайтиСледующий(ф, "ФИО") тогда
            сообщить(Выборка.ФИО);
        иначе
            сообщить("----------------");
        конецесли;
    конеццикла;
15 Штурман
 
19.11.13
14:48
^
16 hhhh
 
19.11.13
15:08
(14) ПоследняяФИО = "";
  Пока Выборка.Следующий() цикл
        Если Выборка.ФИО <> ПоследняяФИО тогда
           Сообщить("перевод страницы");
        КонецЕсли;
      ПоследняяФИО = Выборка.ФИО;
      сообщить(Выборка.ФИО);
    конеццикла;
17 Штурман
 
19.11.13
15:39
(16) Спасибо, так просто оказалось :)
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.