В этой статье я покажу, как в табличных документах 1С реализовывать группировку строк и колонок.
Группировка строк в табличном документе 1С
Для демонстрации создадим у обработки простой макет табличного документа с одной областью и с одним параметром области.
На основной форме обработки сделаем команду ВывестиГоризонтальнуюГруппировку, реквизит формы КоличествоЧисел (тип Число), и всё это разместим на форме.
При выполнении команды, я буду выводить ряд чисел с дробными частями. Для этого, создадим обработчик команды формы на клиенте и серверную процедуру, в которой будем заполнять табличный документ.
Получится такой код:
&НаСервереБезКонтекста Функция ТабДокументСГоризонтальнымиГруппировкамиСервер(КоличествоЧисел) ТабличныйДокумент = Новый ТабличныйДокумент; Макет = Обработки.ПримерГруппировок.ПолучитьМакет("ГруппировкаПоГоризонтали"); ГоризонтальнаяОбласть = Макет.ПолучитьОбласть("Строки"); Для н = 1 по КоличествоЧисел Цикл ГоризонтальнаяОбласть.Параметры.НомерСтроки = Строка(н); ТабличныйДокумент.Вывести(ГоризонтальнаяОбласть); Для к = 1 по 4 Цикл ГоризонтальнаяОбласть.Параметры.НомерСтроки = Строка(н + 0.2*к); ТабличныйДокумент.Вывести(ГоризонтальнаяОбласть); КонецЦикла; КонецЦикла; Возврат ТабличныйДокумент; КонецФункции // ТабДокументСГоризонтальнымиГруппировкамиСервер(КоличествоЧисел)() &НаКлиенте Процедура ВывестиГоризонтальнуюГруппировку(Команда) ТабДок = ТабДокументСГоризонтальнымиГруппировкамиСервер(КоличествоЧисел); ТабДок.Показать(); КонецПроцедуры
Подробно о формировании областей табличного документа читайте в статье:
Области табличного документа 1С
Результат работы этого кода будет следующий:
Изменим этот макет: сделаем группировку целых чисел, а дробные числа будут с небольшим отступом.
Для того, чтобы дробные числа выводились с отступом изменим макет.
Откроем палитру свойств ячейки, в которой выводится параметр НомерСтроки.
В этой палитре нас интересует свойство АвтоОтступ. Установим в него значение.
На этом с макетом закончим. Доработаем код.
&НаСервереБезКонтекста Функция ТабДокументСГоризонтальнымиГруппировкамиСервер(КоличествоЧисел) ТабличныйДокумент = Новый ТабличныйДокумент; Макет = Обработки.ПримерГруппировок.ПолучитьМакет("ГруппировкаПоГоризонтали"); ГоризонтальнаяОбласть = Макет.ПолучитьОбласть("Строки"); ТабличныйДокумент.НачатьАвтогруппировкуСтрок(); Для н = 1 по КоличествоЧисел Цикл ГоризонтальнаяОбласть.Параметры.НомерСтроки = Строка(н); ТабличныйДокумент.Вывести(ГоризонтальнаяОбласть,1,"Целые числа",Истина); Для к = 1 по 4 Цикл ГоризонтальнаяОбласть.Параметры.НомерСтроки = Строка(н + 0.2*к); ТабличныйДокумент.Вывести(ГоризонтальнаяОбласть,2, "Дробные числа", Истина); КонецЦикла; КонецЦикла; ТабличныйДокумент.ЗакончитьАвтогруппировкуСтрок(); Возврат ТабличныйДокумент; КонецФункции // ТабДокументСГоризонтальнымиГруппировкамиСервер(КоличествоЧисел)()
В этом коде мы применили методы НачатьАвтогруппировкуСтрок() и ЗакончитьАвтогруппировкуСтрок() перед тем как начали заполнять табличный документе, и после того как закончили. Кроме того, мы дополнили параметры метода Вывести табличного документе. Если в первом параметре указывается область которая будет выводиться в табличном документе, то во втором параметре указываем уровень группировки, в третьем – название группировки, а четвертом – булево значение, которое определяет, будет ли сворачиваться группировка или нет, после того, как она будет выведена.
Результат работы этого кода:
Группировка колонок в табличном документе 1С
Группировка колонок в табличном документе осуществляется по аналогии с группировкой строк. Для демонстрации создадим макет табличного документа, в котором сделаем вертикальную область с единственным параметром.
А также на основной форме обработки создадим команду формы, которую назовем «Вывести вертикальную группировку», и выведем её на форму.
Создадим обработчик команды и функцию в серверном контексте, которая формирует табличный документ с вертикальными областями, к которым применена группировка.
&НаСервереБезКонтекста Функция ТабДокументСВертикальнойГруппировкамиСервер(КоличествоОбластей) ТабличныйДокумент = Новый ТабличныйДокумент; Макет = Обработки.ПримерТабличныхДокументов.ПолучитьМакет("ГруппировкаПоВертикали"); ВертикальнаяОбласть = Макет.ПолучитьОбласть("Колонки"); ТабличныйДокумент.НачатьАвтогруппировкуКолонок(); Для н = 1 по КоличествоОбластей Цикл ВертикальнаяОбласть.Параметры.НомерКолонки = Строка(н); ТабличныйДокумент.Присоединить(ВертикальнаяОбласть,1,"Целые числа",Истина); Для к = 1 по 4 Цикл ВертикальнаяОбласть.Параметры.НомерКолонки = Строка(н + 0.2*к); ТабличныйДокумент.Присоединить(ВертикальнаяОбласть,2, "Дробные числа", Истина); КонецЦикла; КонецЦикла; ТабличныйДокумент.ЗакончитьАвтогруппировкуКолонок(); Возврат ТабличныйДокумент; КонецФункции // ПолучитьТабличныйДокументВертикальныеОбласти() &НаКлиенте Процедура ВывестиВертикальнуюГруппировку(Команда) ТабДок = ТабДокументСВертикальнойГруппировкамиСервер(КоличествоЧисел); ТабДок.Показать(); КонецПроцедуры
Смысл группировки вертикальных областей тот же, что и горизонтальных: используем методы НачатьАвтогруппировкуКолонок и ЗакончитьАвтогруппировкуКолонок перед выводом областей, а в методе Присоединить необходимо указать уровень группировки, название группы и признак того, будет развернута группа или нет, как и в методе Вывести.
Результат работы этого кода будет следующим:
Видео с бонусом! В этом бонусе я покажу, как сделать вывод иерархического справочника.
Другие статьи про табличные документы в 1С:
Создание макета табличного документа в 1С 8.3
Вывод на печать табличного документа в 1С 8.3
Табличный документ на управляемой форме 1С 8.3
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 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
отправил полтинник, спс
Вам спасибо)
С автогруппировкой не сработало. Сработало с просто НачатьГруппуСтрок()