<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.kint.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%BD%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%281Cv8%29</id>
	<title>Механизм многоколоночной печати (1Cv8) - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.kint.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%BD%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_%281Cv8%29"/>
	<link rel="alternate" type="text/html" href="http://wiki.kint.ru/index.php?title=%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%BD%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_(1Cv8)&amp;action=history"/>
	<updated>2026-05-15T10:13:21Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.31.15</generator>
	<entry>
		<id>http://wiki.kint.ru/index.php?title=%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%BD%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_(1Cv8)&amp;diff=87553&amp;oldid=prev</id>
		<title>Дмитрий Малюгин: /* Тесты механизма: */</title>
		<link rel="alternate" type="text/html" href="http://wiki.kint.ru/index.php?title=%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%BD%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_(1Cv8)&amp;diff=87553&amp;oldid=prev"/>
		<updated>2024-12-03T15:59:33Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Тесты механизма:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 15:59, 3 декабря 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l198&quot; &gt;Строка 198:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 198:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Макет, используемый для печати:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Макет, используемый для печати:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Файл:Макет многоколоночной печати 1.png]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=1C&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=1C&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Дмитрий Малюгин</name></author>
		
	</entry>
	<entry>
		<id>http://wiki.kint.ru/index.php?title=%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%BD%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_(1Cv8)&amp;diff=21558&amp;oldid=prev</id>
		<title>Павел Лазарев: Новая страница: «Категория:Примеры кода 1С  ==Задача== Иногда возникает задача печати &quot;в несколько колонок&quot;...»</title>
		<link rel="alternate" type="text/html" href="http://wiki.kint.ru/index.php?title=%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%BD%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8_(1Cv8)&amp;diff=21558&amp;oldid=prev"/>
		<updated>2010-10-07T06:12:35Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&lt;a href=&quot;/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%BA%D0%BE%D0%B4%D0%B0_1%D0%A1&quot; title=&quot;Категория:Примеры кода 1С&quot;&gt;Категория:Примеры кода 1С&lt;/a&gt;  ==Задача== Иногда возникает задача печати &amp;quot;в несколько колонок&amp;quot;...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Категория:Примеры кода 1С]]&lt;br /&gt;
