СКД. Вставка разрыва страницы

21.08.12

Разработка - СКД

Столкнувшись с достаточно типовой проблемой при разработке отчетов на системе компоновки данных(СКД), вставка разрыва страницы в конце группировки, на форумах и в документации не нашел простого решения этой задачи. Пост-обработкой табличного документа заниматься не хотелось, хотя совсем этого избежать пока не удалось :) , поэтому было найдено не сложное решение которым я хочу с вами поделиться.

 

Столкнувшись с достаточно типовой проблемой при разработке отчетов на системе компоновки данных(СКД), вставка разрыва страницы после в конце группировки, на форумах и в документации не нашел простого решения этой задачи. Пост-обработкой табличного документа заниматься не хотелось, хотя совсем этого избежать пока не удалось :) , поэтому было найдено не сложное решение которым я хочу с вами поделиться.

Отчет будем формировать программно переопределив событие "ПриКомпоновкеРезультата"

 

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка=ЛОжь;

Настройки = КомпоновщикНастроек.ПолучитьНастройки();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

ПроцессорВывода.НачатьВывод();

ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Пока
ЭлементРезультата <> Неопределено Цикл
    Если
ЭлементРезультата.ЗначенияПараметров.Количество()=1 Тогда
            Если
ЭлементРезультата.ЗначенияПараметров[0].Значение = "Разорвать" Тогда
           
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
    КонецЕсли;
   
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
   
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();

 

Как вы видите здесь все шаблонно, весь фокус находится в анализе ЭлементРезультата, в нем нужно определить когда собсвенно резать. Как я это решил для себя:

В СКД был добавлен Параметр РазрывСтраницы с типом строка и заданным значением "Разорвать"

 

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

 

В настройка этой группировки я убрал Авто поля и вставил свой парметр РазрывСтраницы.

 

 

Далее для этой группировки сделал свой макет:

 

Чтобы сделать группировку не видимой я в настройках, для этой группировки установил условное оформление: цвета текста, фона, линий - белые.

На закладке Другие настройки установил: Тип макета - вертикально, Выводить отбор - не выводить.

Для чего все это было сделано, напомню кусочек кода:

 

    Если ЭлементРезультата.ЗначенияПараметров.Количество()=1 Тогда
            Если
ЭлементРезультата.ЗначенияПараметров[0].Значение = "Разорвать" Тогда
           
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
    КонецЕсли;

 

Для группировки ГруппировкаРазрыв у нас количество в коллекции ЗначенияПараметров будет равно 1. Всегда будет 1 параметр и его значение будет всегда равно нашей строке "Разорвать"  Благодаря этому и появляется выловить его при обходе результата. В пост обработки табличного документа придется удалить 2 последние строки, иначе у нас будет печататься пустая страница.

С уважение Петр Юрьевич Чечин


См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121612    670    389    

711

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

По выбранной схеме компоновки данных генерирует программный код, который генерирует СКД, аналогичную исходной схеме. Есть дополнительные инструменты для просмотра дерева схемы, сравнение исходной схемы и полученной по коду, а также сравнение изменений в сгенерированном коде для исходной схемы и для измененной.

3 стартмани

05.02.2024    4033    25    obmailok    17    

63

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

СКД на JavaScript в 1С

СКД WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8155    20    John_d    25    

123

Использование менеджера временных таблиц в СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    4651    PROSTO-1C    13    

61

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    5804    15    kalyaka    5    

86

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Простые приемы работы с отчетами на СКД. Что нужно знать пользователю про настройку отчетов, чтобы использовать их на полную катушку.

18.09.2023    6692    accounting_cons    5    

29

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Когда отчет надо разделить по страницам, это всегда проблема для разработчика. Поскольку в СКД нет стандартных вариантов, как это сделать. Нашел (на свой взгляд) самое простое и оптимальное решение.

01.09.2023    4517    KVIKS    15    

