Группировка колонок табличного поля

Программирование в 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

Детальные записи

Начнем с простого. Если нам нужно вывести все строки набора в отчет, добавляем группировку «Детальные записи». Добавление новой группировки производится через правую клавишу мыши (ПКМ) на уровне отчета или через клавишу «Ins». Чтобы добавить группировку «Детальные записи», в открывшемся диалоге мы не указываем поле.

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

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

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

Группировка по полю

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

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

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

Теперь в наш отчет попали ресурсы, но не попали прочие поля. Об этом поговорим позже.

Группировка иерархическая

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

Например, сделаем вариант отчета с группировкой по номенклатуре, включая итоги по группам (папкам).

Если выбрать вариант «Иерархия» добавляются итоги по родителям и элементам, если «Только иерархия», то итоги только по родителям. Выберем вариант «Иерархия» и посмотрим, что получится:

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

Группировка по нескольким полям

Группировку можно сделать не по одному полю, а по нескольким. Например, в случае нашего отчета сделаем группировку по периоду и включим для этого в группировку два поля – начало периода и конец периода. Добавим группировку, указав поле начало периода (или не указывая ничего), затем кликнем по группировке, в открывшемся списке определим следующие поля:

По смыслу такая группировка аналогична конструкции «СГРУППИРОВАТЬ ПО НачалоПериода, КонецПериода» в языке запросов.

Получим вот такой отчет

Подчиненные группировки

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

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

Добавим в предыдущий вариант отчета группировку детальных записей:

И добавим сразу себестоимость в ресурсы. Получится такой отчет:

Действие настроек родительской группировки на подчиненные

При использовании группировок нужно учитывать важную особенность работы СКД – наследование настроек подчиненными группировками. Все группировки наследуют все настройки заданные на уровне отчета. Все подчиненные группировки наследуют список выбранных полей и сортировку от родительской группировки, если в списке указан элемент «Авто». Условное оформление, отбор, другие настройки не наследуются от родительской группировоки.

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

Для этого мы в поле «Настройки» выбираем группировку «Детальные записи». В выбранных полях оставляем «Авто» — это значит, что мы наследуем в группировке поля из родительских группировок. И добавляем поле код. Получаем (в других настройках нужно указать расположение реквизитов – «Отдельно»):

Мы можем переопределить полностью родительские поля и задать свой список полей:

Таблица

До сих пор мы рассматривали с вами «одномерные» отчеты, когда информация из набора разворачивалась в одном направлении – вертикальном. В 1С СКД имеется возможность выводить информацию в двух направлениях одновременно – в вертикальном и горизонтальном в виде таблицы. Для этого используется элемент структуры «Таблица»:

При добавлении таблицы в настройки у нее доступны два измерения, в которые можно добавлять группировки – «Строки» для вертикального разворота, «Колонки» — для горизонтального разворота:

Используя набор данных с простым запросом:

Построим отчет, в котором в строках разместим группировку по контрагенту и номенклатуре, а в колонках по году и месяцу:

В отчете у нас определены ресурсы, которые мы добавили в настройки для отчета в выбранные поля:

Получили вот такой отчет:

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

Собственные итоги

При использовании таблицы в структуре отчета на СКД часто возникает необходимость добавить дополнительные колонки со своим составом полей или реализовать итог по горизонтали с другим составом ресурсов. Тоже самое касается и строк – чаще бывает необходимо реализовать собственные итоги в строках.

Рассмотрим на практическом примере. Пусть у нас есть такой (немного странный отчет):

За каждый месяц мы выводим количество поступивших и проданных товаров. В общем итоге по горизонтали (и только в нем) нам нужно вывести процентное отношение расхода к приходу. Первой колонкой нужно вывести остаток по номенклатуре. В общем итоге за период нужно вывести максимальный приход и максимальный расход.

Итак, первоначальная настройка отчета у нас совсем простая:

Набор и запрос несложные – вы можете сделать его на своей конфигурации сами.

Начнем с добавления процента в общем итоге. Для этого отключим вывод общего итога по горизонтали на закладке «Другие настройки»:

Далее нам нужно добавить группировку в колонки, в которой мы разместим наши итоги. Это может быть или группировка детальных записей или группировка по вычисляемому полю. Первое чуть проще, но итоговый результат нас не совсем устроит – нет заголовка у итога (это можно доработать с помощью макета), выберем второй вариант. Для этого добавим вычисляемое поле для общего итога «Итого», добавим вычисляемое поле «Процент» для расчета процента:

Добавим ресурс для общего итога с такой формулой:

Добавим колонку в настройки, добавим наши поля в выбранные ТОЛЬКО для группировки «Итого»:

Получим отчет в нужном виде:

Теперь добавим колонку остатка после колонки номенклатура. Для этого добавим второй набор данных (остатки), свяжем его с основным набором:

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

Получим вот такую форму отчета:

И последняя задача – поменять общий вертикальный итог. Для нашей задачи такое требование можно выполнить несколько проще — без добавления группировки с собственным итогом, потому что в нашем случае не меняется макет общего итога, а меняются только значения ресурсов. Если нужно поменять макет ресурсов (состав ресурсов), то у нас есть ролик, в котором можно посмотреть, как делаются собственные итоги в строках.

Мы же решим эту часть задачи по другому, с помощью опции «Рассчитывать по» на закладке «Ресурсы»:

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

Здесь важно заметить, что в исходном наборе данные по номенклатуре и месяцу должны быть сгруппированы, чтобы не было повторений для одной номенклатуры. Если такие повторения будут, то функция «Максимум» будет работать неверно. В этом случае выражение для ресурса в общем итоге будет более сложное, но это тема для другой статьи.

Вывод группировок в пользовательские настройки

Кроме изменения структуры отчета через варианты отчета в СКД имеется возможность изменять группировки отчета в режиме пользовательских настроек. Это может пригодится если пользователь пользуется одним и тем же вариантом отчета, но может часто изменять группировки отчета по своему желанию.

Для этого в СКД есть возможность добавить настройку группировок в пользовательские настройки:

Для отчета в целом

Для таблицы есть возможность управлять группировками строк и колонок:

Для выбранной группировки можно управлять вложенными (подчиненными) группировками:

В режиме предприятия это выглядит примерно так:

Группировки добавляются к заданным в варианте отчета. Можно не устанавливать никакие группировки в варианте отчета и тогда пользователь может полностью управлять структурой отчета. Надо конечно заметить, что в этом режиме нельзя добавить таблицу или диаграмму – только обычную группировку. Причем нельзя добавить составную группировку. При добавлении группировки как показано на рисунке устанавливается дополнительно две родительских группировки, а не одна составная:

Программная работа с группировками

При создании отчета на СКД имеется возможность создать отчет полностью программно. При этом можно таким образом создать как схему компоновки, так и заполнить настройки компоновщика настроек. В обоих случаях мы работаем с объектом «НастройкиКомпоновкиДанных».

Пример программного создания группировки

// Добавим новую группировку в структуру отчета.

// Укажем, по каким полям нужно группировать.

ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(«Номенклатура»);

// Укажем тип иерархии.

Более подробно можно изучить программную работу с настройками (не только группировок) можно по ссылкам указанным в материалах для подготовки.

Источник

Читайте также:  Беспроводные наушники с микрофоном huawei freebuds 3i ceramic white walrus ct025
Оцените статью