Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ru:creating_user_reports:create_optimum [2014/03/03 11:06] barinova |
ru:creating_user_reports:create_optimum [2018/06/04 14:22] (текущий) |
||
---|---|---|---|
Строка 13: | Строка 13: | ||
===== Объектная модель и скорость получения данных ===== | ===== Объектная модель и скорость получения данных ===== | ||
- | Работа Business Studio построена на СУБД MS SQL. Все данные о бизнес-модели хранятся в ней определенным образом. Структуры данных и их связи между собой описаны в **Объектной модели** (см. главу [[/ru/manual/report/object_model]]). | + | Работа Business Studio построена на СУБД MS SQL. Все данные о бизнес-модели хранятся в ней определенным образом. Структуры данных и их связи между собой описаны в **Объектной модели** (см. главу [[/ru/manual/manual]] -> [[/ru/manual/report/object_model]]). |
Параметры (данные), которые использует пользователь в своей работе, делятся на: | Параметры (данные), которые использует пользователь в своей работе, делятся на: | ||
Строка 136: | Строка 136: | ||
Создавать фильтры следует по возможности по "Элементы списков" и справочникам связей, а не по параметрам типа "Список", где: | Создавать фильтры следует по возможности по "Элементы списков" и справочникам связей, а не по параметрам типа "Список", где: | ||
- | * "Элементы списков" - корневой раздел в **Объектной модели** (см. [[/ru/manual/report/object_model#элементы_списков|Элементы списков]]); | + | * "Элементы списков" - корневой раздел в **Объектной модели** (см. статью [[/ru/manual/manual]] -> [[/ru/manual/report/object_model#элементы_списков|Элементы списков]]); |
* Связи - справочники в **Объектной модели** (**Классы -> Общие связи**). | * Связи - справочники в **Объектной модели** (**Классы -> Общие связи**). | ||
- | Как было указано ранее, параметры типа "Список" являются сами по себе фильтрами. Поэтому вывод списков у объектов в "Класс" или фильтр по таким спискам, приводят к созданию подзапросов SQL, что приводит к дополнительным затратам времени на получение необходимой выборки данных. В то же время "Элементы списков" по сути являются просто cправочниками, так же как и справочники в "Классы". Фильтрация по справочнику - чистый запрос SQL, он работает быстрей. | + | Как было указано ранее, параметры типа "Список" являются сами по себе фильтрами. Поэтому вывод списков у объектов в "Класс" или фильтр по таким спискам приводят к созданию подзапросов SQL, что приводит к дополнительным затратам времени на получение необходимой выборки данных. В то же время "Элементы списков" являются просто справочниками, так же как и справочники в "Классы". Фильтрация по справочнику - чистый запрос SQL, он работает быстрей. |
Эта рекомендация работает почти во всех случаях, когда нужно найти что-то по связям чего-то с чем-то. В случае, если надо найти отсутствие этих связей, то необходимо делать поиск через "Классы". | Эта рекомендация работает почти во всех случаях, когда нужно найти что-то по связям чего-то с чем-то. В случае, если надо найти отсутствие этих связей, то необходимо делать поиск через "Классы". | ||
Строка 158: | Строка 158: | ||
Во всех фильтрах следует как можно больше сужать область поиска по хранимым параметрам. | Во всех фильтрах следует как можно больше сужать область поиска по хранимым параметрам. | ||
- | Исходя из того, что: | + | Следует учитывать, что: |
* Самыми быстрыми операциями являются операции с хранимыми параметрами. | * Самыми быстрыми операциями являются операции с хранимыми параметрами. | ||
* Чем меньше данных будет выбрано для обработки, тем быстрее произойдет обработка данных. | * Чем меньше данных будет выбрано для обработки, тем быстрее произойдет обработка данных. | ||
- | Поэтому, необходимо задавать условия по хранимым фильтрам так, чтобы в результаты фильтра попадало больше целевой информации, что сведет к минимуму количество операций для её последующей обработки: расчету нехранимых параметров, дополнительной фильтрации. | + | Поэтому необходимо задавать условия по хранимым фильтрам так, чтобы в результаты фильтра попадало больше целевой информации, что сведет к минимуму количество операций для её последующей обработки: расчету нехранимых параметров, дополнительной фильтрации. |
**Пример. Необходимо найти все процессы первого уровня.** | **Пример. Необходимо найти все процессы первого уровня.** | ||
Строка 179: | Строка 179: | ||
<endTableBox| Таблица 2. Условия фильтра> | <endTableBox| Таблица 2. Условия фильтра> | ||
- | ==== Рекомендация 4 – Не включать опции привязок если это не требуется ==== | + | ==== Рекомендация 4 – Не включать опции привязок, если это не требуется ==== |
Если известно, что данные в сложной привязке не будут иметь дублирования или пустых строк, то не рекомендуется выставлять опции: | Если известно, что данные в сложной привязке не будут иметь дублирования или пустых строк, то не рекомендуется выставлять опции: | ||
Строка 233: | Строка 233: | ||
<endTableBox| Таблица 4. Условия фильтра по справочнику "Физические лица"> | <endTableBox| Таблица 4. Условия фильтра по справочнику "Физические лица"> | ||
- | В отчете в настройках сложной привязки типа "Фильтр" выбирается на показ параметр "Фамилия И.О.", который является нехранимым. Поэтому, для ускорения создания отчета в настройках фильтра на вкладке **Показ** необходимо установить флажок для параметров: | + | В отчете в настройках сложной привязки типа "Фильтр" выбирается на показ параметр "Фамилия И.О.", который является нехранимым. Поэтому для ускорения создания отчета в настройках фильтра на вкладке **Показ** необходимо установить флажок для параметров: |
* "Фамилия" | * "Фамилия" | ||
* "Имя" | * "Имя" | ||
Строка 266: | Строка 266: | ||
С точки зрения минимизации времени получения данных, правильным будет первый путь, так как второй путь предполагает работу с параметром "Потомки" справочника с нестандартной иерархией. Работа с нехранимым параметром "Все сотрудники" выполняется быстрее, так как этот параметр оптимизирован по быстродействию разработчиком. | С точки зрения минимизации времени получения данных, правильным будет первый путь, так как второй путь предполагает работу с параметром "Потомки" справочника с нестандартной иерархией. Работа с нехранимым параметром "Все сотрудники" выполняется быстрее, так как этот параметр оптимизирован по быстродействию разработчиком. | ||
- | В подобных ситуациях если в справочниках уже есть параметры, предоставленные разработчиком, то рекомендуется использовать их, а не создавать свои условия. Они уже оптимизированы по времени выполнения. | + | В подобных ситуациях, если в справочниках уже есть параметры, предоставленные разработчиком, то рекомендуется использовать их, а не создавать свои условия. Они уже оптимизированы по времени выполнения. |
+ | |||
+ | ==== Рекомендация 8 - Не использовать привязку с RTF полем в качестве источника, если оно содержит большое количество данных ==== | ||
+ | |||
+ | Вставка полей RTF занимает больше времени, чем вставка обычных текстовых полей. \\ | ||
+ | Для ускорения процесса формирования отчётов можно: | ||
+ | - Если возможности RTF для каких-то параметров не нужны - вместо таких полей RTF использовать простые текстовое поля. | ||
+ | - Вместо вывода содержимого полей RTF выводить в отчёте ссылки на файлы, куда предварительно вынести соответствующую информацию (подробнее об этом см. в примере ниже). | ||
+ | |||
+ | |||
+ | **Пример. К процессу нужно приложить документ, содержащий значительное количество информации** | ||
+ | |||
+ | В данном случае рекомендуем сделать следующее: | ||
+ | * Всю информацию поместить в документ MS Word (*.doc, *.docx). | ||
+ | * Создать бумажный\электронный документ и в поле "Файл бумажного документа" указать ссылку на этот документ. | ||
+ | * Поместить данный документ на вкладку "Нормативно-справочные документы" процесса. | ||
+ | |||
+ | В отчёте нужно создать следующую привязку: | ||
+ | * Тип привязки "BAND". | ||
+ | * Источник данных "Объект" - "Нормативно-справочные документы". \\ Чтобы её найти, поставьте галку "Показывать всё" в левом верхнем углу окна. | ||
+ | * Параметр объекта "Файл" | ||
+ | |||
+ | Такой вариант отчёта будет формироваться быстрее, чем вариант с выводом содержимого полей RTF. | ||
+ | |||
+ | [<contextnavigator>] | ||
+ |