Скд как сделать горизонтальную группировку

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024

Есть таблица СКД. Пусть строки - А, колонки - Б, ресурсы - р1, р2, р3, р4. Т.е. исходная таблица имеет вида А, Б, р1, р2, р3, р4 Получается, что одна колонка Б содержит четыре столбца (р1, р2, р3, р4), а таблица содержит несколько колонок. Хочется иметь возможность свернуть столбцы ресурсов в колонке.

Программно хотите или просто настройками? Впрочем, там все так же как и с вертикальной группировкой вроде - в колонки таблицы добавляешь вложенные группировки и вот оно счастье

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

Аппаратно) Руками то есть) Хочу. Только не группировку, а именно возможность свернуть - во всем строках таблицы значения поля Б уникальны (т.е. по 1 строке на каждое значение)

Не совсем понял, что ты хочешь, но может быть в СКД в настройках на закладке выбранные поля добавить новую группу, туда перетащить все 4 ресурса и у группы поставить расположение - вертикально. Это?

Нет) Допустим, колонка Контрагент, а ресурсы - Приход, Расход, Оборот Отчёт будет состоять из колонок вида |Контрагент | |Приход|Расход|Оборот| Нужна возможность прятать некоторые колонки (плюсом или как-нибудь) из формы

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

может быть в наборах данных задать выражение представление? Например, установить на форму флажок, если он равен истина, то использовать такое-то выражение. Там ведь можно использовать общий модуль, можно там описать

Блин, ну возьми и управляй тогда руками ТабличнымПолем. Можно сделать невидимым нужный столбец, это просто, и не надо отчет переформировывать. Кнопку свою заведи на форме, даже много кнопок - скрыть/показать. И при нажатии присваивай Видимость = Ложь/Истина.

Так что в итоге, как сделать плюсики на столбцах. Не группировки ради, а чтобы скрыть/показать колонку. И Сделать это методами СКД.

не понял, как это сделать? и решит ли это мою задачу, а задача стоит в том чтобы эти самые плюсики выставить всем столбцам, а не только ресурсам

забудь про "плюсики" - это метод решения твоей проблемы через задницу включение группировок в пользовательские настройки вызывает тот же визуальный эффект - выключил группировку и получаешь отчет БЕЗ колонок этой групрпировки. главное удобно расположить панель быстрых настроек(я делаю ее в выпадающей форме настроек по кнопке, а не прямо на форме как в типовых) сделать это можно автогенерацией формы и прописать пару связок в палитре свойств основной форме. работы на 10 минут, результат тот, что тебе нужен, цена 500К или приобрети опыт сам.

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

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

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

Для того чтобы свернуть/развернуть группировки определенного уровня у табличного документа имеется метод ПоказатьУровеньГруппировокСтрок() (для колонок имеется аналогичный метод ПоказатьУровеньГруппировокКолонок ). Данный метод раскрывает группировки с уровнем, меньше переданного в метод (нумерация уровней начинается с нуля), закрывает группировки с уровнем, равным переданным и отставляет без изменений группировки с уровнем больше переданного.

Таким образом, если вызывать метод ПоказатьУровеньГруппировокСтрок() с уровнем 1, то результат для приведенного в начале статьи примера будет следующим:

При этом если раскрыть зарытые группировки, то вложенные группировки будут раскрытыми.

Если нужно, чтобы были скрыты все группировки до определенного уровня, то следует вызывать метод ПоказатьУровеньГруппировокСтрок() в цикле, последовательно скрывая все уровни до нужного.

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

1с. СКД. Уровень группировки по умолчанию.
Как-то изощрялся и понадобилось мне выводить отчет СКД 1с так, чтобы группировки были свернуты до определенного уровня по умолчанию. Вот как это было сделано.

1. В Модуле объекта отчета создать типовую процедуру "ПриКомпоновкеРезультата"
2. В тело процедуры вставить код

СтандартнаяОбработка = Ложь ;
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных ;
Макет = КомпоновщикМакет . Выполнить ( СхемаКомпоновкиДанных , КомпоновщикНастроек . Настройки , ДанныеРасшифровки ) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных ;
ПроцессорКомпоновки . Инициализировать ( Макет , , ДанныеРасшифровки ) ;
ПроцессорВывода = новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент ;
ПроцессорВывода . УстановитьДокумент ( ДокументРезультат ) ;
ПроцессорВывода . Вывести ( ПроцессорКомпоновки ) ;
ДокументРезультат . ПоказатьУровеньГруппировокСтрок ( 1 ) ;

3. В последнй строке задать уровень группировок. 0-самый верхий уровень

СКД пронумеровать группировку
СКД свернуть

Как в СКД вывести отчет свернутым по уровням.

Если у Вас появились вопросы по статье или остались нерешенные проблемы обсудить их Вы можете на Форуме 1С Вопросы и ответы

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

Система компоновки данных 1С 8.3 для начинающих: считаем итоги (ресурсы)

Автор уроков и преподаватель школы: Владимир Милькин

Ставим цель

Целью этого урока будет:

  • Написать отчёт, который выводит список продуктов (справочник Еда), их калорийность и вкус.
  • Сделать группировку продуктов по их цвету.
  • Познакомиться с возможностью подведения итогов (ресурсы) и вычисляемыми полями.

Создаём новый отчёт

Как и на предыдущих уроках открываем базу "Гастроном" в конфигураторе и создаём новый отчёт через меню "Файл"->"Новый. ":

Вид документа - внешний отчёт:

В форме настройки отчёта пишем имя "Урок3" и нажимаем кнопку "Открыть схему компоновки данных":

Оставляем имя схемы по умолчанию и нажимаем кнопку "Готово":

Добавляем запрос через конструктор

