Страницы табличного документа в 1С

В этой статье вы узнаете, по какому принципу осуществляется работа со страницами в табличном документе 1С 8.3. Будет показано, как определить помещается ли область (или области) в страницу, а также как принудительно осуществить разделение страниц.

Для демонстрации принципов работы страниц в табличном документе реализуем простой учебный пример: в табличном документе выведем строки со случайными числами и их текстовое представление, количество строк с числами, которые нужно вывести будем вводить в поле на управляемой форме обработки.

Управляемая форма обработки 1С

Создадим макет табличного документа с горизонтальными областями.

Макет табличного документа 1С

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

&НаСервереБезКонтекста
Функция СформироватьТабличныйДокумент(КоличествоСтрок)

	ТабличныйДокумент = Новый ТабличныйДокумент;
	Макет = Обработки.ПримерРаботыСоСтраницами.ПолучитьМакет("Макет");
	
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("Таблица"); 
	ОбластьПодавалТаблицы = Макет.ПолучитьОбласть("ПодавалТаблицы"); 
	ОбластьПодавал = Макет.ПолучитьОбласть("Подавал"); 

	ТабличныйДокумент.Вывести(ОбластьШапка);
	ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
	
	КоличествоСтрокСтраницы = 0;
	ГС = Новый ГенераторСлучайныхЧисел;
	
	Для н = 1 по КоличествоСтрок Цикл 
		СлучайноеЧисло = ГС.СлучайноеЧисло(1,10);  
		ОбластьСтрокаТаблицы.Параметры.НомерСтроки = н;
		ОбластьСтрокаТаблицы.Параметры.СлучайноеЧисло = СлучайноеЧисло;
		ОбластьСтрокаТаблицы.Параметры.СлучайноЧислоСтрокой = ЧислоПрописью(СлучайноеЧисло,"НП = Ложь",",,,,,,,,0"); 
				
		ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
		КоличествоСтрокСтраницы = КоличествоСтрокСтраницы + 1;
	КонецЦикла;
	ОбластьПодавалТаблицы.Параметры.КоличествоСтрок = КоличествоСтрокСтраницы;
	ТабличныйДокумент.Вывести(ОбластьПодавалТаблицы);
	ТабличныйДокумент.Вывести(ОбластьПодавал);
	
	Возврат ТабличныйДокумент;

КонецФункции // СформироватьТабличныйДокумент()

&НаКлиенте
Процедура СформироватьОтчет(Команда)
	ТабДок = СформироватьТабличныйДокумент(КоличествоСтрок);
	ТабДок.Показать();
КонецПроцедуры

Этот код комментировать не будем, если у вас он вызывает затруднения, то ознакомьтесь с моими предыдущими статьями и видео-уроками.

Создание макета табличного документа 1С

Вывод на печать табличного документа в 1С 8.3

Области табличного документа 1С 8.3

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

Страницы табличного документа 1С

Страницы табличного документа 1С

Согласитесь, что такой вариант формирования печатной формы не лицеприятно выглядит.

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

&НаСервереБезКонтекста
Функция СформироватьТабличныйДокумент(КоличествоСтрок)

	ТабличныйДокумент = Новый ТабличныйДокумент;
	Макет = Обработки.ПримерРаботыСоСтраницами.ПолучитьМакет("Макет");
	
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("Таблица"); 
	ОбластьПодавалТаблицы = Макет.ПолучитьОбласть("ПодавалТаблицы"); 
	ОбластьПодавал = Макет.ПолучитьОбласть("Подавал"); 

	ТабличныйДокумент.Вывести(ОбластьШапка);
	ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
	
	КоличествоСтрокСтраницы = 0;
	ГС = Новый ГенераторСлучайныхЧисел;
	
	ПоследниеСтроки = Новый Массив;
	ПоследниеСтроки.Добавить(ОбластьСтрокаТаблицы);
	ПоследниеСтроки.Добавить(ОбластьПодавалТаблицы);
	
	Для н = 1 по КоличествоСтрок Цикл 
		
		СлучайноеЧисло = ГС.СлучайноеЧисло(1,10);  
		ОбластьСтрокаТаблицы.Параметры.НомерСтроки = н;
		ОбластьСтрокаТаблицы.Параметры.СлучайноеЧисло = СлучайноеЧисло;
		ОбластьСтрокаТаблицы.Параметры.СлучайноЧислоСтрокой = ЧислоПрописью(СлучайноеЧисло,"НП = Ложь",",,,,,,,,0"); 
		
		Если Не ТабличныйДокумент.ПроверитьВывод(ПоследниеСтроки) Тогда 
			ОбластьПодавалТаблицы.Параметры.КоличествоСтрок = КоличествоСтрокСтраницы;
			ТабличныйДокумент.Вывести(ОбластьПодавалТаблицы);
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
		
			КоличествоСтрокСтраницы = 0
		КонецЕсли;	
		
		ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
		КоличествоСтрокСтраницы = КоличествоСтрокСтраницы + 1;
		
	КонецЦикла;
	ОбластьПодавалТаблицы.Параметры.КоличествоСтрок = КоличествоСтрокСтраницы;
	ТабличныйДокумент.Вывести(ОбластьПодавалТаблицы);
	ТабличныйДокумент.Вывести(ОбластьПодавал);
	
	Возврат ТабличныйДокумент;

КонецФункции // СформироватьТабличныйДокумент()

Поясним этот код.

Используя метод табличного документа ПроверитьВывод можно проверить, войдет ли вывод области или нескольких областей на страницу табличного документа. Этот метод возвращает Истина, если область вмещается на страницу, и ложь – если нет. Параметром этого метода может быть как область, так и массив областей.

В функции мы создали массив, который состоит из области строки и из области подавала таблицы.

ПоследниеСтроки = Новый Массив;
ПоследниеСтроки.Добавить(ОбластьСтрокаТаблицы);
ПоследниеСтроки.Добавить(ОбластьПодавалТаблицы);

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

Если Не ТабличныйДокумент.ПроверитьВывод(ПоследниеСтроки) Тогда 

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

ТабличныйДокумент.Вывести(ОбластьПодавалТаблицы);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);

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

Страницы табличного документа 1С
Страницы табличного документа 1С

Другие статьи про табличные документы в 1С:

Табличный документ на управляемой форме 1С 8.3

Группировка в табличном документе 1С 8.3

Расшифровка табличного документа 1С 8.3

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Это изображение имеет пустой атрибут alt; его имя файла - 1C-в-желтом-цвете-3D-221x300.png

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Это изображение имеет пустой атрибут alt; его имя файла - 1_в-желтом-цвете-3D-маленькая-221x300.jpg

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *