Различия

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

Ссылка на это сравнение

ru:creating_user_reports:examples:subjects_count [2020/07/23 16:25]
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>] 
Driven by DokuWiki