На закладке "Набор данных" нажимаем зелёный плюсик и выбираем пункт "Добавить набор данных - запрос":

Вместо того, чтобы писать текст запроса вручную, вновь запускаем конструктор запроса:

На вкладке "Таблицы" перетягиваем таблицу "Еда" из первой колонки во вторую:

Выбираем из таблицы "Еда" поля, которые будем запрашивать. Для этого перетаскиваем поля "Наименование", "Вкус", "Цвет" и "Калорийность" из второй колонки в третью:

Получилось вот так:

Нажимаем кнопку "ОК" - текст запроса сформировался автоматически:

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

Переходим на закладку "Настройки" и нажимаем на волшебную палочку, чтобы вызвать конструктор настроек:

Выбираем вид отчета "Список. " и нажимаем кнопку "Далее":

Перетаскиваем из левой колонки в правую поля, которые будут отображаться в списке и нажимаем "Далее":

Перетаскиваем из левой колонки в правую поле "Цвет" - по нему будет происходить группировка строк в отчёте. Нажимаем "ОК":

А вот и результат работы конструктора. Иерархия нашего отчёта:

  • отчёт в целом
  • группировка "Цвет"
  • детальные записи - строки с названиями еды

Сохраним отчёт (кнопка дискета) и не закрывая конфигуратора тут же откроем его в режиме пользователя. Получилось вот так:

Меняем порядок колонок

Но давайте поменяем порядок колонок (стрелки вверх-вниз), чтобы он был таким как на рисунке ниже:

Сохраним отчёт и вновь откроем в режиме пользователя:

Отлично, так гораздо лучше.

Подводим итог (сумму) по калорийности

Было бы неплохо выводить итог калорийности продуктов по группам. Чтобы видеть сумму калорийности всех продуктов, скажем, белого или жёлтого цвета. Или узнать общую калорийность вообще всех продуктов в базе.

Для этого существует механизм вычисления ресурсов.

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

При этом в поле выражение выбираем из выпадающего списка "Сумма(Калорийность)", так как итогом будет являться сумма всех входящих в итог элементов:

Сохраняем и формируем отчёт:

У нас появились итоги по каждой из групп и по отчёту в целом.

Подводим итог (среднее) по калорийности

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

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

Чтобы завести такое "виртуальное" поле воспользуемся механизмом вычисляемых полей.

Переходим на закладку "Вычисляемые поля" и нажимаем зелёный плюсик:

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

Мы добавили новое поле ("СредняяКалорийность"), но в отчёте оно само по себе не появится - нужно или вновь вызывать конструктор настроек ("волшебная палочка") или добавить это поле вручную.

Поступим вторым способом. Для этого переходим на закладку "Настройки", выбираем "Отчет" (ведь мы хотим добавить поле в целом к отчёту), выбираем внизу закладку "Выбранные поля" и перетаскиваем поле "СредняяКалорийность" из левой колонки в правую:

Получилось вот так:

Сохраняем и формируем отчет:

Поле появилось и мы видим, что его значениями являются значения поля "Калорийность". Отлично!

Но мы помним, что конечная цель - посчитать среднюю калорийность по группам и в целом по отчёту.

Для этого вновь воспользуемся уже знакомым нам механизмом ресурсов (подведение итогов). Переходим на закладку "Ресурсы" и перетаскиваем поле "СредняяКалорийность" из левой колонки в правую:

При этом в колонке "Выражение" выбираем "Среднее(СредняяКалорийность)":

Сохраняем и формируем отчёт:

Видим, что по группам, то есть по каждому цвету, и по отчёту в целом совершенно верно посчиталось среднее значение. Но присутствуют лишние записи по отдельным продуктам (не по группам), которые хотелось бы убрать из отчёта.

Знаете почему они появились (значения не по группам)? Потому что, когда мы добавляли поле "СредняяКалорийность" в настройки отчёта, на втором шаге мы выделили весь отчёт в целом и это новое поле попало в элемент "Детальные записи".

Исправим ошибку. Для этого вернёмся на закладку "Настройки", выберем "Детальные записи" сначала сверху (шаг 2), а затем "Детальные записи" снизу (шаг 3), перейдём на закладку "Выбранные поля" и увидим в её правой колонке элемент "Авто".

Элемент "Авто" - это не одно поле. Это несколько полей, которые попадают сюда автоматически на основании вышестоящих настроек.

Чтобы увидеть, что это за поля - нажмём на элемент "Авто" правой кнопкой и выберем пункт "Развернуть":

Элемент "Авто" раскрылся в следующие поля:

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

Сохраним и сформируем отчёт:

То, что надо! Значения "СредняяКалорийность" остались только в группах (цвет) и в итоге по отчёту в целом.

Подводим итог (количество) по вкусам

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

Ну, например, для белого цвета, это значение будет равно 2 (всего два вкуса "Кислый" и "Сладкий"), а для жёлтого 3 ("Сладкий", "Солёный" и "Кислый").

Переходим на закладку "Ресурсы" и перетаскиваем поле "Вкус" из левой колонки в правую:

В качестве выражения выбираем "Количество(Различные Вкус)":

Сохраняем и формируем отчёт:

Войдите на сайт как ученик

Для учеников

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

На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .

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

В данном примере данные (Валюта и курс) запрашиваются из регистра сведений "КурсыВалют". В макете СКД создан "Набор данных", в котором запрашиваются записи регистра за определенный интервал времени.

В ресурсах выбирается поле которое будет группироваться. Для соединения строк по разделителю, в поле "Выражение", прописывается агрегатная функция СоединитьСтроки("ИмяПоля", "Разделитель").

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

В результате поле курс сгруппируется через запятую.

Комментарии (0)

Читайте также: