ПостроительОтчета.РазмещениеИзмеренийВКолонках

Свойства · DimensionsPlacementOnColumns

Тип: ТипРазмещенияИзмерений. Содержит тип размещения измерений в колонках отчета.

Полное описание, параметры и ограничения

ПостроительОтчета.РазмещениеИзмеренийВКолонках (ReportBuilder.DimensionsPlacementOnColumns)

ПостроительОтчета (ReportBuilder)

РазмещениеИзмеренийВКолонках (DimensionsPlacementOnColumns)

Доступен, начиная с версии 8.0.

Использование:
Чтение и запись.
Описание:
Тип: ТипРазмещенияИзмерений.
Содержит тип размещения измерений в колонках отчета.
Доступность:

Сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Разложить стоимость товаров по строкам категорий и колонкам товаров

Собственный перекрёстный отчёт: Категория по вертикали, Наименование по горизонтали, стоимость в пересечении. Разбираем шесть режимов размещения.

Где и как запускать

Полный модуль управляемой формы собственной учебной EPF: клиентский просмотр и серверное формирование отчёта.

Подготовка

  1. Учебная внешняя обработка с пустой управляемой основной формой. Создайте команду УчебныйПример, кнопку команды и назначьте действие УчебныйПример.

  2. Вставьте полный модуль урока: клиентский обработчик и серверную функцию. Каждый урок — отдельная копия модуля.

  3. Откройте EPF в тонком клиенте Windows. Данные Книга/Ручка/Коробка создаются только в памяти; запрос урока с параметрами не читает таблицы базы.

  4. ПостроительОтчета — существующий API для изучения/сопровождения старого кода. Это не СистемаКомпоновкиДанных и не рекомендация заменять ею современные отчёты.

  5. Отдельная собственная конфигурация называется УчебнаяКонфигурацияСинтаксиса. Примеры создают только данные в памяти и собственный отчёт.

  6. Используйте толстый клиент Windows 8.5.1.1343. УсловноеОформление в этих уроках относится к старому построителю, не к классу УсловноеОформлениеКомпоновкиДанных.

  7. В исходных данных Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; Коробка: 2 × 30 = 60. Общий итог 860, Канцелярия 800, Упаковка 60.

&НаКлиенте
Процедура УчебныйПример(Команда)
    ТабДок = СформироватьУчебныйОтчет();
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.Показать("Учебный ПостроительОтчета");
КонецПроцедуры

&НаСервере
Функция СформироватьУчебныйОтчет()
    Данные = Новый ТаблицаЗначений;
    Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
    Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
    Образцы = Новый Массив;
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
    Для Каждого Образец Из Образцы Цикл
        СтрокаДанных = Данные.Добавить();
        ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
        СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
    КонецЦикла;
    Описание = Новый ОписаниеИсточникаДанных(Данные);
    Для Каждого Колонка Из Описание.Колонки Цикл
        Колонка.Поле = Истина;
        Колонка.Отбор = Истина;
        Колонка.Порядок = Истина;
        Колонка.Измерение = Колонка.Имя = "Категория";
    КонецЦикла;
    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Описание;
    Для Каждого Колонка Из Описание.Колонки Цикл
        Если Колонка.Имя = "Наименование" Тогда
            Колонка.Измерение = Истина;
        КонецЕсли;
        Если Колонка.Имя = "Сумма" Тогда
            Колонка.Итог = "Сумма(Сумма)";
        КонецЕсли;
    КонецЦикла;
    Построитель.АвтоДетальныеЗаписи = Ложь;
    Построитель.ВыводитьДетальныеЗаписи = Истина;
    Построитель.ВыводитьЗаголовокОтчета = Истина;
    Построитель.ВыводитьОбщиеИтоги = Ложь;
    Построитель.ВыводитьПодвалОтчета = Ложь;
    Построитель.ВыводитьПодвалТаблицы = Ложь;
    Построитель.ВыводитьШапкуТаблицы = Истина;
    Построитель.ОтображатьСостояние = Ложь;
    Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
    Построитель.ТекстЗаголовка = "Учебный отчёт — вымышленные данные";
    Построитель.АвтоДетальныеЗаписи = Ложь;
    Построитель.ВыводитьДетальныеЗаписи = Ложь;
    Построитель.ВыводитьОбщиеИтоги = Истина;
    Построитель.ИзмеренияСтроки.Очистить();
    Построитель.ИзмеренияКолонки.Очистить();
    Построитель.ИзмеренияСтроки.Добавить("Категория", "УчебнаяКатегория", "Категория");
    Построитель.ИзмеренияКолонки.Добавить("Наименование", "УчебныйТовар", "Товар");
    Построитель.ВыбранныеПоля.Очистить();
    Построитель.ВыбранныеПоля.Добавить("Сумма", "Стоимость");
    Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Отдельно;
    Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Отдельно;
    Построитель.РазмещениеИтоговВСтроках = ТипРазмещенияИтогов.Подвал;
    Построитель.РазмещениеИтоговВКолонках = ТипРазмещенияИтогов.Подвал;
    Построитель.РазмещениеРеквизитовИзмеренийВСтроках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями;
    Построитель.РазмещениеРеквизитовИзмеренийВКолонках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями;
    Сообщить(Построитель.ИзмеренияСтроки.Количество() = 1);
    Сообщить(Построитель.ИзмеренияКолонки.Количество() = 1);
    Сообщить(Построитель.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Отдельно);
    Сообщить(Построитель.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Отдельно);
    Сообщить(Построитель.РазмещениеИтоговВСтроках = ТипРазмещенияИтогов.Подвал);
    Сообщить(Построитель.РазмещениеИтоговВКолонках = ТипРазмещенияИтогов.Подвал);
    Сообщить(Построитель.РазмещениеРеквизитовИзмеренийВСтроках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями);
    Сообщить(Построитель.РазмещениеРеквизитовИзмеренийВКолонках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями);
    Сообщить(Данные.Итог("Сумма") = 860);

    ТабДок = Новый ТабличныйДокумент;
    Построитель.Вывести(ТабДок);
    Возврат ТабДок;
КонецФункции

Разбор по шагам

  1. В описании собственного источника разрешить Категория и Наименование как измерения; у Сумма задать итоговое выражение Сумма(Сумма).

  2. Добавить одну группировку строки и одну колонки. Оставить выбранным только ресурс Сумма, детали отключить, общие итоги включить.

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

  4. Сверить настройки и исходные суммы. После вывода вручную проверить реальные пересечения: Канцелярия/Книга 750, Канцелярия/Ручка 50, Упаковка/Коробка 60.

Как проверить результат

  1. Девять проверок настроек и исходного итога дают Истина. Строковое и колоночное измерение по одному.

  2. В самом отчёте вручную проверить 750, 50, 60; итоги категорий 800 и 60, общий итог 860. Проверка настроек не подменяет проверку выводимого макета.

Ожидаемый результат

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

На что обратить внимание

  1. Разрешённое измерение в описании источника само по себе не создаёт группировку: её добавляют в ИзмеренияСтроки/ИзмеренияКолонки.

  2. Итог задаётся выражением, а не числом 860. Размещение итогов задаёт место вывода, не формулу подсчёта.

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

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.