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

21.08.12

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

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

 

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

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

 

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

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

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

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

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

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

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

 

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

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

 

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

 

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

 

 

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

 

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

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

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

 

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

 

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

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


Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

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

16500 руб.

02.09.2020    244607    1340    419    

1122

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    4660    260    shapa_pro    25    

63

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    15200    ovetgana    112    

105

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    8949    krasnoshchekovpavel    5    

66

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    8170    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    15369    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    12984    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    9385    AlexeyPROSTO_1C    1    

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


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

MarMargo; katod1985; Adineska; igor-tit; +4 Ответить
1. Boroda 90 30.10.11 15:39 Сейчас в теме
Спасибо за хорошую публикацию, но почему-то, как ни старался, не могу посмотреть картинки к ней. Вместо них - лишь рамка с красным крестиком
2. stoptime 411 30.10.11 19:23 Сейчас в теме
Не знаю , почему у тебя проблеммы с картинками у меня отображаются нормально.
3. max082 31.10.11 11:33 Сейчас в теме
stoptime, как раз искал решение такой задачи месяц назад. В итоге решил тупо пост-обработкой(. Ваш вариант интереснее!
katod1985; +1 Ответить
4. stoptime 411 31.10.11 11:55 Сейчас в теме
Да я тоже раньше постобработкой справлялся, просто нужно было сделать серию отчетов, и не все достаточно простые, для разбора потом табличного документа. Вот и придумал этот фокус. Нужда заставляет нас творить чудеса
katod1985; +1 Ответить
5. echo77 1937 31.10.11 17:26 Сейчас в теме
1С расчетные листки в ЗУПе постобработкой режет
katod1985; +1 Ответить
6. Saipl 7 01.11.11 15:06 Сейчас в теме
А если в СКД в макете создать макет заголовка группировки для врачей, создать именную область макета в свойствах которой в группе Параграф указать "Начало страницы" ???
7. stoptime 411 01.11.11 18:51 Сейчас в теме
(6) Saipl, Пробовал. вставлять разрыв страницы в макете, настраивать параграф. Убирамть макет оформления. в нем кстате нельзя настроить Параграф. Вобщем я досточно пошарился по всему механизму работы с макетами. Все пробовал на платформе 8.2.13, надо будет посмотреть может в следующих они испавят это поведение
8. bulpi 218 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 411 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 1402 16.07.12 18:28 Сейчас в теме
Спасибо
Что бы группировка-пустышка не выводилась я дописал чуть-чуть:
Если ЭлементРезультата.ЗначенияПараметров[0].Значение = "Разорвать" Тогда
	ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
	ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	Продолжить;
КонецЕсли;
katod1985; igor-tit; rendalina; manaxov83; zqzq; KindLion; ERP-master; zus; alex15650; +9 Ответить
28. logarifm 1130 08.07.14 18:04 Сейчас в теме
(17) Armando,

можно и так

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


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

Но в конце поста левая картинка с правилами обмена данными, или они сюда каким-то боком относятся.
20. stoptime 411 21.08.12 11:15 Сейчас в теме
(19) Это я на редактировал. правил 2 статьи сразу.
21. Den_D 54 21.08.12 17:39 Сейчас в теме
Голь на выдумки хитра) Автору большое спасибо!
igor-tit; +1 Ответить
22. AlexO 136 21.08.12 17:47 Сейчас в теме
Т.е. снова "пустышку" выводим?
Ничего в 1С не меняется... :(
23. vamleshka 13.09.12 14:29 Сейчас в теме
Спасибо за классную идею! буду пробовать ее реализовать
igor-tit; +1 Ответить
24. herfis 522 13.02.13 15:27 Сейчас в теме
Как уже было сказано выше, группировку-пустышку можно просто не выводить при поэлементном выводе отчета.
Это сразу несколько плюшек дает:
1) не выводится лишняя строка
2) отпадает необходимость настраивать оформление группировки-пустышки, обеспечивая её условную невидимость
3) а самое вкусное - не надо удалять строки с "хвостовым" разрывом строки. Т.к. после последнего разрыва теперь нет данных для вывода, то пустой лист не выгоняется.
igor-tit; +1 Ответить
25. pau74 87 02.06.13 20:32 Сейчас в теме
Спасибо за идею.
Можно перед выводом элементов, найти в схеме компоновки данных макет, в котором присутствует нужный параметр и далее в цикле проверять, что в элементе результата содержится этот макет.
katod1985; igor-tit; +2 Ответить
37. igor-tit 1 20.02.17 22:22 Сейчас в теме
(25) Имена Макетов в СКД "Макет1", "Макет2" и т.д. НЕ совпадут и похожими именами макетов при выводе. Порядковые номера макетов в СКД завися от порядка их создания, а номера макетов при выводе связаны с порядком Группировок в структуре отчета.
katod1985; +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 411 16.12.14 00:40 Сейчас в теме
(29) Тебе наверное здесь спрашивать нужно было http://infostart.ru/public/83627/ . Табличный документ имеет свойства АвтоМасштаб. А по ширине страницы это в настройках печати нужно смотреть. а не в свойствах элемента.(меню файл, параметры страницы)
31. victory 09.05.15 08:53 Сейчас в теме
Спасибо за статью!
Чтобы не терять расшифровки добавил бы:

ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровки);
Archi3670; EbyMixa; Diks_Soft; igor-tit; rendalina; steve77; +6 Ответить
32. Kamikadze 46 10.08.15 09:37 Сейчас в теме
Спасибо за идею. С СКД в полной мере начинаю только работать. Механизм рабочий, даже скажу больше - делит на печатные страницы отлично.
igor-tit; +1 Ответить
33. AndroidRu 4 01.02.16 15:21 Сейчас в теме
Хорошее решение.
igor-tit; +1 Ответить
34. sank84 03.10.16 08:30 Сейчас в теме
35. stoptime 411 04.10.16 16:21 Сейчас в теме
удивляюсь что все еще актуально. :)
MarMargo; katod1985; igor-tit; +3 Ответить
38. igor-tit 1 23.02.17 01:10 Сейчас в теме
Спасибо. Очень к стати публикация.
39. NatalyaVP 15.05.17 08:56 Сейчас в теме
Здравствуйте.
Подскажите, а в какую часть модуля нужно вставить процедуру "ПриКомпоновкеРезультата"?
Я сделала всё как описано, но ничего не получилось, программа просто не заходит в процедуру "Процедура ПриКомпоновкеРезультата".
40. herfis 522 15.05.17 09:41 Сейчас в теме
(39) Это событие объекта "Отчет". Соответственно - в модуль отчета (не формы).
41. NatalyaVP 15.05.17 09:57 Сейчас в теме
Что значит "программно переопределив событие "ПриКомпоновкеРезультата""?
Как это сделать?
Я скопировала полностью процедуру "ПриКомпоновкеРезультата" , вставила её в модуль отчета, но программа туда не заходит.
Наверно, нужно что-то ещё написать. Подскажите, пожалуйста.
Спасибо.
42. herfis 522 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 1032 29.01.18 12:04 Сейчас в теме
Большое спасибо за статью!
Выручила!

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

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

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

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

или без 
Если выведена Тогда
	Продолжить	
КонецЕсли;
Показать
56. keyn5565` 19 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 325 21.06.20 18:20 Сейчас в теме
Всем привет.
нашел, мне кажется, достаточно элегантное решение - в процедуре при компоновке, после вывода отчета, пишем

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

Поэлементный вывод мне не подошел, т.к. СКД отказалась так выводить отчет с диаграммами.
Может, кому пригодится
SagittariusA; katod1985; 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 79 30.08.23 18:22 Сейчас в теме
Тоже помогло, спасибо. Как бы еще сделать если нужно несколько группировок вывести - заранее неопределенного размера. Чтоб они по страницам не прыгали ...
63. user744718 03.01.24 18:04 Сейчас в теме
Все получилось с первого раза, спасибо большое!
Для отправки сообщения требуется регистрация/авторизация