Тип: ТипРазмещенияИтогов. Определяет размещение итогов в колонках.
Полное описание, параметры и ограничения
ПостроительОтчета.РазмещениеИтоговВКолонках (ReportBuilder.TotalsPlacementOnColumns)
ПостроительОтчета (ReportBuilder)
РазмещениеИтоговВКолонках (TotalsPlacementOnColumns)
Доступен, начиная с версии 8.0.
Использование:
Чтение и запись.
Описание:
Тип: ТипРазмещенияИтогов.
Определяет размещение итогов в колонках.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Разложить стоимость товаров по строкам категорий и колонкам товаров
Собственный перекрёстный отчёт: Категория по вертикали, Наименование по горизонтали, стоимость в пересечении. Разбираем шесть режимов размещения.
Где и как запускать
Полный модуль управляемой формы собственной учебной EPF: клиентский просмотр и серверное формирование отчёта.
Подготовка
Учебная внешняя обработка с пустой управляемой основной формой. Создайте команду УчебныйПример, кнопку команды и назначьте действие УчебныйПример.
Вставьте полный модуль урока: клиентский обработчик и серверную функцию. Каждый урок — отдельная копия модуля.
Откройте EPF в тонком клиенте Windows. Данные Книга/Ручка/Коробка создаются только в памяти; запрос урока с параметрами не читает таблицы базы.
ПостроительОтчета — существующий API для изучения/сопровождения старого кода. Это не СистемаКомпоновкиДанных и не рекомендация заменять ею современные отчёты.
Отдельная собственная конфигурация называется УчебнаяКонфигурацияСинтаксиса. Примеры создают только данные в памяти и собственный отчёт.
Используйте толстый клиент Windows 8.5.1.1343. УсловноеОформление в этих уроках относится к старому построителю, не к классу УсловноеОформлениеКомпоновкиДанных.
В исходных данных Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; Коробка: 2 × 30 = 60. Общий итог 860, Канцелярия 800, Упаковка 60.
&НаКлиенте
Процедура УчебныйПример(Команда)
ТабДок = СформироватьУчебныйОтчет();
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Учебный ПостроительОтчета");
КонецПроцедуры
&НаСервере
Функция СформироватьУчебныйОтчет()
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Образцы = Новый Массив;
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
Для Каждого Образец Из Образцы Цикл
СтрокаДанных = Данные.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
КонецЦикла;
Описание = Новый ОписаниеИсточникаДанных(Данные);
Для Каждого Колонка Из Описание.Колонки Цикл
Колонка.Поле = Истина;
Колонка.Отбор = Истина;
Колонка.Порядок = Истина;
Колонка.Измерение = Колонка.Имя = "Категория";
КонецЦикла;
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Описание;
Для Каждого Колонка Из Описание.Колонки Цикл
Если Колонка.Имя = "Наименование" Тогда
Колонка.Измерение = Истина;
КонецЕсли;
Если Колонка.Имя = "Сумма" Тогда
Колонка.Итог = "Сумма(Сумма)";
КонецЕсли;
КонецЦикла;
Построитель.АвтоДетальныеЗаписи = Ложь;
Построитель.ВыводитьДетальныеЗаписи = Истина;
Построитель.ВыводитьЗаголовокОтчета = Истина;
Построитель.ВыводитьОбщиеИтоги = Ложь;
Построитель.ВыводитьПодвалОтчета = Ложь;
Построитель.ВыводитьПодвалТаблицы = Ложь;
Построитель.ВыводитьШапкуТаблицы = Истина;
Построитель.ОтображатьСостояние = Ложь;
Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
Построитель.ТекстЗаголовка = "Учебный отчёт — вымышленные данные";
Построитель.АвтоДетальныеЗаписи = Ложь;
Построитель.ВыводитьДетальныеЗаписи = Ложь;
Построитель.ВыводитьОбщиеИтоги = Истина;
Построитель.ИзмеренияСтроки.Очистить();
Построитель.ИзмеренияКолонки.Очистить();
Построитель.ИзмеренияСтроки.Добавить("Категория", "УчебнаяКатегория", "Категория");
Построитель.ИзмеренияКолонки.Добавить("Наименование", "УчебныйТовар", "Товар");
Построитель.ВыбранныеПоля.Очистить();
Построитель.ВыбранныеПоля.Добавить("Сумма", "Стоимость");
Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Отдельно;
Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Отдельно;
Построитель.РазмещениеИтоговВСтроках = ТипРазмещенияИтогов.Подвал;
Построитель.РазмещениеИтоговВКолонках = ТипРазмещенияИтогов.Подвал;
Построитель.РазмещениеРеквизитовИзмеренийВСтроках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями;
Построитель.РазмещениеРеквизитовИзмеренийВКолонках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями;
Сообщить(Построитель.ИзмеренияСтроки.Количество() = 1);
Сообщить(Построитель.ИзмеренияКолонки.Количество() = 1);
Сообщить(Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Отдельно);
Сообщить(Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Отдельно);
Сообщить(Построитель.РазмещениеИтоговВСтроках = ТипРазмещенияИтогов.Подвал);
Сообщить(Построитель.РазмещениеИтоговВКолонках = ТипРазмещенияИтогов.Подвал);
Сообщить(Построитель.РазмещениеРеквизитовИзмеренийВСтроках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями);
Сообщить(Построитель.РазмещениеРеквизитовИзмеренийВКолонках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями);
Сообщить(Данные.Итог("Сумма") = 860);
ТабДок = Новый ТабличныйДокумент;
Построитель.Вывести(ТабДок);
Возврат ТабДок;
КонецФункции
Разбор по шагам
В описании собственного источника разрешить Категория и Наименование как измерения; у Сумма задать итоговое выражение Сумма(Сумма).
Добавить одну группировку строки и одну колонки. Оставить выбранным только ресурс Сумма, детали отключить, общие итоги включить.
Для обеих осей явно разместить измерения отдельно, итоги в подвале, реквизиты вместе с измерениями.
Сверить настройки и исходные суммы. После вывода вручную проверить реальные пересечения: Канцелярия/Книга 750, Канцелярия/Ручка 50, Упаковка/Коробка 60.
Как проверить результат
Девять проверок настроек и исходного итога дают Истина. Строковое и колоночное измерение по одному.
В самом отчёте вручную проверить 750, 50, 60; итоги категорий 800 и 60, общий итог 860. Проверка настроек не подменяет проверку выводимого макета.
Ожидаемый результат
Полный содержательный перекрёстный отчёт из своих данных с явным разделением осей, ресурсов и оформления.
На что обратить внимание
Разрешённое измерение в описании источника само по себе не создаёт группировку: её добавляют в ИзмеренияСтроки/ИзмеренияКолонки.
Итог задаётся выражением, а не числом 860. Размещение итогов задаёт место вывода, не формулу подсчёта.
Дополнительные реквизиты измерений здесь не созданы, поэтому соответствующий режим задан и прочитан, но отдельное видимое влияние не обещается.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.