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

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

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

Для демонстрации создадим у обработки простой макет табличного документа с одной областью и с одним параметром области.

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

На основной форме обработки сделаем команду ВывестиГоризонтальнуюГруппировку, реквизит формы КоличествоЧисел (тип Число), и всё это разместим на форме.

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

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

Получится такой код:

&НаСервереБезКонтекста
Функция ТабДокументСГоризонтальнымиГруппировкамиСервер(КоличествоЧисел)
	ТабличныйДокумент = Новый  ТабличныйДокумент;
	Макет = Обработки.ПримерГруппировок.ПолучитьМакет("ГруппировкаПоГоризонтали");
	ГоризонтальнаяОбласть = Макет.ПолучитьОбласть("Строки");
	
	Для н = 1 по КоличествоЧисел Цикл 
		ГоризонтальнаяОбласть.Параметры.НомерСтроки = Строка(н); 
		ТабличныйДокумент.Вывести(ГоризонтальнаяОбласть);
		Для к = 1 по 4 Цикл 
			ГоризонтальнаяОбласть.Параметры.НомерСтроки = Строка(н + 0.2*к); 
			ТабличныйДокумент.Вывести(ГоризонтальнаяОбласть);
		КонецЦикла;	
		
	КонецЦикла;	
	
    Возврат ТабличныйДокумент;

КонецФункции // ТабДокументСГоризонтальнымиГруппировкамиСервер(КоличествоЧисел)()


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

Подробно о формировании областей табличного документа читайте в статье:

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

Результат работы этого кода будет следующий:

Табличный документ 1С

Изменим этот макет: сделаем группировку целых чисел, а дробные числа будут с небольшим отступом.

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

Откроем палитру свойств ячейки, в которой выводится параметр НомерСтроки.

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

В этой палитре нас интересует свойство АвтоОтступ.  Установим в него значение.

Свойство Отступ ячейки табличного документа

На этом с макетом закончим. Доработаем код.

&НаСервереБезКонтекста
Функция ТабДокументСГоризонтальнымиГруппировкамиСервер(КоличествоЧисел)
	ТабличныйДокумент = Новый  ТабличныйДокумент;
	Макет = Обработки.ПримерГруппировок.ПолучитьМакет("ГруппировкаПоГоризонтали");
	ГоризонтальнаяОбласть = Макет.ПолучитьОбласть("Строки");
	
	ТабличныйДокумент.НачатьАвтогруппировкуСтрок();
	Для н = 1 по КоличествоЧисел Цикл 
		ГоризонтальнаяОбласть.Параметры.НомерСтроки = Строка(н); 
		ТабличныйДокумент.Вывести(ГоризонтальнаяОбласть,1,"Целые числа",Истина);
		Для к = 1 по 4 Цикл 
			ГоризонтальнаяОбласть.Параметры.НомерСтроки = Строка(н + 0.2*к); 
			ТабличныйДокумент.Вывести(ГоризонтальнаяОбласть,2, "Дробные числа", Истина);
		КонецЦикла;	
		
	КонецЦикла;	
	ТабличныйДокумент.ЗакончитьАвтогруппировкуСтрок();

    Возврат ТабличныйДокумент;

КонецФункции // ТабДокументСГоризонтальнымиГруппировкамиСервер(КоличествоЧисел)()


В этом коде мы применили методы  НачатьАвтогруппировкуСтрок() и ЗакончитьАвтогруппировкуСтрок() перед тем как начали заполнять табличный документе, и после того как закончили. Кроме того, мы дополнили параметры метода Вывести табличного документе. Если в первом параметре указывается  область которая будет выводиться в табличном документе, то во втором параметре указываем уровень группировки, в третьем – название группировки, а четвертом – булево значение, которое определяет, будет ли сворачиваться группировка или нет, после того, как она будет выведена.

Результат работы этого кода:

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

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

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

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

А также на основной форме обработки создадим команду формы, которую назовем «Вывести вертикальную группировку», и выведем её на форму.

Команда формы обработки 1С

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

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

	ТабличныйДокумент = Новый ТабличныйДокумент;
	
	Макет = Обработки.ПримерТабличныхДокументов.ПолучитьМакет("ГруппировкаПоВертикали");
	ВертикальнаяОбласть = Макет.ПолучитьОбласть("Колонки");
	ТабличныйДокумент.НачатьАвтогруппировкуКолонок();
	Для н = 1 по КоличествоОбластей Цикл 
		ВертикальнаяОбласть.Параметры.НомерКолонки = Строка(н); 
		ТабличныйДокумент.Присоединить(ВертикальнаяОбласть,1,"Целые числа",Истина);
		Для к = 1 по 4 Цикл 
			ВертикальнаяОбласть.Параметры.НомерКолонки = Строка(н + 0.2*к); 
			ТабличныйДокумент.Присоединить(ВертикальнаяОбласть,2, "Дробные числа", Истина);
		КонецЦикла;	
	КонецЦикла;	
	ТабличныйДокумент.ЗакончитьАвтогруппировкуКолонок();
	
    Возврат ТабличныйДокумент;
КонецФункции // ПолучитьТабличныйДокументВертикальныеОбласти()

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

Смысл группировки вертикальных областей тот же, что и горизонтальных: используем методы  НачатьАвтогруппировкуКолонок и ЗакончитьАвтогруппировкуКолонок перед выводом областей, а в методе Присоединить необходимо указать уровень группировки, название группы и признак того, будет развернута группа или нет, как и в методе Вывести.

Результат работы этого кода будет следующим:

 Группировка колонок в табличном документе 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 не будет опубликован. Обязательные поля помечены *

девятнадцать − 13 =