группировка группы формы 1с
Программирование в 1С для всех
В этой статье я покажу, как в табличных документах 1С реализовывать группировку строк и колонок.
Группировка строк в табличном документе 1С
Для демонстрации создадим у обработки простой макет табличного документа с одной областью и с одним параметром области.
На основной форме обработки сделаем команду ВывестиГоризонтальнуюГруппировку, реквизит формы КоличествоЧисел (тип Число), и всё это разместим на форме.
При выполнении команды, я буду выводить ряд чисел с дробными частями. Для этого, создадим обработчик команды формы на клиенте и серверную процедуру, в которой будем заполнять табличный документ.
Получится такой код:
Подробно о формировании областей табличного документа читайте в статье:
Результат работы этого кода будет следующий:
Изменим этот макет: сделаем группировку целых чисел, а дробные числа будут с небольшим отступом.
Для того, чтобы дробные числа выводились с отступом изменим макет.
Откроем палитру свойств ячейки, в которой выводится параметр НомерСтроки.
В этой палитре нас интересует свойство АвтоОтступ. Установим в него значение.
На этом с макетом закончим. Доработаем код.
В этом коде мы применили методы НачатьАвтогруппировкуСтрок() и ЗакончитьАвтогруппировкуСтрок() перед тем как начали заполнять табличный документе, и после того как закончили. Кроме того, мы дополнили параметры метода Вывести табличного документе. Если в первом параметре указывается область которая будет выводиться в табличном документе, то во втором параметре указываем уровень группировки, в третьем – название группировки, а четвертом – булево значение, которое определяет, будет ли сворачиваться группировка или нет, после того, как она будет выведена.
Результат работы этого кода:
Группировка колонок в табличном документе 1С
Группировка колонок в табличном документе осуществляется по аналогии с группировкой строк. Для демонстрации создадим макет табличного документа, в котором сделаем вертикальную область с единственным параметром.
А также на основной форме обработки создадим команду формы, которую назовем «Вывести вертикальную группировку», и выведем её на форму.
Создадим обработчик команды и функцию в серверном контексте, которая формирует табличный документ с вертикальными областями, к которым применена группировка.
Смысл группировки вертикальных областей тот же, что и горизонтальных: используем методы НачатьАвтогруппировкуКолонок и ЗакончитьАвтогруппировкуКолонок перед выводом областей, а в методе Присоединить необходимо указать уровень группировки, название группы и признак того, будет развернута группа или нет, как и в методе Вывести.
Результат работы этого кода будет следующим:
Видео с бонусом! В этом бонусе я покажу, как сделать вывод иерархического справочника.
Другие статьи про табличные документы в 1С:
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Группировка элементов формы в 1С:Предприятие 8.2
Группировка элементов формы в 1С:Предприятие 8.2 — расположение элементов управляемой формы 1С:Предприятие по группам, чтобы более рационально занять площадь рабочего экрана (это особенно актуально, если реквизитов много). В этом примере мы поместим реквизиты Номер и Дата в одну группу, а реквизиты Контрагент и Договор — в другую группу.
Нажмем правой кнопкой мыши на элементе Номер и выберем из контекстного меню пункт Добавить.
Укажем тип элемента — обычная группа (по аналогии можно создавать и «необычные» группы — например, раскладывать реквизиты по страницам).
Из контекстного меню перейдем в свойства группы:
Укажем группировку Горизонтальная:
Перетащим мышью (удерживая левую кнопку) элементы Номер и Дата в Группу 1 в верхней части рабочего окна (с деревом реквизитов формы). Соответственно, в нижней части элементы группы выстроятся по горизонтали.
Аналогично создадим группу Группа 2 и перетащим в нее реквизиты формы Контрагент и Договор:
Если элементы перетащились не туда, их порядок можно изменить при помощи синих стрелок «Вверх» и «Вниз»:
Таким образом, мы расположили элементы по группам по горизонтали.
Аналогично (из этого же дерева и контекстного меню) можно группировать реквизиты табличной части, создавать страницы-закладки и другие элементы для упорядочения размещения элементов на форме, а также вкладывать одни группы реквизитов в другие.
УФ: Размещение элементов на форме 3 в 1С
Элементы в колонках (Горизонтальная и вертикальные группы)
Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti → |
Продолжаем рассматривать варианты размещения элементов на форме на примере вывода реквизитов документа на форму документа, состав документа представлен на рис. 1:
Рис. 1. Реквизиты документа
Разместим поля Организация, Подразделение, ТипПриходной, Склад в две колонки по два элемента. Для этого добавляем три группы (Группа – Обычная группа), одну горизонтальную и две вертикальные. У групп снимаем галочку у свойства ОтображатьЗаголовок, чтобы не выводилась пустая строка над элементами, или строка с заголовком, если он задан. Две вертикальные группы (Группа2 и Группа3) размещаем в горизонтальной (Группа1) (рис. 2):
Рис. 2. Добавление групп
Далее перетаскиваем мышкой элементы в группы, Организация, Подразделение в Группа2, а ТипПриходной, Склад в Группа3. Получаем такую форму (рис.3):
Рис. 3. Форма с элементами в колонках
В случае, когда в колонках оказывается разное количество элементов, для их выравнивания можно добавить на форму элемент Декорация, разместить его между полями ТипПриходной и Склад, указать у свойства РастягиватьПоВертикали значение Да (рис. 4):
Рис. 4. Добавление Декорации для выравнивания
Тогда получим форму (рис. 5):
Рис. 5. Добавленная декорация на форме в пользовательском режим
Интерактивные возможности табличного документа
Табличный документ 1С:Предприятия 8 служит не только для печати документов и отчетов. Он имеет расширенные возможности, которые превращают его в интерактивное средство взаимодействия с пользователем. К таким возможностям относятся:
Стоит заметить, что к интерактивным возможностям табличного документа можно также отнести сводные таблицы и элементы управления, располагающиеся в ячейках, но сейчас мы не будем на них останавливаться, а подробнее рассмотрим вышеперечисленные механизмы.
Расшифровки
Система «1С:Предприятие 8» поддерживает механизм расшифровок (drill-down, drill-through), когда пользователь щелкает на строке или ячейке отчета и получает более детальный отчет, если конечно это предусмотрено программистом.
Расшифровки делятся на стандартные и нестандартные. Стандартные расшифровки обрабатываются системой автоматически и не требуют дополнительных усилий от программиста, например, для документов будет открыта форма документа, а для элементов справочника будет открыта форма элемента. Если справочник редактируется в списке, то курсор будет установлен на текущем элементе в форме списка. Для выполнения нестандартной расшифровки предназначено событие ОбработкаРасшифровки.
Событие «ОбработкаРасшифровки» можно обработать, только если табличный документ помещен в форму как элемент управления, а не открывается в отдельном окне, поскольку это событие существует только у элемента управления «ПолеТабличногоДокумента». Ниже показаны категория свойств «События» элемента управления «ПолеТабличногоДокумента», где назначается процедура-обработчик расшифровки:
Сама процедура «РасшифроватьСтроку» может выглядеть следующим образом (как пример):
Примечание 1. В модуле приложения (аналог глобального модуля в версии 7.7) больше нет события ОбработкаЯчейкиТаблицы. Вся обработка расшифровок должна быть произведена в модуле формы, где располагается элемент управления «ПолеТабличногоДокумента».
Примечание 2. Событие «ОбработкаРасшифровки» возникает при щелчке на ячейке или рисунке, содержащих расшифровку. Не путайте его с событием «Выбор», возникающим для всех ячеек и рисунков при двойном щелчке мыши или нажатии клавиши Enter, причем, сначала возникает событие «Выбор», а потом «ОбработкаРасшифровки».
Группировки
В 1С:Предприятии 8 появилась возможность группировать данные в отчете. Группировки могут быть горизонтальные и вертикальные, тогда слева и сверху появляются специальные маркеры, позволяющие пользователю разворачивать и сворачивать группы, как показано на следующем рисунке:
Самый простой способ добавить группировки в отчет — доверить эту задачу системе, тогда от программиста потребуются минимальные усилия. Необходимо всего лишь применить методы НачатьАвтоГруппировкуСтрок/НачатьАвтоГруппировкуКолонок и ЗакончитьАвтоГруппировкуСтрок/ЗакончитьАвтоГруппировкуКолонок, которые включают режим автоматической группировки строк или колонок соответственно. В этом режиме при вызове методов Вывести (для строк) и Присоединить (для колонок) указываются дополнительные параметры для группировки:
При использовании группировок очень полезно установить свойство ячейки «АвтоОтступ» в какое-нибудь ненулевое значение, например, 5. Тогда система будет автоматически добавлять заданное количество пробелов слева текста ячейки, основываясь на текущем уровне группировки. В результате отчет приобретет удобный внешний вид для отображения иерархии данных.
Следующий пример выводит список товаров с группировками:
Примечания
Ячейки табличного документа могут иметь примечания, тогда в правом верхнем углу ячейки выводится маленький красный треугольник. При наведении курсора мыши на ячейку примечание показывается во всплывающем окне:
Программная установка примечаний реализуется следующим образом:
Обратите внимание, что свойство «Примечание» у объекта «ОбластьЯчеекМакета» является объектом типа «Рисунок», а не простой строкой. Через этот объект можно редактировать внешний вид примечания, шрифт и цвет текста, фон, линии и т.д.
Программно создать группы конолок и колонки на форме
Доброго времени суток.
Ни как ни могу понять в чём дело, помогите пожалуйста разобраться.
Суть дела: есть форма справочника, в ней есть таблица «ТаблицаРедактирования» нужно в эту таблицу программно добавить Колонки и разместить их в определённые группы колонок, которые также создаются программно.
Пишу следующий код
// создаём новые группы колонок
Сч = 1;
СоответствиеИменГруппировок = Новый Соответствие;
Для Каждого ТекЭлемент ИЗ ТаблицаГруппировок Цикл
Если Не ТекЭлемент.Группировка = «» Тогда
НовыйЭлемент = Элементы.Добавить(«ГруппировкаКол» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
Тип(«ГруппаФормы»),Элементы.ТаблицаРедактирования);
НовыйЭлемент.Заголовок = ТекЭлемент.Группировка;
НовыйЭлемент.Вид = ВидГруппыФормы.ГруппаКнопок;
СоответствиеИменГруппировок.Вставить(ТекЭлемент.Группировка, НовыйЭлемент);
Сч = Сч + 1;
КонецЕсли;
// здесь всё отрабатывается правильно, в ТаблицаРедактирования добавляются новые ГруппыКолонок
// Добавляем реквизиты Формы
МассивРеквизитов = Новый Массив;
ТипыРеквизита = Новый Массив;
ТипыРеквизита.Добавить(Тип(«Число»));
ОписаниеТиповДляРеквизита = Новый ОписаниеТипов(«Число», Новый КвалификаторыЧисла(20, 4));
Сч = 1;
Для Каждого ТекНастройка из ТЗНастройкиКолонок Цикл
НовыйРеквизит = Новый РеквизитФормы(«Значение» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
ОписаниеТиповДляРеквизита,
«ТаблицаРедактирования»,
«Значение» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
Истина);
ИзменитьРеквизиты(МассивРеквизитов);
//Данный участок кода также отрабатывается без ошибок
// Добавляем колонки на форму
Для Сч = 1 по ВсегоРасчетов Цикл
НовыйЭлемент = Элементы.Добавить(«ТаблицаРедактированияЗначение» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
Тип(«ПолеФормы»), РодительЭлемента); // на этой строчке система начинает ругаться (Не допустимое значение параметров)
При создании новых группировок колонок и реквизитов формы проблем не возникает. Ошибка выдаётся при попытке добавления в форму колонок
в строчке
НовыйЭлемент = Элементы.Добавить(«ТаблицаРедактированияЗначение» + Формат(Сч, «ЧЦ=3; ЧВН=; ЧГ=»),
Тип(«ПолеФормы»), РодительЭлемента); // на этой строчке система начинает ругаться (Не допустимое значение параметров)
При чём если в качестве РодительЭлемента указан путь Элементы.ТаблицаРедактирования, то всё отлично добавляется, но при этом естественно колонки добавляются непосредственно в таблицу, а нужно чтобы добавлялись в нужную группировку колонки.
Не совсем ясно в чём ошибка: в описании метода Добавить видим что третий параметр может быть
(необязательный)
Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма.
Родитель для добавляемого элемента.
Если не указан, то добавляется на верхний уровень.
При этом РодительЭлемента является именно ГруппойФормы, т.е. по типу абсолютно подходит. А в чём ошибке не ясно.