Построить статистический отчёт по четырём вымышленным заказам

Учебные задачи

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

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

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

Подготовка

  1. Собственная учебная база 8.5.1.1343, толстый клиент Windows. Создайте внешнюю обработку с управляемой формой, командой Выполнить и её кнопкой. Вставьте весь модуль выбранного урока.

  2. Методы построителя отчёта доступны только толстому клиенту, хотя сам тип упомянут и в других контекстах. Не переносите этот полный модуль в тонкий/веб-клиент или серверный обработчик.

  3. Для отдельного урока АнализДанных без построителя используется собственный серверный общий модуль УчебнаяСтатистика с флагом Сервер и вызов УчебнаяСтатистика.ВыполнитьПример() из серверной команды.

  4. Все значения вымышлены и создаются в памяти. Нет чтения документов/платежей, сетевых моделей, персональных данных, записи базы, сохранения файлов или печати.

  5. Это учебный расчёт на маленьком наборе. Он не даёт основания прогнозировать реальные продажи или принимать бизнес-решения без проверки качества исходных данных.

&НаКлиенте
Процедура Выполнить(Команда)
    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Таблица.Колонки.Добавить("Регион", Новый ОписаниеТипов("Строка"));
    Таблица.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
    Для Номер = 1 По 4 Цикл
        СтрокаТаблицы = Таблица.Добавить();
        СтрокаТаблицы.Код = "guide-order-" + Строка(Номер);
        СтрокаТаблицы.Регион = ?(Номер = 4, "Юг", "Север");
        СтрокаТаблицы.Сумма = Номер * 100;
    КонецЦикла;
    Построитель = Новый ПостроительОтчетаАнализаДанных;
    Построитель.ТипАнализа = Тип("АнализДанныхОбщаяСтатистика");
    Построитель.ИсточникДанных = Таблица;
    Построитель.ОтображатьСостояние = Ложь;
    Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
    Анализатор = Построитель.ПолучитьАнализ();
    Если ТипЗнч(Анализатор) <> Тип("АнализДанных") Тогда
        ВызватьИсключение "Ожидался документированный анализатор построителя";
    КонецЕсли;
    Настройки = Построитель.НастройкаКолонок;
    Код = Настройки.Найти("Код");
    Регион = Настройки.Найти("Регион");
    Сумма = Настройки.Найти("Сумма");
    Если Код = Неопределено ИЛИ Регион = Неопределено ИЛИ Сумма = Неопределено Тогда
        ВызватьИсключение "Анализатор не создал ожидаемые три настройки собственных колонок";
    КонецЕсли;
    Код.ТипКолонки = ТипКолонкиАнализаДанныхОбщаяСтатистика.Неиспользуемая;
    Регион.ТипКолонки = ТипКолонкиАнализаДанныхОбщаяСтатистика.Входная;
    Регион.ВидДанных = ВидДанныхАнализа.Дискретные;
    Сумма.ТипКолонки = ТипКолонкиАнализаДанныхОбщаяСтатистика.Входная;
    Сумма.ВидДанных = ВидДанныхАнализа.Непрерывные;
    Построитель.Выполнить();
    Результат = Построитель.Результат;
    Если ТипЗнч(Результат) <> Тип("РезультатАнализаДанныхОбщаяСтатистика") Тогда
        ВызватьИсключение "Ожидался результат общей статистики";
    КонецЕсли;
    Сообщить(Результат.КоличествоОбъектов = 4);
    Сообщить(Построитель.ТипАнализа = Тип("АнализДанныхОбщаяСтатистика"));
    Сообщить(Построитель.ИсточникДанных.Количество() = 4);
    Сообщить(НЕ Построитель.ОтображатьСостояние);
    Сообщить(Построитель.ОбрабатыватьПрерываниеПользователя);
    Сообщить(Построитель.НастройкаКолонок.Количество() = 3);
    Сообщить(Анализатор.ТипАнализа = Построитель.ТипАнализа);
    Сообщить(Анализатор.ИсточникДанных.Количество() = 4);
    Сообщить(СтрШаблон("Параметров выбранного анализа: %1", Построитель.Параметры.Количество()));
    Построитель.Макет = Неопределено;
    Документ = Новый ТабличныйДокумент;
    Построитель.Вывести(Документ);
    Сообщить(Документ.ВысотаТаблицы > 0);
    Сообщить(ТипЗнч(Построитель.Макет) = Тип("ТабличныйДокумент"));
    ВторойДокумент = Новый ТабличныйДокумент;
    Построитель.Вывести(Результат, ВторойДокумент);
    Сообщить(ВторойДокумент.ВысотаТаблицы > 0);
    Документ.Показать("Учебная статистика четырёх вымышленных заказов");
КонецПроцедуры

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

  1. Код — только учебный идентификатор и исключён из статистики. Регион задан дискретным, Сумма — непрерывным; настройки выбираются по имени с проверкой наличия.

  2. ПолучитьАнализ возвращает настоящий АнализДанных: проверяем его тип. Правила колонок задаём через НастройкаКолонок самого построителя и не полагаемся на неописанное совместное владение настройками двух объектов.

  3. Выполнить построителя заполняет readonly-свойство Результат и не обещает возвращаемое значение. Тип результата проверяем перед его чтением.

  4. ОтображатьСостояние выключено, ОбрабатыватьПрерываниеПользователя включено. Это два разных свойства, не обработчик исключения приложения.

  5. Макет=Неопределено возобновляет автоматическую генерацию. Первый Вывести принимает документ и использует свойство Результат; второй принимает явный результат и другой документ.

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

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

  1. Одиннадцать сравнений ожидаются Истина; число параметров выбранного анализа отдельно диагностическое.

  2. В окне собственного отчёта найдите четыре суммы 100/200/300/400 и частоты регионов 3/1. Не сравнивайте оформление посимвольно между разными интерфейсами.

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

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

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

  1. Тонкий клиент не подходит методам этого построителя: выбирайте серверный АнализДанных для расчёта без клиентского построителя.

  2. Readonly-свойства НастройкаКолонок, Параметры и Результат не присваиваются. Меняются разрешённые настройки отдельных элементов.

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

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

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

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

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