&lt;br /&gt;
==Задача==&lt;br /&gt;
Иногда возникает задача печати &amp;quot;в несколько колонок&amp;quot;, то есть подобно тому как верстаются газеты/журналы. &lt;br /&gt;
&lt;br /&gt;
При этом на одной странице может быть 2-3-.. колонок данных, причем группировки/детальные данные сначала идут сверху вниз по первой колонке, потом продолжаются на второй колонке и так далее.&lt;br /&gt;
&lt;br /&gt;
Вроде бы простая с точки зрения клиента вещь, но встроенными средствами 1С это сделать нельзя. СКД тоже не умеет так делать. Клиенту это нужно для экономии бумаги и создания очень &amp;quot;плотных&amp;quot; документов типа графиков, прайсов и так далее.&lt;br /&gt;
&lt;br /&gt;
Такую печать можно сделать &amp;quot;руками&amp;quot;, но код получается очень запутанный и каждый раз новый.&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
* [http://www.infostart.ru/public/19979/files/ Печать прайс-листа в две колонки]&lt;br /&gt;
&lt;br /&gt;
==Механизм==&lt;br /&gt;
&lt;br /&gt;
Все кардинально упрощается, если разделить задачу на две части - группировку данных и собственно печать.&lt;br /&gt;
&lt;br /&gt;
Функция группировки получает на вход таблицу данных и создает таблицу значений, подготовленную для печати - для каждой строки уже задан номер колонки, номер страницы, имя группировки.&lt;br /&gt;
&lt;br /&gt;
Процедура печати просто читает построчно подготовленную таблицу и формирует колонки. При смене страницы выводятся все сформированные колонки.&lt;br /&gt;
&lt;br /&gt;
Механизм универсальный, работает с любыми группировками данных и любым количеством колонок.&lt;br /&gt;
&lt;br /&gt;
===Код механизма:===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=1C&amp;gt;&lt;br /&gt;
// Функция выполняет группировку таблицы данных для многоколоночной печати &lt;br /&gt;
//&lt;br /&gt;
// Параметры&lt;br /&gt;
// 	тзДанные - &lt;br /&gt;
// 	тзГруппировки -&lt;br /&gt;
// 	СтрокНаСтранице -&lt;br /&gt;
// 	КолонокНаСтранице -&lt;br /&gt;
//&lt;br /&gt;
// Возвращаемое значение: &lt;br /&gt;
// 	- сгруппированная таблица данных&lt;br /&gt;
//&lt;br /&gt;
Функция МногоколоночнаяГруппировкаТаблиц(тзДанные, тзГруппировки, СтрокНаСтранице, КолонокНаСтранице) Экспорт &lt;br /&gt;
	тзРезультат = тзДанные.СкопироватьКолонки();&lt;br /&gt;
	тзРезультат.Колонки.Добавить(&amp;quot;НомерСтраницы&amp;quot;);&lt;br /&gt;
	тзРезультат.Колонки.Добавить(&amp;quot;НомерКолонки&amp;quot;);&lt;br /&gt;
	тзРезультат.Колонки.Добавить(&amp;quot;НомерСтроки&amp;quot;);&lt;br /&gt;
	тзРезультат.Колонки.Добавить(&amp;quot;НомерСтрокиВКолонке&amp;quot;);&lt;br /&gt;
	тзРезультат.Колонки.Добавить(&amp;quot;ИмяГруппировки&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	стПараметры = Новый Структура(&amp;quot;СтрокНаСтранице,КолонокНаСтранице,НомерСтроки,НомерКолонки,НомерСтраницы,НомерСтрокиВКолонке&amp;quot;,&lt;br /&gt;
		СтрокНаСтранице, КолонокНаСтранице, 0, 0, 0, 0);&lt;br /&gt;
	&lt;br /&gt;
	ВывестиГруппировку(тзГруппировки, 0, тзДанные, тзРезультат, стПараметры);&lt;br /&gt;
	&lt;br /&gt;
	Возврат тзРезультат;&lt;br /&gt;
КонецФункции&lt;br /&gt;
&lt;br /&gt;
Процедура ВывестиГруппировку(тзГруппировки, УровеньГруппировки, тзДанные, тзРезультат, стПараметры)&lt;br /&gt;
	Если УровеньГруппировки &amp;gt;= тзГруппировки.Количество() Тогда&lt;br /&gt;
		Возврат;&lt;br /&gt;
	КонецЕсли; &lt;br /&gt;
	ИмяГруппировки = тзГруппировки[УровеньГруппировки].ИмяГруппировки;&lt;br /&gt;
	&lt;br /&gt;
	Если ИмяГруппировки = &amp;quot;Заголовок&amp;quot; Тогда&lt;br /&gt;
		ВывестиСтрокуГруппировки(тзГруппировки, УровеньГруппировки, Новый Структура, тзРезультат, стПараметры);&lt;br /&gt;
		ВывестиГруппировку(тзГруппировки, УровеньГруппировки + 1, тзДанные, тзРезультат, стПараметры);&lt;br /&gt;
		Возврат;&lt;br /&gt;
	КонецЕсли; &lt;br /&gt;
	&lt;br /&gt;
	тзЗначенияГруппировки = тзДанные.Скопировать();&lt;br /&gt;
	Если УровеньГруппировки &amp;lt; тзГруппировки.Количество() - 1  Тогда&lt;br /&gt;
		тзЗначенияГруппировки.Свернуть(ИмяГруппировки);&lt;br /&gt;
	Иначе&lt;br /&gt;
		тзЗначенияГруппировки.Сортировать(ИмяГруппировки);&lt;br /&gt;
	КонецЕсли; &lt;br /&gt;
	&lt;br /&gt;
	Для каждого строкаГруппировка из тзЗначенияГруппировки  Цикл&lt;br /&gt;
		тзСтроки = тзДанные.СкопироватьКолонки();&lt;br /&gt;
		мзСтроки = тзДанные.НайтиСтроки(Новый Структура(ИмяГруппировки, строкаГруппировка[ИмяГруппировки]));&lt;br /&gt;
		Для каждого строка из мзСтроки  Цикл&lt;br /&gt;
			новаяСтрока = тзСтроки.Добавить();&lt;br /&gt;
			ЗаполнитьЗначенияСвойств(новаяСтрока, строка);&lt;br /&gt;
		КонецЦикла;&lt;br /&gt;
		ВывестиСтрокуГруппировки(тзГруппировки, УровеньГруппировки, строкаГруппировка, тзРезультат, стПараметры);&lt;br /&gt;
		ВывестиГруппировку(тзГруппировки, УровеньГруппировки + 1, тзСтроки, тзРезультат, стПараметры);&lt;br /&gt;
	КонецЦикла;&lt;br /&gt;
	&lt;br /&gt;
КонецПроцедуры&lt;br /&gt;
&lt;br /&gt;
Процедура ВывестиСтрокуГруппировки(тзГруппировки, УровеньГруппировки, строкаГруппировка, тзРезультат, стПараметры)&lt;br /&gt;
	новаяСтрока = тзРезультат.Добавить();&lt;br /&gt;
	ЗаполнитьЗначенияСвойств(новаяСтрока, строкаГруппировка);&lt;br /&gt;
	строкВМакетеГруппировки = тзГруппировки[УровеньГруппировки].КоличествоСтрок;&lt;br /&gt;
	&lt;br /&gt;
	Если стПараметры.НомерСтрокиВКолонке + строкВМакетеГруппировки &amp;gt; стПараметры.СтрокНаСтранице Тогда&lt;br /&gt;
		стПараметры.НомерСтрокиВКолонке = 0;&lt;br /&gt;
		стПараметры.НомерКолонки = стПараметры.НомерКолонки + 1;&lt;br /&gt;
		Если стПараметры.НомерКолонки = стПараметры.КолонокНаСтранице Тогда&lt;br /&gt;
			стПараметры.НомерКолонки = 0;&lt;br /&gt;
			стПараметры.НомерСтраницы = стПараметры.НомерСтраницы + 1;&lt;br /&gt;
		КонецЕсли; &lt;br /&gt;
	КонецЕсли; &lt;br /&gt;
	&lt;br /&gt;
	новаяСтрока.ИмяГруппировки = тзГруппировки[УровеньГруппировки].ИмяГруппировки;&lt;br /&gt;
	новаяСтрока.НомерСтраницы = стПараметры.НомерСтраницы;&lt;br /&gt;
	новаяСтрока.НомерКолонки = стПараметры.НомерКолонки;&lt;br /&gt;
	новаяСтрока.НомерСтрокиВКолонке = стПараметры.НомерСтрокиВКолонке;&lt;br /&gt;
	новаяСтрока.НомерСтроки = стПараметры.НомерСтроки;&lt;br /&gt;
	&lt;br /&gt;
	стПараметры.НомерСтроки = стПараметры.НомерСтроки + 1;&lt;br /&gt;
	стПараметры.НомерСтрокиВКолонке = стПараметры.НомерСтрокиВКолонке + строкВМакетеГруппировки;&lt;br /&gt;
КонецПроцедуры&lt;br /&gt;
&lt;br /&gt;
// Процедура многоколоночной печати&lt;br /&gt;
//&lt;br /&gt;
// Параметры&lt;br /&gt;
// 	табДок - &lt;br /&gt;
// 	тзГруппировки - &lt;br /&gt;
// 	тзДанные - &lt;br /&gt;
// 	Макет - &lt;br /&gt;
// 	СтрокНаСтранице - &lt;br /&gt;
// 	КолонокНаСтранице - &lt;br /&gt;
// 	стЗаголовок - &lt;br /&gt;
//&lt;br /&gt;
Процедура МногоколоночнаяПечать(табДок, тзГруппировки, тзДанные, Макет, СтрокНаСтранице, КолонокНаСтранице, стЗаголовок) Экспорт &lt;br /&gt;
	тзМногоколоночная = МедСервис.МногоколоночнаяГруппировкаТаблиц(тзДанные, тзГруппировки, СтрокНаСтранице, КолонокНаСтранице);&lt;br /&gt;
	строкаБарьер = тзМногоколоночная.Добавить();&lt;br /&gt;
	строкаБарьер.НомерСтраницы = -1;&lt;br /&gt;
&lt;br /&gt;
	стОбласти = Новый Структура;&lt;br /&gt;
	Для каждого строка из тзГруппировки  Цикл&lt;br /&gt;
		стОбласти.Вставить(строка.ИмяГруппировки, Макет.ПолучитьОбласть(строка.ИмяГруппировки)); &lt;br /&gt;
	КонецЦикла; &lt;br /&gt;
	&lt;br /&gt;
	ОбластьОтступ = Макет.ПолучитьОбласть(&amp;quot;Отступ&amp;quot;);&lt;br /&gt;
	ОбластьШапка = Макет.ПолучитьОбласть(&amp;quot;Шапка&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	мзТабКолонки = Новый Массив(КолонокНаСтранице);&lt;br /&gt;
	&lt;br /&gt;
	Для номер = 0 По КолонокНаСтранице - 1 Цикл&lt;br /&gt;
		табКолонка = Новый ТабличныйДокумент;&lt;br /&gt;
		мзТабКолонки[номер] = табКолонка;&lt;br /&gt;
		Если номер = 0 И тзГруппировки.Найти(&amp;quot;Заголовок&amp;quot;, &amp;quot;ИмяГруппировки&amp;quot;) &amp;lt;&amp;gt; Неопределено Тогда&lt;br /&gt;
			Продолжить;&lt;br /&gt;
		КонецЕсли; &lt;br /&gt;
		табКолонка.Вывести(ОбластьШапка);&lt;br /&gt;
	КонецЦикла; &lt;br /&gt;
	&lt;br /&gt;
	табДок.Вывести(ОбластьОтступ);&lt;br /&gt;
	НомерСтраницы = 0;&lt;br /&gt;
	&lt;br /&gt;
	Для каждого строкаДанные из тзМногоколоночная Цикл&lt;br /&gt;
		&lt;br /&gt;
		Если строкаДанные.НомерСтраницы &amp;lt;&amp;gt; НомерСтраницы Тогда&lt;br /&gt;
			Для каждого табКолонка из мзТабКолонки  Цикл&lt;br /&gt;
				табДок.Присоединить(табКолонка);&lt;br /&gt;
			КонецЦикла; &lt;br /&gt;
			&lt;br /&gt;
			НомерСтраницы = строкаДанные.НомерСтраницы;&lt;br /&gt;
			Если НомерСтраницы = -1 Тогда&lt;br /&gt;
				Прервать;&lt;br /&gt;
			КонецЕсли; &lt;br /&gt;
			&lt;br /&gt;
			табДок.ВывестиГоризонтальныйРазделительСтраниц();&lt;br /&gt;
			табДок.Вывести(ОбластьОтступ);&lt;br /&gt;
			&lt;br /&gt;
			Для номер = 0 По КолонокНаСтранице - 1 Цикл&lt;br /&gt;
				табКолонка = Новый ТабличныйДокумент;&lt;br /&gt;
				табКолонка.Вывести(ОбластьШапка);&lt;br /&gt;
				мзТабКолонки[номер] = табКолонка;&lt;br /&gt;
			КонецЦикла; &lt;br /&gt;
			&lt;br /&gt;
		КонецЕсли; &lt;br /&gt;
		&lt;br /&gt;
		ИмяГруппировки = строкаДанные.ИмяГруппировки;&lt;br /&gt;
		область = стОбласти[ИмяГруппировки];&lt;br /&gt;
		&lt;br /&gt;
		Если ИмяГруппировки = &amp;quot;Заголовок&amp;quot; Тогда&lt;br /&gt;
			Для каждого элемент из стЗаголовок  Цикл&lt;br /&gt;
				область.Параметры[элемент.Ключ] = элемент.Значение;&lt;br /&gt;
			КонецЦикла;&lt;br /&gt;
		Иначе&lt;br /&gt;
			ЗаполнитьЗначенияСвойств(область.Параметры, строкаДанные);&lt;br /&gt;
		КонецЕсли;&lt;br /&gt;
		&lt;br /&gt;
		табКолонка = мзТабКолонки[строкаДанные.НомерКолонки];&lt;br /&gt;
		табКолонка.Вывести(область);&lt;br /&gt;
		&lt;br /&gt;
		Если ИмяГруппировки = &amp;quot;Заголовок&amp;quot; И строкаДанные.НомерКолонки = 0 Тогда&lt;br /&gt;
			табКолонка.Вывести(ОбластьШапка);&lt;br /&gt;
		КонецЕсли;&lt;br /&gt;
		&lt;br /&gt;
	КонецЦикла; &lt;br /&gt;
	&lt;br /&gt;
КонецПроцедуры&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Тесты механизма:===&lt;br /&gt;
&lt;br /&gt;
Макет, используемый для печати:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Макет многоколоночной печати 1.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=1C&amp;gt;&lt;br /&gt;
Процедура Тест_МногоколоночнаяПечать() Экспорт&lt;br /&gt;
	тзДанные = Новый ТаблицаЗначений;&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Дата&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Кабинет&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;ЛечебноеМесто&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Пациент&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ДобавитьСеансы(тзДанные, '2010.02.10', &amp;quot;Грязевые ванны&amp;quot;, &amp;quot;Ванна 1&amp;quot;);&lt;br /&gt;
	ДобавитьСеансы(тзДанные, '2010.02.10', &amp;quot;Грязевые ванны&amp;quot;, &amp;quot;Ванна 2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	тзГруппировки = СоздатьТЗГруппировки();&lt;br /&gt;
	СтрокНаСтранице = 10;&lt;br /&gt;
	КолонокНаСтранице = 3;&lt;br /&gt;
	&lt;br /&gt;
	макет = ПолучитьМакет(&amp;quot;ГрафикСеансов&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	стЗаголовок = Новый Структура(&amp;quot;ГруппаЛечебныхМест,ДатаС,ДатаПо&amp;quot;, ссЛечебноеОтделение, Формат('20100101', &amp;quot;ДФ='dd.MM.yy'&amp;quot;) , Формат('20100131', &amp;quot;ДФ='dd.MM.yy'&amp;quot;));&lt;br /&gt;
	табДок = Новый ТабличныйДокумент;&lt;br /&gt;
	МедСервис.МногоколоночнаяПечать(табДок, тзГруппировки, тзДанные, макет, СтрокНаСтранице, КолонокНаСтранице, стЗаголовок);&lt;br /&gt;
	&lt;br /&gt;
	Если Интерактивно Тогда&lt;br /&gt;
		табДок.Показать();&lt;br /&gt;
	КонецЕсли; &lt;br /&gt;
	&lt;br /&gt;
КонецПроцедуры&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Процедура Тест_МногоколоночнаяГруппировкаТаблиц() Экспорт &lt;br /&gt;
	тзДанные = Новый ТаблицаЗначений;&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Дата&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Кабинет&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;ЛечебноеМесто&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Пациент&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ДобавитьСеансы(тзДанные, '2010.02.10', &amp;quot;Грязевые ванны&amp;quot;, &amp;quot;Ванна 1&amp;quot;);&lt;br /&gt;
	ДобавитьСеансы(тзДанные, '2010.02.10', &amp;quot;Грязевые ванны&amp;quot;, &amp;quot;Ванна 2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	тзГруппировки = СоздатьТЗГруппировки();&lt;br /&gt;
	СтрокЗаголовок = 3; &lt;br /&gt;
	СтрокНаСтранице = 10;&lt;br /&gt;
	КолонокНаСтранице = 2;&lt;br /&gt;
	&lt;br /&gt;
	тзМногоколоночная = МедСервис.МногоколоночнаяГруппировкаТаблиц(тзДанные, тзГруппировки, СтрокНаСтранице, КолонокНаСтранице);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 0, 0, 0, 0, &amp;quot;Заголовок&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 1, 0, 0, 3, &amp;quot;Дата&amp;quot;, '2010.02.10');&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 2, 0, 0, 6, &amp;quot;Кабинет&amp;quot;, &amp;quot;Грязевые ванны&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 3, 0, 0, 7, &amp;quot;ЛечебноеМесто&amp;quot;, &amp;quot;Ванна 1&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 4, 0, 0, 8, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 5, 0, 0, 9, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 6, 0, 1, 0, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 15, 0, 1, 9, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 16, 1, 0, 0, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 23, 1, 0, 7, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 24, 1, 0, 8, &amp;quot;ЛечебноеМесто&amp;quot;, &amp;quot;Ванна 2&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 25, 1, 0, 9, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 26, 1, 1, 0, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 35, 1, 1, 9, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 36, 2, 0, 0, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 44, 2, 0, 8, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
КонецПроцедуры&lt;br /&gt;
&lt;br /&gt;
Процедура Тест_МногоколоночнаяГруппировкаТаблиц2() Экспорт &lt;br /&gt;
	тзДанные = Новый ТаблицаЗначений;&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Дата&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Кабинет&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;ЛечебноеМесто&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	тзДанные.Колонки.Добавить(&amp;quot;Пациент&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ДобавитьСеансы(тзДанные, '2010.02.10', &amp;quot;Грязевые ванны&amp;quot;, &amp;quot;Ванна 1&amp;quot;);&lt;br /&gt;
	ДобавитьСеансы(тзДанные, '2010.02.10', &amp;quot;Грязевые ванны&amp;quot;, &amp;quot;Ванна 2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ДобавитьСеансы(тзДанные, '2010.02.11', &amp;quot;Грязевые ванны&amp;quot;, &amp;quot;Ванна 1&amp;quot;);&lt;br /&gt;
	ДобавитьСеансы(тзДанные, '2010.02.11', &amp;quot;Грязевые ванны&amp;quot;, &amp;quot;Ванна 2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	тзГруппировки = СоздатьТЗГруппировки();&lt;br /&gt;
	&lt;br /&gt;
	СтрокНаСтранице = 15;&lt;br /&gt;
	КолонокНаСтранице = 2;&lt;br /&gt;
	&lt;br /&gt;
	тзМногоколоночная = МедСервис.МногоколоночнаяГруппировкаТаблиц(тзДанные, тзГруппировки, СтрокНаСтранице, КолонокНаСтранице);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 0, 0, 0, 0, &amp;quot;Заголовок&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 1, 0, 0, 3, &amp;quot;Дата&amp;quot;, '2010.02.10');&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 2, 0, 0, 6, &amp;quot;Кабинет&amp;quot;, &amp;quot;Грязевые ванны&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 3, 0, 0, 7, &amp;quot;ЛечебноеМесто&amp;quot;, &amp;quot;Ванна 1&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 4, 0, 0, 8, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 10, 0, 0, 14, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 11, 0, 1, 0, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 23, 0, 1, 12, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 24, 0, 1, 13, &amp;quot;ЛечебноеМесто&amp;quot;, &amp;quot;Ванна 2&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 25, 0, 1, 14, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 26, 1, 0, 0, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 40, 1, 0, 14, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 41, 1, 1, 0, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 44, 1, 1, 3, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 45, 1, 1, 4, &amp;quot;Дата&amp;quot;, '2010.02.11');&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 46, 1, 1, 7, &amp;quot;Кабинет&amp;quot;, &amp;quot;Грязевые ванны&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 47, 1, 1, 8, &amp;quot;ЛечебноеМесто&amp;quot;, &amp;quot;Ванна 1&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 48, 1, 1, 9, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 53, 1, 1, 14, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	ПроверитьСтроку(тзМногоколоночная, 54, 2, 0, 0, &amp;quot;Сеанс&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
КонецПроцедуры&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Функция СоздатьТЗГруппировки()&lt;br /&gt;
	тзГруппировки = Новый ТаблицаЗначений;&lt;br /&gt;
	тзГруппировки.Колонки.Добавить(&amp;quot;ИмяГруппировки&amp;quot;);&lt;br /&gt;
	тзГруппировки.Колонки.Добавить(&amp;quot;КоличествоСтрок&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	строка = тзГруппировки.Добавить();&lt;br /&gt;
	строка.ИмяГруппировки = &amp;quot;Заголовок&amp;quot;;&lt;br /&gt;
	строка.КоличествоСтрок = 3;&lt;br /&gt;
	&lt;br /&gt;
	строка = тзГруппировки.Добавить();&lt;br /&gt;
	строка.ИмяГруппировки = &amp;quot;Дата&amp;quot;;&lt;br /&gt;
	строка.КоличествоСтрок = 3;&lt;br /&gt;
	&lt;br /&gt;
	строка = тзГруппировки.Добавить();&lt;br /&gt;
	строка.ИмяГруппировки = &amp;quot;Кабинет&amp;quot;;&lt;br /&gt;
	строка.КоличествоСтрок = 1;&lt;br /&gt;
	&lt;br /&gt;
	строка = тзГруппировки.Добавить();&lt;br /&gt;
	строка.ИмяГруппировки = &amp;quot;ЛечебноеМесто&amp;quot;;&lt;br /&gt;
	строка.КоличествоСтрок = 1;&lt;br /&gt;
	&lt;br /&gt;
	строка = тзГруппировки.Добавить();&lt;br /&gt;
	строка.ИмяГруппировки = &amp;quot;Сеанс&amp;quot;;&lt;br /&gt;
	строка.КоличествоСтрок = 1;&lt;br /&gt;
	&lt;br /&gt;
	Возврат тзГруппировки;&lt;br /&gt;
КонецФункции&lt;br /&gt;
&lt;br /&gt;
Процедура ПроверитьСтроку(тзМногоколоночная, НомерСтроки, НомерСтраницы, НомерКолонки, НомерСтрокиВКолонке, ИмяГруппировки, ЗначениеГруппировки = Неопределено)&lt;br /&gt;
	строка = тзМногоколоночная[НомерСтроки];&lt;br /&gt;
	Тестирование.ПроверитьРавенство(НомерСтраницы, строка.НомерСтраницы);&lt;br /&gt;
	Тестирование.ПроверитьРавенство(НомерКолонки, строка.НомерКолонки);&lt;br /&gt;
	Тестирование.ПроверитьРавенство(НомерСтрокиВКолонке, строка.НомерСтрокиВКолонке);&lt;br /&gt;
	Тестирование.ПроверитьРавенство(ИмяГруппировки, строка.ИмяГруппировки);&lt;br /&gt;
	Если ЗначениеГруппировки &amp;lt;&amp;gt; Неопределено Тогда&lt;br /&gt;
		Тестирование.ПроверитьРавенство(ЗначениеГруппировки, строка[ИмяГруппировки]);&lt;br /&gt;
	КонецЕсли; &lt;br /&gt;
КонецПроцедуры&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Процедура ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, Сеанс, Пациент = Неопределено)&lt;br /&gt;
	строка = тзДанные.Добавить();&lt;br /&gt;
	строка.Дата = Дата;&lt;br /&gt;
	строка.Кабинет = Кабинет;&lt;br /&gt;
	строка.ЛечебноеМесто = ЛечебноеМесто;&lt;br /&gt;
	строка.Сеанс = Сеанс;&lt;br /&gt;
	Если Пациент &amp;lt;&amp;gt; Неопределено Тогда&lt;br /&gt;
		строка.Пациент = Пациент;&lt;br /&gt;
	КонецЕсли; &lt;br /&gt;
КонецПроцедуры &lt;br /&gt;
&lt;br /&gt;
Процедура ДобавитьСеансы(тзДанные, Дата, Кабинет, ЛечебноеМесто)&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;09:00 - 09-30&amp;quot;, ссИванов);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;09:30 - 10-00&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;10:00 - 10-30&amp;quot;, ссПетров);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;10:30 - 11-00&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;11:00 - 11-30&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;11:30 - 12-00&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;12:00 - 12-30&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;12:30 - 13-00&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;13:00 - 13-30&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;13:30 - 14-00&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;14:00 - 14-30&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;14:30 - 15-00&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;15:00 - 15-30&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;15:30 - 16-00&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;16:00 - 16-30&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;16:30 - 17-00&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;17:00 - 17-30&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;17:30 - 18-00&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;18:00 - 18-30&amp;quot;);&lt;br /&gt;
	ДобавитьСтроку(тзДанные, Дата, Кабинет, ЛечебноеМесто, &amp;quot;18:30 - 19-00&amp;quot;);&lt;br /&gt;
КонецПроцедуры&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Развитие==&lt;br /&gt;
&lt;br /&gt;
* Сейчас момент переноса на следующую колонку/страницу произвольный. Может быть, для улучшения внешнего вида новые колонки должны по возможности начинаться с вывода группировки.&lt;/div&gt;</summary>
		<author><name>Павел Лазарев</name></author>
		
	</entry>
</feed>