80
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
0. stoptime 400 30.10.11 14:22 Сейчас в теме
Столкнувшись с достаточно типовой проблемой при разработке отчетов на системе компоновки данных(СКД), вставка разрыва страницы в конце группировки, на форумах и в документации не нашел простого решения этой задачи. Пост-обработкой табличного документа заниматься не хотелось, хотя совсем этого избежать пока не удалось :) , поэтому было найдено не сложное решение которым я хочу с вами поделиться.


Перейти к публикации

MarMargo; user712426; Adineska; igor-tit; +4 Ответить
1. Boroda 90 30.10.11 15:39 Сейчас в теме
Спасибо за хорошую публикацию, но почему-то, как ни старался, не могу посмотреть картинки к ней. Вместо них - лишь рамка с красным крестиком
2. stoptime 400 30.10.11 19:23 Сейчас в теме
Не знаю , почему у тебя проблеммы с картинками у меня отображаются нормально.
3. max082 31.10.11 11:33 Сейчас в теме
stoptime, как раз искал решение такой задачи месяц назад. В итоге решил тупо пост-обработкой(. Ваш вариант интереснее!
user712426; +1 Ответить
4. stoptime 400 31.10.11 11:55 Сейчас в теме
Да я тоже раньше постобработкой справлялся, просто нужно было сделать серию отчетов, и не все достаточно простые, для разбора потом табличного документа. Вот и придумал этот фокус. Нужда заставляет нас творить чудеса
user712426; +1 Ответить
5. echo77 1868 31.10.11 17:26 Сейчас в теме
1С расчетные листки в ЗУПе постобработкой режет
user712426; +1 Ответить
6. Saipl 7 01.11.11 15:06 Сейчас в теме
А если в СКД в макете создать макет заголовка группировки для врачей, создать именную область макета в свойствах которой в группе Параграф указать "Начало страницы" ???
7. stoptime 400 01.11.11 18:51 Сейчас в теме
(6) Saipl, Пробовал. вставлять разрыв страницы в макете, настраивать параграф. Убирамть макет оформления. в нем кстате нельзя настроить Параграф. Вобщем я досточно пошарился по всему механизму работы с макетами. Все пробовал на платформе 8.2.13, надо будет посмотреть может в следующих они испавят это поведение
8. bulpi 215 03.11.11 11:40 Сейчас в теме
Все это здорово напоминает удаление гланд через задний проход. Виртуозно, да. А через рот не пробовали? ( в смысле, обязательно КАЖДЫЙ отчет делать в СКД? Это религия такая?)
9. dandrontiy 07.11.11 13:28 Сейчас в теме
Гениально просто. Это зачёт.
defini; igor-tit; +2 Ответить
10. Kesr 08.11.11 10:47 Сейчас в теме
Тоже думал над этой проблемой в СКД. Попробую такой вариант.
11. stoptime 400 08.11.11 20:07 Сейчас в теме
(10) Если получится что то добавить к придумке, сообщи. Статью расширим
12. marinelle 11.11.11 11:33 Сейчас в теме
Спасибо!!! хоть появился еще один вариант, кроме постобработки.
13. rusrus 50 26.02.12 12:46 Сейчас в теме
Гениально. Спасибо
igor-tit; +1 Ответить
14. lsp71 28.02.12 13:57 Сейчас в теме
Присоединяюсь к плюсующим. Спасибо за идею.
igor-tit; +1 Ответить
15. irenkaN 29.02.12 09:38 Сейчас в теме
Большое спасибо, вы очень помогли
igor-tit; +1 Ответить
16. chmod660 417 17.04.12 14:03 Сейчас в теме
спасибо за идею, воспользовался!
igor-tit; +1 Ответить
17. Armando 1399 16.07.12 18:28 Сейчас в теме
Спасибо
Что бы группировка-пустышка не выводилась я дописал чуть-чуть:
Если ЭлементРезультата.ЗначенияПараметров[0].Значение = "Разорвать" Тогда
	ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
	ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	Продолжить;
КонецЕсли;
user712426; igor-tit; rendalina; manaxov83; zqzq; KindLion; ERP-master; zus; alex15650; +9 Ответить
28. logarifm 1117 08.07.14 18:04 Сейчас в теме
(17) Armando,

можно и так

Пока ЭлементРезультата <> Неопределено Цикл
		Если ЭлементРезультата.ЗначенияПараметров.Количество() = 1 Тогда
			Если ЭлементРезультата.ЗначенияПараметров[0].Значение = Истина Тогда
				ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
			КонецЕсли;
		Иначе
			ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
		КонецЕсли;
		ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	КонецЦикла;


Показать
18. владимирп 25 16.07.12 18:34 Сейчас в теме
Все гениальное просто! Это надо взять на вооружение
igor-tit; +1 Ответить
19. www2000 58 21.08.12 10:49 Сейчас в теме
Спасибо, отличная идея!

Но в конце поста левая картинка с правилами обмена данными, или они сюда каким-то боком относятся.
20. stoptime 400 21.08.12 11:15 Сейчас в теме
(19) Это я на редактировал. правил 2 статьи сразу.
21. Den_D 54 21.08.12 17:39 Сейчас в теме
Голь на выдумки хитра) Автору большое спасибо!
igor-tit; +1 Ответить
22. AlexO 135 21.08.12 17:47 Сейчас в теме
Т.е. снова "пустышку" выводим?
Ничего в 1С не меняется... :(
23. vamleshka 13.09.12 14:29 Сейчас в теме
Спасибо за классную идею! буду пробовать ее реализовать
igor-tit; +1 Ответить
24. herfis 498 13.02.13 15:27 Сейчас в теме
Как уже было сказано выше, группировку-пустышку можно просто не выводить при поэлементном выводе отчета.
Это сразу несколько плюшек дает:
1) не выводится лишняя строка
2) отпадает необходимость настраивать оформление группировки-пустышки, обеспечивая её условную невидимость
3) а самое вкусное - не надо удалять строки с "хвостовым" разрывом строки. Т.к. после последнего разрыва теперь нет данных для вывода, то пустой лист не выгоняется.
igor-tit; +1 Ответить
25. pau74 83 02.06.13 20:32 Сейчас в теме
Спасибо за идею.
Можно перед выводом элементов, найти в схеме компоновки данных макет, в котором присутствует нужный параметр и далее в цикле проверять, что в элементе результата содержится этот макет.
user712426; igor-tit; +2 Ответить
37. igor-tit 1 20.02.17 22:22 Сейчас в теме
(25) Имена Макетов в СКД "Макет1", "Макет2" и т.д. НЕ совпадут и похожими именами макетов при выводе. Порядковые номера макетов в СКД завися от порядка их создания, а номера макетов при выводе связаны с порядком Группировок в структуре отчета.
user712426; +1 Ответить
26. oafan 27 26.07.13 10:59 Сейчас в теме
Замечу следующее: если требуется выводить итоги к группировки (в вашем случае направивший врач) - то разделитель некорректно выводится. Мои рекомендации - в макете, где выводятся итоги (в вашем случае итогов нет, но в это относится к параметру "РазрывСтраницы" см. рис) слово итоги сделать параметром, а параметр можно заполнять в параметрах макета.
Прикрепленные файлы:
27. zus 33 18.08.13 20:10 Сейчас в теме
Гениально и просто! Спасибо за публикацию!
29. kosmius 7 12.12.14 15:12 Сейчас в теме
//аналогично настройкам масштаба «по ширине страницы»

