Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ru:manual:report:examples:subjects_count [2020/07/23 16:09] 192.168.1.126 удалено |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Количество должностей и подразделений ====== | ||
- | Рассмотрим пример создания отчета "Количество должностей и подразделений". | ||
- | |||
- | Для понимания этой статьи требуется знание того: | ||
- | * как создавать, настраивать и сохранять фильтры (см. [[/ru/manual/manual]] -> [[/ru/manual/filter]]), | ||
- | * как создавать динамические и статические отчеты, добавлять в них привязки (см. [[/ru/manual/manual]] -> [[/ru/manual/report]]), | ||
- | * как находить параметры справочников и связи между справочниками в **Объектной модели** ({{bslink>Главное меню → Отчеты → Объектная модель|ShowRibbonPageOrItem?c639ba43-ff15-4caf-ab36-0d938fe0a7a3;730e73fb-b31c-4f50-b9d6-49d7c04fee67:Item}}) (см. [[ru/creating_user_reports/report/object_model]], [[/ru/manual/manual]] -> [[/ru/manual/report/object_model]]). | ||
- | |||
- | Информация, изложенная ниже, не дает пошаговых инструкций по нажатию кнопок в Business Studio, а дает логику размышлений по решению поставленной задачи с указанием необходимых параметров настройки фильтров и отчетов. | ||
- | |||
- | ===== Постановка задачи ===== | ||
- | |||
- | Необходимо создать отчет формата MS Word, который будет запускаться от любого субъекта типа "Должность", "Подразделение" или "Папка". В отчете должна быть показана информация по количеству всех должностей и подразделений, которые находятся ниже по иерархии от субъекта, от которого вызван отчет. Информация должна быть представлена в виде таблицы, приведенной ниже. | ||
- | <startTableBox> | ||
- | ^ Тип субъекта ^ Кол-во субъектов ^ | ||
- | | Подразделение | X | | ||
- | | Должность | Y | | ||
- | <endTableBox| Таблица 1. Форма подачи информации по условиям задачи> | ||
- | |||
- | ===== Идея решения задачи ===== | ||
- | |||
- | По заданными условиям нельзя получить информацию напрямую из одного справочника. Для решения задачи необходимо выбирать данные из имеющихся справочников. | ||
- | |||
- | Задачи выборки данных решаются через использование в отчетах хранимых фильтров. Данные о количественных оценках в отчеты могут быть вставлены только с использованием фильтров (вкладка **Агрегаты**) или с использованием кода VBA. Сначала необходимо создать фильтр, а потом использовать его при создании привязки в отчете. | ||
- | |||
- | Ключевым вопросом при решении является создание правильных условий фильтра. | ||
- | |||
- | Так как в условиях задачи стоит условие на вывод отчета не от всех субъектов, а только от субъектов конкретных типов, то для решения этой задачи тоже необходим фильтр. | ||
- | |||
- | ===== Создание фильтра "Для отчета кол-ва Д и П" ===== | ||
- | |||
- | ==== Класс для построения фильтра ==== | ||
- | |||
- | Речь идет о создании фильтра для отчета по субъектам. Поэтому и фильтр будет создаваться по справочнику "Субъекты". | ||
- | |||
- | ==== Вкладка "Условия" ==== | ||
- | |||
- | В условиях фильтра необходимо указать конкретные типы субъектов, от которых будет выводиться отчет: Должность, Подразделение, Папка. | ||
- | <startTableBox> | ||
- | ^ Параметр ^ Тип ^ Оператор ^ Значение ^ Не ^ Потомки ^ | ||
- | | Тип субъекта | Список значений | = | Подразделение, Должность, Папка | | | | ||
- | <endTableBox| Таблица 2. Условия фильтра "Для отчета кол-ва Д и П"> | ||
- | |||
- | ==== Вкладка "Показ" ==== | ||
- | |||
- | После создания условий можно закончить настройку фильтра и сохранить его в папке "Пользовательские фильтры" под названием "Для отчета кол-ва Д и П". Чтобы проверить, что настройка выполнена верно, можно вывести на показ параметры и выполнить фильтр. | ||
- | |||
- | <startTableBox> | ||
- | ^ Показывать ^ Параметр ^ | ||
- | | + | Название | | ||
- | | + | Тип субъекта | | ||
- | <endTableBox| Таблица 3. Настройка отображения параметров для показа фильтра "Для отчета кол-ва Д и П"> | ||
- | |||
- | ===== Создание фильтра "Кол-во должностей и подразделений" ===== | ||
- | |||
- | ==== Класс для построения фильтра ==== | ||
- | |||
- | Так как в задаче речь идет о типах субъектов и их количестве, то фильтр необходимо будет создавать по справочнику "Субъекты". | ||
- | |||
- | ==== Вкладка "Условия" ==== | ||
- | |||
- | При детальном рассмотрении задачи, можно сформулировать 2 подзадачи по формированию условий: | ||
- | |||
- | - Условия, отбирающие субъекты только с типами "Должность" и "Подразделение". | ||
- | - Условия, указывающие, что субъект, который входит в подсчет количества, находится в нужной ветке иерархии. Для этих целей можно использовать параметр типа "Список" -- "Список родителей субъекта". | ||
- | |||
- | Согласно указанной ранее логике в фильтре выставляются условия, приведенные ниже. | ||
- | |||
- | <startTableBox> | ||
- | ^ Параметр ^ Тип ^ Оператор ^ Значение ^ Не ^ Потомки ^ | ||
- | | Список родителей субъекта | Подфильтр | = | | | | | ||
- | | - guid | Значение | = | | | | | ||
- | | Тип субъекта | Список значений | = | Должность, Подразделение | | | | ||
- | <endTableBox| Таблица 4. Условия фильтра "Кол-во должностей и подразделений"> | ||
- | |||
- | **Пояснение по параметру "Список родителей субъекта".** Считаем, что субъект находится в нужной ветке иерархии, если среди его родителей есть субъект, от которого будет вызван отчет. Список, который содержит данные о родителях называется "Список родителей субъекта". Субъект, от которого вызывается отчет, будет определяться в момент вызова этого отчета. Поэтому конкретного значения в фильтре указать нельзя. Конкретное указание будет задаваться в настройках соответствия фильтра в **Мастере отчетов**. | ||
- | |||
- | ==== Вкладка "Группировка" ==== | ||
- | |||
- | Найденные по условиям субъекты необходимо будет разделить на 2 группы для будущего подсчета количества: "Должности" и "Подразделения". Для этого на вкладке **Группировка** нужно указать, что группировку необходимо делать по параметру "Тип субъекта". | ||
- | <startTableBox> | ||
- | ^ Группировать ^ Параметр ^ Шаг ^ | ||
- | | + | Тип субъекта | | | ||
- | <endTableBox| Таблица 5. Настройки на вкладке "Группировка" фильтра "Кол-во должностей и подразделений"> | ||
- | |||
- | ==== Вкладка "Агрегаты" ==== | ||
- | |||
- | Подсчет субъектов необходимо вести по параметру, который однозначно идентифицирует одного субъекта от других. Таким параметров является "guid". Поэтому на вкладке **Агрегаты** подсчет будет именно по этому параметру. | ||
- | <startTableBox> | ||
- | ^ Параметр ^ Сумма ^ Максимум ^ Минимум ^ Среднее ^ Количество ^ | ||
- | | guid | | | | | + | | ||
- | <endTableBox| Таблица 6. Настройки на вкладке "Агрегаты" фильтра "Кол-во должностей и подразделений"> | ||
- | |||
- | ==== Вкладка "Показ" ==== | ||
- | |||
- | На вкладке **Показ** нет необходимости выставлять что-либо, так как настройка этой вкладки была предопределена настройками на вкладках **Группировка** и **Агрегаты**. Внешне она будет настроена так, как показано ниже. | ||
- | |||
- | <startTableBox> | ||
- | ^ Показывать ^ Параметр ^ | ||
- | | | Количество (guid) | | ||
- | | + | Тип субъекта | | ||
- | <endTableBox| Таблица 7. Вид настройки параметров на вкладке "Показ" фильтра "Кол-во должностей и подразделений"> | ||
- | |||
- | ==== Сохранение фильтра ==== | ||
- | |||
- | Сохраняем фильтр с названием "Кол-во должностей и подразделений". Место сохранения -- папка "Пользовательские фильтры". | ||
- | |||
- | ===== Создание отчета ===== | ||
- | |||
- | Так как отчет будет создаваться только от некоторых субъектов, то при его создании в **Мастере отчетов** выбираем условия использования -- ранее созданный и сохраненный фильтр "Для отчета кол-ва Д и П". | ||
- | |||
- | ==== Добавление привязки ==== | ||
- | |||
- | Тип привязки в отчете определяет то, откуда именно будут браться данные (источник данных) для вставки в выполняемый отчет, и как будут выглядеть вставленные данные в отчете (см. [[/ru/manual/manual]] -> [[ru/manual/report/types_anchor]]). | ||
- | |||
- | Исходя из того, что наши данные получаются из фильтра и по условиям задачи должны выглядеть как список (таблица), определяем тип привязки -- "Фильтр". В качестве конкретного фильтра выбирается ранее созданный и сохраненный фильтр "Кол-во должностей и подразделений". | ||
- | |||
- | Для того чтобы указать конкретный вызываемый субъект, от которого зависит выполнение фильтра, необходимо настроить соответствия фильтра. | ||
- | |||
- | <startTableBox> | ||
- | ^ Название условия фильтра ^ Параметр класса ^ Параметр фильтра | | ||
- | | | [Объект].guid | СписокРодителей.guid | | ||
- | <endTableBox| Таблица 8. Настройка соответствий фильтра "Кол-во должностей и подразделений"> | ||
- | |||
- | **Пояснение к настройке "Параметр фильтра"**. В фильтре на вкладке **Условия** было оставлено пустое место в параметре "Список родителей субъекта" по параметру "guid". Поэтому и в параметрах фильтра необходимо выбрать этот же параметр. Тем самым мы говорим, что из фильтра необходимо брать к рассмотрению именно это условие -- guid из списка родителей субъекта. | ||
- | |||
- | **Пояснение к настройке "Параметр класса"**. [Объект] -- это тот субъект, от которого будет вызываться отчет. Но для подстановки в условия фильтра необходимо брать не целый объект, а его параметр "guid". Поэтому и указываем [Объект].guid. | ||
- | |||
- | **Пояснение к настройке "Название условия фильтра"**. Так как фильтр содержит лишь основное условие, поэтому ничего в этой ячейке не указываем. | ||
- | |||
- | В окне "Настройка сложной привязки к данным" делаем переименование названия привязки "Количество (guid)" в "Кол-во субъектов". | ||
- | |||
- | [{{ ru:creating_user_reports:examples:subjects_count:change_pic1.png?nolink | Рисунок 1. Вид окна **Настройка сложной привязки к данным** после всех необходимых настроек}}] | ||
- | |||
- | ==== Редактирование шаблона ==== | ||
- | |||
- | В шаблоне отчета вносим необходимые изменения в оформление, а так же добавляем привязку типа "Объект" к параметру "Название", чтобы было ясно, от какого субъекта вызывается отчет. Оформляем добавленную привязку в шаблоне. Сохраняем и выполняем отчет. | ||
- | |||
- | [{{ ru:creating_user_reports:examples:subjects_count:lang_pic2.png?nolink | Рисунок 2. Вид привязки "Процессы без единого субъекта" типа "Фильтр" в окне шаблона отчета}}] | ||
- | |||
- | ===== Результат ===== | ||
- | |||
- | Пример одного из возможных результатов выполнения отчета "Количество должностей и подразделений" приведен на Рис. 3. | ||
- | |||
- | [{{ ru:creating_user_reports:examples:subjects_count:lang_pic3.png?nolink | Рисунок 3. Пример выполнения отчета "Количество должностей и подразделений"}}] | ||
- | |||
- | ===== Рекомендация ===== | ||
- | |||
- | Для того чтобы быть уверенным в правильности всех выполненных шагов, рекомендуется для тестирования выбрать подразделение, где можно самостоятельно подсчитать количество должностей и подразделений, и проверить полученный результат с результатом в отчете. | ||
- | |||
- | [<contextnavigator>] |