Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ru:creating_user_reports:examples:subjects_count [2013/10/17 11:27] 127.0.0.1 внешнее изменение |
ru:creating_user_reports:examples:subjects_count [2019/11/27 16:10] (текущий) belkin [Вкладка Условия] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Количество должностей и подразделений ====== | ====== Количество должностей и подразделений ====== | ||
+ | |||
+ | Рассмотрим пример создания отчета "Количество должностей и подразделений". | ||
- | Пример создания отчета "Количество должностей и подразделений ". | + | Для понимания этой статьи требуется знание того: |
+ | * как создавать, настраивать и сохранять фильтры (см. [[/ru/manual/manual]] -> [[/ru/manual/filter]]), | ||
+ | * как создавать динамические и статические отчеты, добавлять в них привязки (см. [[/ru/manual/manual]] -> [[/ru/manual/report]]), | ||
+ | * как находить параметры справочников и связи между справочниками в **Объектной модели** (см. [[ru/creating_user_reports/report/object_model]], [[/ru/manual/manual]] -> [[/ru/manual/report/object_model]]). | ||
- | Для понимания этой статьи требуется, чтобы читатель знал: | + | Информация, изложенная ниже, не дает пошаговых инструкций по нажатию кнопок в Business Studio, а дает логику размышлений по решению поставленной задачи с указанием необходимых параметров настройки фильтров и отчетов. |
- | * как создавать, настраивать и сохранять фильтры (см. раздел [[/ru/manual/filter]]), | + | |
- | * как создавать динамические и статические отчеты, добавлять в них привязки (см. раздел [[/ru/manual/report]]), | + | |
- | * как находить параметры справочников и связи между справочника в Объектной модели (см. раздел [[/ru/manual/report/object_model]]). | + | |
- | Информация, изложенная ниже, не дает пошаговых инструкций по нажатию кнопок в программе, а дает логику размышлений по решению поставленной задачи с указанием необходимых параметров настройки фильтров и отчетов. | ||
===== Постановка задачи ===== | ===== Постановка задачи ===== | ||
- | Необходимо создать отчет формата Word, который будет запускаться от любого субъекта типа "Должность", "Подразделение" или "Папка". В отчете должна быть показана информация по количеству всех должностей и подразделений, которые находятся ниже по ветке дерева. Информация может быть показана в таблице, приведенной ниже. | + | Необходимо создать отчет формата MS Word, который будет запускаться от любого субъекта типа "Должность", "Подразделение" или "Папка". В отчете должна быть показана информация по количеству всех должностей и подразделений, которые находятся ниже по иерархии от субъекта, от которого вызван отчет. Информация должна быть представлена в виде таблицы, приведенной ниже. |
<startTableBox> | <startTableBox> | ||
- | ^ Типа субъекта ^ Кол-во субъектов ^ | + | ^ Тип субъекта ^ Кол-во субъектов ^ |
| Подразделение | X | | | Подразделение | X | | ||
| Должность | Y | | | Должность | Y | | ||
<endTableBox| Таблица 1. Форма подачи информации по условиям задачи> | <endTableBox| Таблица 1. Форма подачи информации по условиям задачи> | ||
+ | |||
===== Идея решения задачи ===== | ===== Идея решения задачи ===== | ||
- | По заданными условиям получить информацию напрямую в виде отдельного справочника нельзя, поэтому для решения задачи необходимо будет выбирать данные из имеющихся справочников. | + | По заданными условиям нельзя получить информацию напрямую из одного справочника. Для решения задачи необходимо выбирать данные из имеющихся справочников. |
- | Задачи выборки данных решаются через использование в отчетах хранимых фильтров. Кроме того, данные о количественных оценках чего-то в отчеты могут быть доставлены только через фильтры (закладка "Агрегаты") или с использованием кода VBA. Поэтому сначала необходимо создать фильтр, а потом уже создавать привязки в отчете. | + | Задачи выборки данных решаются через использование в отчетах хранимых фильтров. Данные о количественных оценках в отчеты могут быть вставлены только с использованием фильтров (вкладка **Агрегаты**) или с использованием кода VBA. Сначала необходимо создать фильтр, а потом использовать его при создании привязки в отчете. |
Ключевым вопросом при решении является создание правильных условий фильтра. | Ключевым вопросом при решении является создание правильных условий фильтра. | ||
- | Так как в условиях задачи стоит условие на вывод отчета не от всех субъектов, а только от конкретных типов, то для решения этой задачи тоже необходим фильтр. | + | Так как в условиях задачи стоит условие на вывод отчета не от всех субъектов, а только от субъектов конкретных типов, то для решения этой задачи тоже необходим фильтр. |
- | ===== Создание фильтра "Для отчета кол-ва Д и П" ===== | + | ===== Создание фильтра "Для отчета кол-ва Д и П" ===== |
==== Класс для построения фильтра ==== | ==== Класс для построения фильтра ==== | ||
- | Так как речь идет о создании фильтра для отчета по субъектам, поэтому и фильтр будет создаваться по справочнику "Субъекты". | + | Речь идет о создании фильтра для отчета по субъектам. Поэтому и фильтр будет создаваться по справочнику "Субъекты". |
- | ==== Закладка "Условия" ==== | + | ==== Вкладка "Условия" ==== |
В условиях фильтра необходимо указать конкретные типы субъектов, от которых будет выводиться отчет: Должность, Подразделение, Папка. | В условиях фильтра необходимо указать конкретные типы субъектов, от которых будет выводиться отчет: Должность, Подразделение, Папка. | ||
<startTableBox> | <startTableBox> | ||
- | ^ Параметр ^ Тип ^ Оператор ^ Значение ^ Не ^ Потомки ^ | + | ^ Параметр ^ Тип ^ Оператор ^ Значение ^ Не ^ Потомки ^ |
- | | Тип процесса | Список значений | = | Подразделение, Должность, Папка | | | | + | | Тип субъекта| Список значений | = | Подразделение, Должность, Папка | | | |
- | <endTableBox| Таблица 2. Условия фильтра "Для отчета кол-ва Д и П".> | + | <endTableBox| Таблица 2. Условия фильтра "Для отчета кол-ва Д и П"> |
- | ==== Закладка "Показ" ==== | + | |
+ | ==== Вкладка "Показ" ==== | ||
+ | |||
+ | После создания условий можно закончить настройку фильтра и сохранить его в папке "Пользовательские фильтры" под названием "Для отчета кол-ва Д и П". Чтобы проверить, что настройка выполнена верно, можно вывести на показ параметры и выполнить фильтр. | ||
- | После создания условий можно закончить настройку фильтра и сохранить его в "Пользовательские фильтры" под названием "Для отчета кол-ва Д и П". Но чтобы проверить, что настройка выполнена верно, можно вывести на показ параметры и выполнить фильтр. | ||
<startTableBox> | <startTableBox> | ||
- | ^ Показывать ^ Параметр ^ | + | ^ Показывать ^ Параметр ^ |
| + | Название | | | + | Название | | ||
| + | Тип субъекта | | | + | Тип субъекта | | ||
- | <endTableBox| Таблица 3. Настройка отображения параметров для показа фильтра "Для отчета кол-ва Д и П".> | + | <endTableBox| Таблица 3. Настройка отображения параметров для показа фильтра "Для отчета кол-ва Д и П"> |
===== Создание фильтра "Кол-во должностей и подразделений" ===== | ===== Создание фильтра "Кол-во должностей и подразделений" ===== | ||
==== Класс для построения фильтра ==== | ==== Класс для построения фильтра ==== | ||
- | Так как в задаче речь идет только о типах субъектов и их количестве, то фильтр необходимо будет создавать по справочнику "Субъекты". | + | Так как в задаче речь идет о типах субъектов и их количестве, то фильтр необходимо будет создавать по справочнику "Субъекты". |
- | ==== Закладка "Условия" ==== | + | ==== Вкладка "Условия" ==== |
При детальном рассмотрении задачи, можно сформулировать 2 подзадачи по формированию условий: | При детальном рассмотрении задачи, можно сформулировать 2 подзадачи по формированию условий: | ||
- | 1. Условия, отбирающие субъекты только с типами "Должность" и "Подразделение". | + | - Условия, отбирающие субъекты только с типами "Должность" и "Подразделение". |
- | + | - Условия, указывающие, что субъект, который входит в подсчет количества, находится в нужной ветке иерархии. Для этих целей можно использовать параметр типа "Список" -- "Список родителей субъекта". | |
- | 2. Условия, указывающие, что субъект, который входит в подсчет количества, находится в нужной ветке. Для этих целей можно использовать параметр типа список "Список родителей субъекта". | + | |
Согласно указанной ранее логике в фильтре выставляются условия, приведенные ниже. | Согласно указанной ранее логике в фильтре выставляются условия, приведенные ниже. | ||
+ | |||
<startTableBox> | <startTableBox> | ||
- | ^ Параметр ^ Тип ^ Оператор ^ Значение ^ Не ^ Потомки ^ | + | ^ Параметр ^ Тип ^ Оператор ^ Значение ^ Не ^ Потомки ^ |
| Список родителей субъекта | Подфильтр | = | | | | | | Список родителей субъекта | Подфильтр | = | | | | | ||
| - guid | Значение | = | | | | | | - guid | Значение | = | | | | | ||
| Тип субъекта | Список значений | = | Должность, Подразделение | | | | | Тип субъекта | Список значений | = | Должность, Подразделение | | | | ||
- | <endTableBox| Таблица 4. Условия фильтра "Кол-во должностей и подразделений".> | + | <endTableBox| Таблица 4. Условия фильтра "Кол-во должностей и подразделений"> |
- | **Пояснение по параметру "Список родителей субъекта".** Считаем, что субъект находится в нужной ветке, если среди его родителей есть субъект, от которого будет вызван отчет. Список, который содержит данные о родителях называется "Список родителей субъекта". Субъект, от которого вызывается отчет, будет определяться в момент вызова этого самого отчета. Поэтому конкретного значения в фильтре указать нельзя. Конкретное указание будет задаваться в настройках соответствия фильтра в Мастере отчетов. | + | **Пояснение по параметру "Список родителей субъекта".** Считаем, что субъект находится в нужной ветке иерархии, если среди его родителей есть субъект, от которого будет вызван отчет. Список, который содержит данные о родителях называется "Список родителей субъекта". Субъект, от которого вызывается отчет, будет определяться в момент вызова этого отчета. Поэтому конкретного значения в фильтре указать нельзя. Конкретное указание будет задаваться в настройках соответствия фильтра в **Мастере отчетов**. |
- | ==== Закладка "Группировка" ==== | + | ==== Вкладка "Группировка" ==== |
- | Найденные по условиям субъекты необходимо будет разделить на 2 группы для будущего подсчета количества: "Должности" и "Подразделения". Для этого на закладке "Группировка" необходимо указать, что группировку необходимо делать по параметру "Тип субъекта". | + | Найденные по условиям субъекты необходимо будет разделить на 2 группы для будущего подсчета количества: "Должности" и "Подразделения". Для этого на вкладке **Группировка** нужно указать, что группировку необходимо делать по параметру "Тип субъекта". |
<startTableBox> | <startTableBox> | ||
- | ^ Группировать ^ Параметр ^ Шаг ^ | + | ^ Группировать ^ Параметр ^ Шаг ^ |
| + | Тип субъекта | | | | + | Тип субъекта | | | ||
- | <endTableBox| Таблица 5. Настройка закладки "Группировка" фильтра "Кол-во должностей и подразделений".> | + | <endTableBox| Таблица 5. Настройки на вкладке "Группировка" фильтра "Кол-во должностей и подразделений"> |
- | ==== Закладка "Агрегаты" ==== | + | |
- | Подсчет субъектов необходимо вести по параметру, который однозначно идентифицирует один субъект от других. Таким параметров является "guid". Поэтому на закладке "Агрегаты" подсчет будет именно по этому параметру. | + | ==== Вкладка "Агрегаты" ==== |
+ | |||
+ | Подсчет субъектов необходимо вести по параметру, который однозначно идентифицирует одного субъекта от других. Таким параметров является "guid". Поэтому на вкладке **Агрегаты** подсчет будет именно по этому параметру. | ||
<startTableBox> | <startTableBox> | ||
- | ^ Параметр ^ Сумма ^ Максимум ^ Минимум ^ Среднее ^ Количество ^ | + | ^ Параметр ^ Сумма ^ Максимум ^ Минимум ^ Среднее ^ Количество ^ |
| guid | | | | | + | | | guid | | | | | + | | ||
- | <endTableBox| Таблица 6. Настройка закладки "Агрегаты" фильтра "Кол-во должностей и подразделений".> | + | <endTableBox| Таблица 6. Настройки на вкладке "Агрегаты" фильтра "Кол-во должностей и подразделений"> |
- | ==== Закладка "Показ" ==== | + | |
+ | ==== Вкладка "Показ" ==== | ||
+ | |||
+ | На вкладке **Показ** нет необходимости выставлять что-либо, так как настройка этой вкладки была предопределена настройками на вкладках **Группировка** и **Агрегаты**. Внешне она будет настроена так, как показано ниже. | ||
- | Нет необходимости выставлять что-либо на закладке "Показ", так как настройка этой закладки была предопределена настройками на закладках "Группировка" и "Агрегаты". Внешне она будет настроена так, как показано ниже. | ||
<startTableBox> | <startTableBox> | ||
- | ^ Показывать ^ Параметр ^ | + | ^ Показывать ^ Параметр ^ |
| | Количество (guid) | | | | Количество (guid) | | ||
| + | Тип субъекта | | | + | Тип субъекта | | ||
- | <endTableBox| Таблица 7. Вид настройки параметров на закладке "Показ" фильтра "Кол-во должностей и подразделений".> | + | <endTableBox| Таблица 7. Вид настройки параметров на вкладке "Показ" фильтра "Кол-во должностей и подразделений"> |
==== Сохранение фильтра ==== | ==== Сохранение фильтра ==== | ||
- | Сохраняем фильтр с названием " Кол-во должностей и подразделений ". Место сохранения -- Пользовательские фильтры. | + | Сохраняем фильтр с названием "Кол-во должностей и подразделений". Место сохранения -- папка "Пользовательские фильтры". |
===== Создание отчета ===== | ===== Создание отчета ===== | ||
- | Так как отчет будет создаваться только от некоторых субъектов, то при его создании выбираем условия использования -- ранее созданный и сохраненный фильтр "Для отчета кол-ва Д и П". | + | Так как отчет будет создаваться только от некоторых субъектов, то при его создании в **Мастере отчетов** выбираем условия использования -- ранее созданный и сохраненный фильтр "Для отчета кол-ва Д и П". |
==== Добавление привязки ==== | ==== Добавление привязки ==== | ||
- | Тип привязки в отчете определяет то, откуда именно будут браться данные (источник данных) для вставки в выполняемый отчет и как будут выглядеть вставленные данные в отчете (см. [[ru/manual/report/types_anchor]]). | + | Тип привязки в отчете определяет то, откуда именно будут браться данные (источник данных) для вставки в выполняемый отчет, и как будут выглядеть вставленные данные в отчете (см. [[/ru/manual/manual]] -> [[ru/manual/report/types_anchor]]). |
Исходя из того, что наши данные получаются из фильтра и по условиям задачи должны выглядеть как список (таблица), определяем тип привязки -- "Фильтр". В качестве конкретного фильтра выбирается ранее созданный и сохраненный фильтр "Кол-во должностей и подразделений". | Исходя из того, что наши данные получаются из фильтра и по условиям задачи должны выглядеть как список (таблица), определяем тип привязки -- "Фильтр". В качестве конкретного фильтра выбирается ранее созданный и сохраненный фильтр "Кол-во должностей и подразделений". | ||
- | Для того, чтобы указать конкретный вызываемый субъект, от которого зависит выполнение фильтра, необходимо настроить соответствия фильтра. | + | Для того чтобы указать конкретный вызываемый субъект, от которого зависит выполнение фильтра, необходимо настроить соответствия фильтра. |
<startTableBox> | <startTableBox> | ||
- | ^ Название условия фильтра ^ Параметр класса ^ Параметр фильтра | | + | ^ Название условия фильтра ^ Параметр класса ^ Параметр фильтра | |
| | [Объект].guid | СписокРодителей.guid | | | | [Объект].guid | СписокРодителей.guid | | ||
- | <endTableBox| Таблица 9. Настройка соответствий фильтра "Кол-во должностей и подразделений".> | + | <endTableBox| Таблица 8. Настройка соответствий фильтра "Кол-во должностей и подразделений"> |
- | **Пояснение к настройке "Параметр фильтра"**. В фильтре на закладке "Условия" было оставлено пустое место в параметре типа список "Список родителей субъекта" по параметру "guid". Поэтому и в параметрах фильтра необходимо выбрать этот же параметр. Тем самым мы говорим, что из фильтра необходимо брать к рассмотрению именно это условие -- guid из списка родителей субъекта. | + | **Пояснение к настройке "Параметр фильтра"**. В фильтре на вкладке **Условия** было оставлено пустое место в параметре "Список родителей субъекта" по параметру "guid". Поэтому и в параметрах фильтра необходимо выбрать этот же параметр. Тем самым мы говорим, что из фильтра необходимо брать к рассмотрению именно это условие -- guid из списка родителей субъекта. |
- | **Пояснение к настройке "Параметр класса"**. [Объект] -- это тот субъект, от которого будет вызываться отчет. Но для подстановки в условия фильтра необходимо брать не целый объект, а его параметр "guid". Поэтому и указываем [Объект].guid. | + | **Пояснение к настройке "Параметр класса"**. [Объект] -- это тот субъект, от которого будет вызываться отчет. Но для подстановки в условия фильтра необходимо брать не целый объект, а его параметр "guid". Поэтому и указываем [Объект].guid. |
**Пояснение к настройке "Название условия фильтра"**. Так как фильтр содержит лишь основное условие, поэтому ничего в этой ячейке не указываем. | **Пояснение к настройке "Название условия фильтра"**. Так как фильтр содержит лишь основное условие, поэтому ничего в этой ячейке не указываем. | ||
- | В окне "Настройка сложной привязки к данным" делаем переименование параметра "Количество (guid)" в "Кол-во субъектов". | + | В окне "Настройка сложной привязки к данным" делаем переименование названия привязки "Количество (guid)" в "Кол-во субъектов". |
- | [{{ ru:creating_user_reports:examples:subjects_count:pic1.png?nolink | Рисунок 1. Вид окна "Настройка сложной привязки к данным" после всех необходимых настроек.}}] | + | [{{ ru:creating_user_reports:examples:subjects_count:pic1.png?nolink | Рисунок 1. Вид окна **Настройка сложной привязки к данным** после всех необходимых настроек}}] |
==== Редактирование шаблона ==== | ==== Редактирование шаблона ==== | ||
- | В шаблоне отчета вносим необходимые внешние изменения, а так же добавляем привязку типа "Объект" по параметру "Название", чтобы было ясно от какого субъекта вызывается отчета и оформляем соответственно в шаблоне. Сохраняем и выполняем отчет. | + | В шаблоне отчета вносим необходимые изменения в оформление, а так же добавляем привязку типа "Объект" к параметру "Название", чтобы было ясно, от какого субъекта вызывается отчет. Оформляем добавленную привязку в шаблоне. Сохраняем и выполняем отчет. |
- | [{{ ru:creating_user_reports:examples:subjects_count:pic2.png?nolink | Рисунок 2. Вид привязки типа фильтр "Процессы без единого субъекта" в окне шаблона отчета.}}] | + | [{{ ru:creating_user_reports:examples:subjects_count:pic2.png?nolink | Рисунок 2. Вид привязки "Процессы без единого субъекта" типа "Фильтр" в окне шаблона отчета}}] |
===== Результат ===== | ===== Результат ===== | ||
- | [{{ ru:creating_user_reports:examples:subjects_count:pic3.png?nolink | Рисунок 3. Один из возможных вариантов выполнения отчета. | + | Пример одного из возможных результатов выполнения отчета "Количество должностей и подразделений" приведен на Рис. 3. |
- | }}] | + | |
+ | [{{ ru:creating_user_reports:examples:subjects_count:pic3.png?nolink | Рисунок 3. Пример выполнения отчета "Количество должностей и подразделений"}}] | ||
===== Рекомендация ===== | ===== Рекомендация ===== | ||
- | Для того, чтобы быть уверенным в правильности всех выполненных шагов, рекомендуется для тестирования выбрать небольшое подразделение, где легко подсчитать количество должностей и подразделений. | + | Для того чтобы быть уверенным в правильности всех выполненных шагов, рекомендуется для тестирования выбрать подразделение, где можно самостоятельно подсчитать количество должностей и подразделений, и проверить полученный результат с результатом в отчете. |
+ | |||
+ | |||
+ | |||
+ | |||
+ | [<contextnavigator>] | ||
+ |