МОжно подробней...? нету такого свойства у ТабДока.... и негде нету об этом ( как зделать чтобы при печати по умолчанию стояла "по ширине страницы"???
30. stoptime 400 16.12.14 00:40 Сейчас в теме
(29) Тебе наверное здесь спрашивать нужно было http://infostart.ru/public/83627/ . Табличный документ имеет свойства АвтоМасштаб. А по ширине страницы это в настройках печати нужно смотреть. а не в свойствах элемента.(меню файл, параметры страницы)
31. victory 09.05.15 08:53 Сейчас в теме
Спасибо за статью!
Чтобы не терять расшифровки добавил бы:

ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровки);
user1253859; Diks_Soft; igor-tit; rendalina; steve77; +5 Ответить
32. Kamikadze 46 10.08.15 09:37 Сейчас в теме
Спасибо за идею. С СКД в полной мере начинаю только работать. Механизм рабочий, даже скажу больше - делит на печатные страницы отлично.
igor-tit; +1 Ответить
33. AndroidRu 3 01.02.16 15:21 Сейчас в теме
Хорошее решение.
igor-tit; +1 Ответить
34. sank84 03.10.16 08:30 Сейчас в теме
35. stoptime 400 04.10.16 16:21 Сейчас в теме
удивляюсь что все еще актуально. :)
MarMargo; user712426; igor-tit; +3 Ответить
38. igor-tit 1 23.02.17 01:10 Сейчас в теме
Спасибо. Очень к стати публикация.
39. NatalyaVP 15.05.17 08:56 Сейчас в теме
Здравствуйте.
Подскажите, а в какую часть модуля нужно вставить процедуру "ПриКомпоновкеРезультата"?
Я сделала всё как описано, но ничего не получилось, программа просто не заходит в процедуру "Процедура ПриКомпоновкеРезультата".
40. herfis 498 15.05.17 09:41 Сейчас в теме
(39) Это событие объекта "Отчет". Соответственно - в модуль отчета (не формы).
41. NatalyaVP 15.05.17 09:57 Сейчас в теме
Что значит "программно переопределив событие "ПриКомпоновкеРезультата""?
Как это сделать?
Я скопировала полностью процедуру "ПриКомпоновкеРезультата" , вставила её в модуль отчета, но программа туда не заходит.
Наверно, нужно что-то ещё написать. Подскажите, пожалуйста.
Спасибо.
42. herfis 498 15.05.17 10:19 Сейчас в теме
(41)
1) Может и заходит. Если клиент-сервер, то без перевода сервера в отладочный режим серверный модуль отладить не получится
2) Да нет, копирования должно быть достаточно. Для переопределения события объекта (не формы) достаточно правильной сигнатуры процедуры.
Для очистки совести можете в конфигураторе в модуле нажать Ctrl+Alt+P. Если "ПриКомпоновкеРезультата" будет в угловых скобках в конце списка - значит, не переопределилась (ошибка в названии или списке параметров). Ну или удалить всю вашу писанину и выбрать событие в угловых скобках из списка процедур/событий. Тогда конфигуратор сам переопределит событие, а вы внутрь скопируете все остальное.
3) честно говоря, судя по уровню знаний, у вас в чем угодно может быть затык. В таких случаях бывает сложно удаленно диагностировать :)
BelskyAV; +1 Ответить
44. NatalyaVP 15.05.17 12:18 Сейчас в теме
(42), " в модуле нажать Ctrl+Alt+P. Если "ПриКомпоновкеРезультата"" - я так и делаю. Не заходит программа в процедуру "ПриКомпоновкеРезультата".
43. NatalyaVP 15.05.17 11:58 Сейчас в теме
Я делаю согласно написанной инструкции, значит этот метод не ко всем отчетам подходит, либо инструкция так написана.
Уровень знаний у меня нормальный, с скд только сейчас столкнулась.
46. user_2010 871 29.01.18 12:04 Сейчас в теме
Большое спасибо за статью!
Выручила!

