- Интерактивные возможности табличного документа
- Расшифровки
- Группировки
- Примечания
- Программно добавить группировку в табличный документ
- Программирование в 1С для всех
- Группировка строк в табличном документе 1С
- Группировка колонок в табличном документе 1С
- Макет табличного документа с заранее заданными группировками
Интерактивные возможности табличного документа
Табличный документ 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 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Источник
Макет табличного документа с заранее заданными группировками
Столкнулся давеча с проблемой: есть печатная форма с макетом табличного документа (далее макет), из которого собирается результирующий ТабДок (далее результат). В макете задана сложная иерархия группировок колонок, при этом количество колонок результата не увеличивается, т.е. результат растёт только в длину (например, добавляются строки табличной части), а ширина ограничена шириной заранее нарисованного макета. В связи с этим стоит логичный вопрос о том, как вывести в результат заданные в макете группировки . Наверняка многие знают, что если просто выводить области макета в результат, то группировки, будут теряться. А программно прописывать уровни для каждой колонки и выводить их по отдельности в цикле, в данном случае абсолютно лишено необходимости.
Значит, пришло время стряхивать пыль с бубна и каким-то образом задабривать богов 1С.
Не найдя ответа в СП у коллег и у яндекса , пришлось попотеть и методом научного тыка найти-таки заветное решение.
Далее работающий код с подробными комментариями. Во вложении обработка с примерами макетов и этим самым кодом.
Процедура КнопкаВыполнитьНажатие ( Кнопка )
Макет = ПолучитьМакет ( «Макет» );
ОбластьШапка = Макет . ПолучитьОбласть ( «Шапка» );
ТабДок = новый ТабличныйДокумент ;
//После вывода в ТабДок макета с группировками, в ТабДоке устанавливаются все группировки макета
//Если выводить не макет, а область макета, то группировки не переносятся
//Т.е. при применении метода » ПолучитьОбласть » группировки в данной области не учитываются, как будто их не было
//Группировки колонок в новом табличном документе устанавливаются ПЕРВЫМ выведенным в него табдоком ,
//в котором есть хотябы одна строка, поэтому выводить макет с группировками обязательно нужно в самом начале
//и в макете помимо самой группировки должны быть строки
ТабДок . Вывести ( ПолучитьМакет ( » СохраненныеГрупировкиКолонок » ));
ТабДок . Вывести ( ОбластьШапка );
//удалим строки макета » СохраненныеГрупировкиКолонок «, т.к. они нам нужны были только для того,
//чтобы установить в новом табдоке нужную нам группировку колонок
//Важно! — если после удаления строк из документа удалить все строки, то группировка колонок тоже очистится,
//поэтому удаляем «лишние» строки, только после того, как вывели в табдок , хотя бы одну «не лишнюю» строку
//обязательно указываем тип смещения отличный от » БезСмещения » иначе очищенная от текста область останется в нашем табдоке
ТабДок . УдалитьОбласть ( ТабДок . Область ( 1 ,, 1 ,), ТипСмещенияТабличногоДокумента . ПоГоризонтали );
//на всякий случай проверим что с группировкой строк тоже всё в порядке
ТабДок . Вывести ( Макет . ПолучитьОбласть ( «Строка» ), 0 );
ТабДок . Вывести ( Макет . ПолучитьОбласть ( «Строка» ), 1 );
Источник