Табличный документ вывести группировку

Интерактивные возможности табличного документа

Табличный документ 1С:Предприятия 8 служит не только для печати документов и отчетов. Он имеет расширенные возможности, которые превращают его в интерактивное средство взаимодействия с пользователем. К таким возможностям относятся:

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

Расшифровки

Система «1С:Предприятие 8» поддерживает механизм расшифровок (drill-down, drill-through), когда пользователь щелкает на строке или ячейке отчета и получает более детальный отчет, если конечно это предусмотрено программистом.

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

Событие «ОбработкаРасшифровки» можно обработать, только если табличный документ помещен в форму как элемент управления, а не открывается в отдельном окне, поскольку это событие существует только у элемента управления «ПолеТабличногоДокумента». Ниже показаны категория свойств «События» элемента управления «ПолеТабличногоДокумента», где назначается процедура-обработчик расшифровки:

Сама процедура «РасшифроватьСтроку» может выглядеть следующим образом (как пример):

Примечание 1. В модуле приложения (аналог глобального модуля в версии 7.7) больше нет события ОбработкаЯчейкиТаблицы. Вся обработка расшифровок должна быть произведена в модуле формы, где располагается элемент управления «ПолеТабличногоДокумента».

Примечание 2. Событие «ОбработкаРасшифровки» возникает при щелчке на ячейке или рисунке, содержащих расшифровку. Не путайте его с событием «Выбор», возникающим для всех ячеек и рисунков при двойном щелчке мыши или нажатии клавиши Enter, причем, сначала возникает событие «Выбор», а потом «ОбработкаРасшифровки».

Группировки

В 1С:Предприятии 8 появилась возможность группировать данные в отчете. Группировки могут быть горизонтальные и вертикальные, тогда слева и сверху появляются специальные маркеры, позволяющие пользователю разворачивать и сворачивать группы, как показано на следующем рисунке:

Самый простой способ добавить группировки в отчет — доверить эту задачу системе, тогда от программиста потребуются минимальные усилия. Необходимо всего лишь применить методы НачатьАвтоГруппировкуСтрок/НачатьАвтоГруппировкуКолонок и ЗакончитьАвтоГруппировкуСтрок/ЗакончитьАвтоГруппировкуКолонок, которые включают режим автоматической группировки строк или колонок соответственно. В этом режиме при вызове методов Вывести (для строк) и Присоединить (для колонок) указываются дополнительные параметры для группировки:

При использовании группировок очень полезно установить свойство ячейки «АвтоОтступ» в какое-нибудь ненулевое значение, например, 5. Тогда система будет автоматически добавлять заданное количество пробелов слева текста ячейки, основываясь на текущем уровне группировки. В результате отчет приобретет удобный внешний вид для отображения иерархии данных.

Следующий пример выводит список товаров с группировками:

Примечания

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

Программная установка примечаний реализуется следующим образом:

Обратите внимание, что свойство «Примечание» у объекта «ОбластьЯчеекМакета» является объектом типа «Рисунок», а не простой строкой. Через этот объект можно редактировать внешний вид примечания, шрифт и цвет текста, фон, линии и т.д.

Источник

Программно добавить группировку в табличный документ

Как в табличный документ, добавить группировку, подскажите. Не могу понять, чего не хватает

ТабДок2 = новый ТабличныйДокумент; //создаем ТабДок
Макет = ПолучитьМакет(«Макет»); //Получаем макет
ОблМакета = Макет.ПолучитьОбласть(«Шапка»); //получаем область
ОблМакета.Параметры.ДнейВМесяц = ДнейВМесяц;
ТабДок2.НачатьАвтогруппировкуСтрок(); //начало группировки должно
ТабДок2.Вывести(ОблМакета,0);
ПерваяСтрока = 6;
ОблМакета = Макет.ПолучитьОбласть(«СтрокаОбласти»);

Пока ВыборкаГрупп.Следующий() цикл
ПерваяСтрока = ПерваяСтрока + 1;
ОблМакета.Параметры.Период = ВыборкаГрупп.Период; //Период
ТабДок2.Вывести(ОблМакета);
КонецЦикла;
ТабДок2.ЗакончитьАвтогруппировкуСтрок(); //закончится группировка должна
ТабДок2.Вывести(ОблМакета);
ТабДок2.Показать();

Тип: Число.
Уровень используется для автоматической группировки строк табличного документа. Соседние строки с одинаковым уровнем будут отнесены к одной группе. Строки с минимальным уровнем в группу не объединяются.
Тип: Строка.
Название группы, к которой относятся выводимые строки.
Истина — выведенная группа будет открыта; Ложь — группа будет выведена в свернутом виде.
Значение по умолчанию: Истина.
Возвращаемое значение:

Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.
Описание:

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

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

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

ТабличныйДокумент, метод Присоединить

Источник

Программирование в 1С для всех

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Источник

Макет табличного документа с заранее заданными группировками

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

Значит, пришло время стряхивать пыль с бубна и каким-то образом задабривать богов 1С.

Не найдя ответа в СП у коллег и у яндекса , пришлось попотеть и методом научного тыка найти-таки заветное решение.

Далее работающий код с подробными комментариями. Во вложении обработка с примерами макетов и этим самым кодом.

Процедура КнопкаВыполнитьНажатие ( Кнопка )

Макет = ПолучитьМакет ( «Макет» );

ОбластьШапка = Макет . ПолучитьОбласть ( «Шапка» );

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

//После вывода в ТабДок макета с группировками, в ТабДоке устанавливаются все группировки макета

//Если выводить не макет, а область макета, то группировки не переносятся

//Т.е. при применении метода » ПолучитьОбласть » группировки в данной области не учитываются, как будто их не было

//Группировки колонок в новом табличном документе устанавливаются ПЕРВЫМ выведенным в него табдоком ,

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

//и в макете помимо самой группировки должны быть строки

ТабДок . Вывести ( ПолучитьМакет ( » СохраненныеГрупировкиКолонок » ));

ТабДок . Вывести ( ОбластьШапка );

//удалим строки макета » СохраненныеГрупировкиКолонок «, т.к. они нам нужны были только для того,

//чтобы установить в новом табдоке нужную нам группировку колонок

//Важно! — если после удаления строк из документа удалить все строки, то группировка колонок тоже очистится,

//поэтому удаляем «лишние» строки, только после того, как вывели в табдок , хотя бы одну «не лишнюю» строку

//обязательно указываем тип смещения отличный от » БезСмещения » иначе очищенная от текста область останется в нашем табдоке

ТабДок . УдалитьОбласть ( ТабДок . Область ( 1 ,, 1 ,), ТипСмещенияТабличногоДокумента . ПоГоризонтали );

//на всякий случай проверим что с группировкой строк тоже всё в порядке

ТабДок . Вывести ( Макет . ПолучитьОбласть ( «Строка» ), 0 );

ТабДок . Вывести ( Макет . ПолучитьОбласть ( «Строка» ), 1 );

Источник

Читайте также:  Кухонная тряпка стала склизкой как ее быстро отстирать
Оцените статью