сама не пробовала, но подумалось, чтобы не устанавливать цвет белый, может быть можно сделать пустым значение поля?
вот так:
   Если ЭлементРезультата.ЗначенияПараметров.Количество()=1 Тогда
            Если ЭлементРезультата.ЗначенияПараметров[0].Значение = "Разорвать" Тогда

ЭлементРезультата.ЗначенияПараметров[0].Значение = "";
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
    КонецЕсли;

или так нельзя изменять?
47. herfis 498 29.01.18 14:20 Сейчас в теме
(46) Читай комментарии. Смотри (17), (24), (28)
Я делал так:

	
ПроцессорВывода.НачатьВывод();
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Пока ЭлементРезультата <> Неопределено Цикл
	Если ЭлементРезультата.ЗначенияПараметров.Количество() = 1 И ЭлементРезультата.ЗначенияПараметров[0].Значение = "РазрывСтраницы" Тогда
		ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
	Иначе	
		ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
	КонецЕсли;
	ЭлементРезультата = ПроцессорКомпоновки.Следующий();
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
Показать
48. user_2010 871 29.01.18 14:23 Сейчас в теме
49. Elected 20 31.01.18 10:08 Сейчас в теме
Разрыв страницы работает только, если отчет "нарисован" в макете?
50. Elected 20 31.01.18 11:03 Сейчас в теме
В таблице разделитель страниц не работает, но зато правильно расставляет параметр в группировке.
Прикрепленные файлы:
51. BelskyAV 28.11.18 19:24 Сейчас в теме
52. keyn5565` 18 04.02.19 09:28 Сейчас в теме
каряво работает, пол документа выводит разрыв другую половину нет
53. oafan 27 04.02.19 09:52 Сейчас в теме
(52) Отчет можно посмотреть?
54. keyn5565` 18 06.02.19 13:03 Сейчас в теме
(53)
либо я запутался
либо отчет криво написал
пытался вместо параметра сделать через вычисляемое поле, результат тот же
Прикрепленные файлы:
ЗП_ЛичнаяКарточкаСотрудникаСКД.erf
55. oafan 27 06.03.19 16:25 Сейчас в теме
(54)Или закомментируйте Э
лементРезультата = ПроцессорКомпоновки.Следующий();:
Для каждого Стр из ЭлементРезультата.ЗначенияПараметров Цикл
		Если Стр.Значение = "Разорвать" Тогда
			ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
			//ЭлементРезультата = ПроцессорКомпоновки.Следующий();
			Выведена = истина;
			//Продолжить;
		КонецЕсли;
КонецЦикла;
		
Если выведена Тогда
	Продолжить	
КонецЕсли;

или без 
Если выведена Тогда
	Продолжить	
КонецЕсли;
Показать
56. keyn5565` 18 11.03.19 08:56 Сейчас в теме
(55)
Спасибо что откликнулись!
уже разобрался
проблема была в моей невнимательности
просто не указал
СтандартнаяОбработка = Ложь
в начале процедуры вывода
57. timurhv 30.07.19 01:08 Сейчас в теме
Если нельзя вклиниться в типовой вывод, можно использовать еще один велосипед в дополнение к статье:

КонечнаяОбласть = ДокументРезультат.НайтиТекст("Разорвать");
Если КонечнаяОбласть <> Неопределено Тогда
	пТабличныйДокумент1 = Новый ТабличныйДокумент;
	пТабличныйДокумент2 = Новый ТабличныйДокумент;
	пТабличныйДокумент1.Вывести(ДокументРезультат.ПолучитьОбласть("R1:R" + Формат(КонечнаяОбласть.Верх - 1,"ЧГ=")));
	пТабличныйДокумент2.Вывести(ДокументРезультат.ПолучитьОбласть("R" + Формат(КонечнаяОбласть.Верх + 1,"ЧГ=") + ":R" + Формат(ДокументРезультат.ВысотаТаблицы,"ЧГ=")));
	
	ДокументРезультат.Очистить();
	ДокументРезультат.Вывести(пТабличныйДокумент1);
	ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
	ДокументРезультат.Вывести(пТабличныйДокумент2);
КонецЕсли;
Показать


P.S: это пример деления на 2 части, можно переделать под массив
58. axelerleo 338 21.06.20 18:20 Сейчас в теме
Всем привет.
нашел, мне кажется, достаточно элегантное решение - в процедуре при компоновке, после вывода отчета, пишем

Для Инд = 1 по ДокументРезультат.ВысотаТаблицы Цикл
		Если ДокументРезультат.Область(Инд, 1).Текст = "ЭтоРазрывСтраницы" Тогда
			ДокументРезультат.Область("R"+Инд).КонецСтраницы = Истина;
			ДокументРезультат.Область(Инд, 1).Текст = "";
		КонецЕсли;	
	КонецЦикла;

Поэлементный вывод мне не подошел, т.к. СКД отказалась так выводить отчет с диаграммами.
Может, кому пригодится
SagittariusA; user712426; stoptime; +3 Ответить
59. Jungle Murzik 16.04.21 11:00 Сейчас в теме
Чтобы не добавлять лишние элементы в структуру, добавил параметр в макет к остальным параметрам и поправил код
ПроцессорВывода.НачатьВывод();
	
	ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	Пока ЭлементРезультата <> Неопределено Цикл
		
		//Если ЭлементРезультата.ЗначенияПараметров.Количество()=1 Тогда
		//	Если ЭлементРезультата.ЗначенияПараметров[0].Значение = "РазрывСтраницы" Тогда
		//		ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
		//	КонецЕсли;
		//КонецЕсли;
		
		ВывестиРазделитель = Ложь;
		Для Каждого _п из ЭлементРезультата.ЗначенияПараметров Цикл
			Если _п.Значение = "РазрывСтраницы" Тогда
				_п.Значение = "";//Очистить служебный текст
				ВывестиРазделитель = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		
		ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
		
		Если ВывестиРазделитель Тогда
			ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ЭлементРезультата = ПроцессорКомпоновки.Следующий();
		
	КонецЦикла;
	ПроцессорВывода.ЗакончитьВывод();
Показать

Во вложении в отчете не выводится текст "РазделительСтраниц"
Прикрепленные файлы:
user1233720; stoptime; +2 Ответить
60. user930087 11.02.23 01:02 Сейчас в теме
сделал как все описано в статье
сделал все как указано - выводит ошибку
Синтаксическая ошибка
{ОбщийМодуль.ВариантыОтчетов.Модуль(1755)}:ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);
{ОбщийМодуль.ВариантыОтчетов.Модуль(2801)}:Формирование = СформироватьОтчет(Параметры, Ложь, Ложь);
{(1)}:ВариантыОтчетов.СформироватьОтчетВФоне(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5276)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1370)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(603)}:ВызватьПроцедуру(ИмяПроцедуры, ПараметрыЭкспортнойПроцедуры);
{ОбщаяФорма.ФормаОтчета.Форма(1530)}:Результат = ДлительныеОперации.ВыполнитьВФоне(

по причине:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
Синтаксическая ошибка
по причине:
Ошибка компоновки макета
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка
В макетах помимо разрыва указано - Отчет: Заголовок и область начало и конец ячеек.
Если удалить Отчет: Заголовок то ошибку не выдает но не формирует ничего
ОтчетОбъект.ОпределитьНастройкиФормы(Неопределено, КлючВарианта, НастройкиОтчета);
метод не обнаружен ОпределитьНастройкиФормы
выдает синтаксическую ошибку - ошибка в выражении при компоновке макета. Но без разрыва никаких ошибок нет.
и почему-то сохраняешь значение ячейки для разрыва, а оно затем все равно само меняется)))
61. HIVvich 14.06.23 11:47 Сейчас в теме
Актуально и сейчас, спасибо за статью!
62. svbel85 56 30.08.23 18:22 Сейчас в теме
Тоже помогло, спасибо. Как бы еще сделать если нужно несколько группировок вывести - заранее неопределенного размера. Чтоб они по страницам не прыгали ...
63. user744718 03.01.24 18:04 Сейчас в теме
Все получилось с первого раза, спасибо большое!
Оставьте свое сообщение