Перейти к содержанию

Отчёты — Администрирование

Справочник администратора домена отчётов (reports). Охватывает настройку отчётов, фильтров, прав доступа, импорт/экспорт пакетов отчётов, а также технику программирования FastReport-шаблонов и SQL-паттерны для источников данных. В документе собраны все административные интерфейсы (SPA-страница, редактор сущностей, API администрирования), критические инварианты FastReport, ограничения фильтров и типовые ошибки настройки с диагностическими запросами. За созданием и базовым процессом работы с отчётами — в academy-patterns.md; за диагностикой, Win-дизайнером и XLSX-экспортом — в support-guide-fastreport.md.

Механизмы администрирования

Домен reports охватывает настройку отчётов, фильтров, прав доступа и импорт/экспорт пакетов отчётов. Администрирование использует три механизма: пользовательскую SPA-страницу, редактор сущностей и API администрирования.

Пользовательская SPA-страница (в дереве автоадминки):

Alias формы Название Url Таблица БД Папка
reports Отчеты /administration/reports dbo.Reports Дополнительно

Редактор сущностей — три схемы JSON, каждая привязана к таблице БД:

Схема JSON Таблица Назначение
printForms dbo.PrintForms Печатные формы
registries dbo.Registries Реестры
registryColumns (связанная) Колонки реестров

API администрирования — четыре группы маршрутов для CRUD-операций с отчётами, фильтрами, правами и импортом/экспортом:

Маршрут Методы Назначение
/api/admin/reports GET, POST, PUT, DELETE CRUD отчётов, контексты
/api/admin/reports/filters GET, POST, PUT, DELETE CRUD фильтров и параметров
/api/admin/reports/{reportId:Guid}/*rights* GET, POST, DELETE Права групп (просмотр/редактирование/специальные)
/api/admin/reportstats GET, POST Экспорт/импорт пакетов отчётов

Ключевые настройки

Отчёты и контексты. Отчёты (Reports): Где настраивается: SPA-страница /administration/reports (пункт reports в дереве автоадминки) или API администрирования Таблица БД: dbo.Reports

17 полей: карточка отчёта, описание, тип, шаблон.

Группа полей Что контролирует
Имя, описание Идентификация в интерфейсе
Тип отчёта FastReport / Word / Excel / реестр
Шаблон Файл шаблона отчёта
Параметры Настройки генерации

Как применяется: отчёт доступен пользователям через контекстное меню задачи/категории или через раздел отчётов.

Контексты отчёта (ReportContextObject). Где настраивается: API администрирования (/{id}/context) Таблица БД: dbo.ReportContextObject

Привязка отчёта к контексту использования. Определяет, где отчёт будет доступен. Значения поля Reports.Context: 0=Task, 1=Subcat, 2=Category, 3=User, 4=Group (подробнее: support-guide-fastreport.md секция 3.3, 8).

Фильтры и права доступа. Фильтры отчёта: Где настраивается: API администрирования (фильтры отчёта) Таблицы БД: dbo.ReportFilterLink, таблицы Filter*

Форма фильтра: набор параметров и их порядок. Параметры определяют пользовательский ввод перед генерацией.

Права доступа: Где настраивается: API администрирования (права отчёта) Таблицы БД: dbo.ExternalObjects* (таблицы прав)

Видимость и редактирование отчёта по группам. Без прав отчёт не виден пользователям.

Печатные формы и реестры. Печатные формы: Где настраивается: редактор сущностей → printForms Таблица БД: dbo.PrintForms

Шаблоны документов для печати (Word/Excel), привязанные к категориям.

Реестры: Где настраивается: редактор сущностей → registries, registryColumns Таблица БД: dbo.Registries

Структура и колонки реестров, доступных для просмотра/экспорта.

Работа с отчётами на странице администрирования

Отчёты системы настраиваются на SPA-странице /administration/reports (пункт «Отчёты» в дереве автоадминки). Ниже — основные операции: просмотр списка, создание, редактирование настроек, действия с отчётом, импорт/экспорт, настройки экспорта и логирование.

Список отчётов

На странице отображается список всех настроенных в системе отчётов. Сами отчёты разрабатываются в дизайнере FastReport (см. §«FastReport: обязательные инварианты»).

Список настроенных отчётов на странице администрирования

Создание отчёта

Чтобы создать новый отчёт, сначала заведите его в системе: нажмите «Создать» и укажите название, описание, блок и при необходимости порядок отчёта в блоке. После этого отчёт можно открыть в дизайнере FastReport и оформить его содержимое.

Окно создания отчёта: название, описание, блок и порядок

Редактирование настроек отчёта

Чтобы изменить описание и основные параметры отчёта, нажмите на него в списке.

Окно редактирования отчёта: название, описание, контекст, видимость, порядок

Основные настройки отчёта:

Параметр Описание
Название Название отчёта
Описание Описание отчёта
Контекст Привязка отчёта к контексту использования (см. таблицу ниже)
Скрыт Видимость отчёта
Порядок Порядок отчёта в блоке
Системный Признак системного отчёта

Контексты отчёта. Контекст определяет, откуда отчёт вызывается и какие параметры в него передаются. Во все отчёты дополнительно передаётся ID открывшего отчёт пользователя (CurrentUserID) — для проверки прав на просматриваемые данные.

Контекст Параметры Откуда вызывается Что настраивается
0 — Задача TaskID, SubcatID Меню «Ещё» в карточке задачи Категории/разделы, в которых отчёт доступен
1 — Категория SubcatID Контекстное меню категории Категории/разделы (сейчас не используется)
2 — Раздел CategoryID Контекстное меню раздела Разделы (сейчас не используется)
3 — Пользователь UserID Меню «Подробно» в профиле пользователя Доступен из профиля любого пользователя с правом просмотра
4 — Группа коллекция UserID + GroupID Меню «Подробно» в составе группы (сейчас не используется)

⚠️ Контроль прав пользователя на данные, которые показывает отчёт, возложен на разработчика отчёта.

Действия с отчётом: онлайн-редактор, Win-дизайнер, права

В строке отчёта по кнопке действий открывается меню: настроить права доступа и перейти к редактированию — онлайн или на своём устройстве.

Онлайн-редактор. Открывает отчёт в онлайн-редакторе FastReport прямо в браузере.

Онлайн-редактор FastReport: правка шаблона отчёта в браузере

Win-дизайнер. Открывает отчёт в десктоп-дизайнере FastReport (его нужно предварительно установить; для работы требуется .NET Framework 4.6.1). Дизайнер поставляется .zip-архивом в служебной категории «Репозиторий версий приложения».

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

Окно прав доступа к отчёту: выбор групп для просмотра и редактирования

Импорт и экспорт отчётов

Для переноса отчётов между инсталляциями используется импорт/экспорт. Отчёты переносятся вместе с фильтрами, смарт-выражениями и частично с настройками контекста. Кнопка «Импорт/экспорт» над списком открывает окно выбора.

Окно импорта/экспорта отчётов: выбор отчётов для переноса

Порядок работы:

  • Экспорт — выделите нужные отчёты (несколько — с зажатым Shift) и нажмите «Экспортировать». Создаётся архив (по умолчанию report_export.zip) с набором XML-файлов.
  • Импорт — нажмите «Выбрать файл», укажите архив и нажмите «Импортировать». Отчёты добавятся вместе с фильтрами; тип контекста сохранится, но сами объекты контекста и права доступа нужно настроить заново.

⚠️ Если отчёт с таким же GUID уже есть в системе — он будет заменён новым, с потерей привязки к объектам контекста.

Настройки экспорта

В пользовательском режиме отчёт можно выгрузить в файл — у каждого формата свои настройки.

Меню экспорта отчёта в пользовательском режиме: PDF, Excel, Word, RTF, XPS, OpenOffice, XML, CSV

В режиме администрирования параметры выгрузки настраиваются для четырёх форматов — по кнопке в колонке «Настройки экспорта».

Настройки экспорта отчёта по форматам Docx, Xlsx, Rtf, Ppt

Формат Настройки
Docx Тип экспорта (табличный / послойный / абзацы); высота строки (совпадает / минимальна); Wysiwyg; оптимизированная печать
Xlsx Wysiwyg; разрывы страниц; только данные; без разрывов таблицы; оптимизированная печать
Rtf Wysiwyg; разрывы страниц; формат картинок (нет / PNG / JPEG / метафайл — по умолчанию .EMF)
Ppt Формат картинок (PNG / JPEG)

⚠️ Для корректного экспорта в Excel элементы отчёта в дизайнере FR обязательно должны быть привязаны к рабочей области (сетке).

Логирование действий с отчётами

Действия с отчётами фиксируются в общем системном журнале: редактирование основных настроек отчёта, правка содержимого в онлайн-редакторе и Win-дизайнере, импорт и экспорт, а также изменения условий фильтрации (добавление, редактирование, удаление).

Общий системный журнал с записями действий по отчётам

Типичные ошибки настройки

Частые проблемы настройки отчётов и способы их диагностики:

Симптом Причина Где проверить SQL-диагностика
Отчёт есть в админке, но не виден пользователю Не настроены права на группу пользователя Права отчёта select * from dbo.ExternalObjectsPermissions where ObjectId = (select ExternalObjectId from dbo.Reports where Id = {reportId})
Фильтр отчёта пустой/неверный Некорректные ReportFilterLink или порядок параметров Фильтры отчёта select * from dbo.ReportFilterLink where ReportId = {reportId}
После импорта отчёт работает некорректно Частично перенесённые связи фильтров/прав Целостность связок Проверить ReportFilterLink, ExternalObjects* для импортированного отчёта
Отчёт не виден в контекстном меню Не привязан контекст Контекст отчёта select * from dbo.ReportContextObject where ReportId = {reportId}

FastReport: обязательные инварианты

FastReport-отчёт — административная настройка, в которой администратор создаёт карточку отчёта, права, контекст, фильтр, шаблон и параметры экспорта. Пошаговый процесс создания отчёта и базовые источники данных уже описаны в academy-patterns.md, практический чеклист Win-дизайнера и диагностики — в support-guide-fastreport.md.

⚠️ Критично: для новых FR-отчётов в пользовательских custom-app-settings должен быть включён параметр useNewFRReports=true. Без этой настройки новый FR-контур не открывает отчёты корректно.

⚠️ MSSQL и PostgreSQL не взаимозаменяемы: отчёт, созданный на MSSQL, содержит источник данных MSSQL. При переносе на PostgreSQL FastReport продолжит пытаться подключаться к старому источнику, что приводит к ошибкам. Для PostgreSQL нужен отдельный отчёт с отдельным источником данных; автоматического переключения SQL-диалекта нет.

⚠️ Права на данные внутри отчёта — ответственность разработчика отчёта. Права видимости отчёта и права на данные в SQL-источнике — разные уровни. CurrentUserID передаётся автоматически, но SQL отчёта должен сам применять его для фильтрации данных.

Дизайнер, контексты и автоматические параметры

FastReport-отчёт открывается в одном из трёх дизайнеров:

Дизайнер Как открыть Ограничения
Win-дизайнер действие «Win-дизайнер» у отчёта ссылка на скачивание из интерфейса больше не предоставляется; ZIP берётся из служебной категории «Репозиторий версий приложения»; нужен .NET Framework 4.7.1; SQL-сервер должен быть доступен с машины дизайнера
Онлайн-дизайнер Task Center /MVC/ReportDesigner/{id} доступен администраторам
Онлайн-дизайнер .NET Core /reportdesigner/{id} доступен администраторам

Для сетевых требований Win-дизайнера см. support-guide-fastreport.md. Для 7-шаговой последовательности создания отчёта см. academy-patterns.md.

CurrentUserID передаётся во все отчёты автоматически. Этот параметр нужен не для интерфейса, а для SQL/скриптов отчёта: по нему разработчик отчёта ограничивает данные правами текущего пользователя.

Контексты, в которых отчёт доступен пользователю:

Context Где доступен отчёт Автоматические параметры Особенности настройки
0 Task карточка задачи, меню «Ещё» / отчёты TaskID, SubcatID можно ограничить доступность отчёта категориями/разделами
1 Subcat контекст категории SubcatID используется для отчётов по категории
2 Category контекст раздела CategoryID в старом руководстве помечен как неиспользуемый сценарий
3 User профиль пользователя UserID список доступных значений не настраивается; доступ определяется правом просмотра отчёта
4 Group просмотр состава группы коллекция UserID + GroupID в старом руководстве помечен как неиспользуемый сценарий

Все параметры отчёта применяются совместно: контекстные параметры, CurrentUserID и параметры фильтра не отменяют друг друга.

Фильтры FR: параметры и пустые значения

Базовые фильтры «Период» и «Выпадающий список» уже разобраны в academy-patterns.md. Ниже — правила, которые критичны именно для администратора/разработчика FR-шаблона.

Именование параметров и ограничения выпадающего списка

Соответствие имён параметров между настройкой фильтра и FastReport:

Тип фильтра Имя в настройке фильтра Параметр в FastReport
Строка / Число / Выпадающий список / Пользователь / Группа / Категория / Оргструктура Name FilterName
Период Period FilterPeriodFrom, FilterPeriodTo

Для SQL-параметров дат обычно нужен тип DateTime. Для числовых ID, которые приходят из выпадающего списка как строка, безопасный вариант — оставить параметр запроса VarChar и дать SQL Server выполнить преобразование в запросе.

Ограничения фильтра «Выпадающий список». Поиск по значениям не работает, если источник фильтра — хранимая процедура, вызываемая через EXEC. Это постоянное ограничение: поведение существует с момента появления функции, изменить его нельзя.

Обходное решение — убрать ключевое слово EXEC из смарт-выражения фильтра и переписать источник в виде:

SELECT * FROM (...)

В таком виде поиск по значениям фильтра работает корректно.

Передача значений: пустые, default и вызов из строки

Правила передачи пустых значений в зависимости от типа фильтра:

Тип фильтра Если значение выбрано Если значение не выбрано
Строка строка null
Число число null
Дата дата null
Период две даты: Filter<Name>From, Filter<Name>To null для открытого начала/конца
Выпадающий список строка; при мультивыборе — значения через запятую без пробелов null
Пользователь / Группа / Оргструктура / Категория строка ID через запятую без пробелов пустая строка "", не null

⚠️ Фильтры Пользователь/Группа/Оргструктура/Категория всегда мультивыборные. Их нельзя штатно ограничить одним значением; SQL должен принимать строку ID.

⚠️ Фильтр по категориям не заменяет проверку прав в SQL. В самом фильтре пользователь видит только категории, где у него есть хотя бы одно из прав: «Просматривать все задачи», «Создавать задачи», «Исполнять», «Администратор задач», «Администратор категории». Если пользователь выбирает раздел, в отчёт передаётся список доступных ему категорий раздела. Но если пользователь не выбрал ни одной категории/раздела, контроль прав полностью остаётся на SQL отчёта.

Если фильтр привязан к отчёту, FastReport создаёт параметры при открытии отчёта в дизайнере. Для пустого default параметр может не создаться автоматически. Есть два рабочих способа:

  1. вручную создать параметр в дизайнере с нужным типом и именем Filter<Имя> или Filter<Имя>From/Filter<Имя>To, затем сохранить отчёт;
  2. временно задать в фильтре непустой default, открыть отчёт в дизайнере, убедиться что параметры созданы, сохранить отчёт, затем вернуть пустой default.

Для открытого периода default SQL-параметров подбирается так, чтобы не отсечь реальные данные. Типовой нижний default:

@from = '01.01.1900'

SQL-условие для открытого периода:

WHERE (@from IS NULL OR t.Date >= @from)
  AND (@to   IS NULL OR t.Date <= @to)

Параметры фильтра в строке вызова

Для прямого вызова отчёта значения фильтров передаются в формате f{paramID}_{Name}_v=.... Значение из строки вызова имеет приоритет над default в фильтре. Имя параметра регистрозависимо.

Тип параметра Пример
строка f11_Mod_v=test
число f11_Mod_v=2
дата f11_Mod_v=25.06.2018
период f11_Mod_v=from:25.06.2018;to:20.06.2018
пользователь / оргструктура / выпадающий список / группа / категория f11_Mod_v=1,2,3
режим «только для чтения» f11_r=1

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

Техники программирования в FastReport

Тернарный оператор, преобразование типов и итоги в заголовке

⚠️ Не использовать IIf() для защиты от null при форматировании. IIf() вычисляет все ветки до выбора результата, поэтому форматирование null всё равно падает. Тернарный оператор вычисляет только нужную ветку.

IsNull("FilterPeriodFrom") ? "-" : FormatDateTime([FilterPeriodFrom])

Для строки периода применяйте тот же принцип отдельно к началу и окончанию периода.

В рамках одного отчёта тип параметра должен быть одинаковым во всех местах использования. Числовые константы должны соответствовать ожидаемому типу: например, для Double используйте 60.0, а не 60.

Если итог по группе выводится в заголовке, а не в подвале группы:

Настройка Значение
итоговое поле ProcessAt = GroupFinished
объект Report DoublePass = True
поле названия группы ProcessAt = Default

Название группы и итог должны быть разными объектами. Название печатается на первом проходе, итог — после завершения группы.

Детальная страница, вызов с кнопки и восстановление из .FRX

Для перехода из основного отчёта в детальную страницу FastReport передаёт значения через гиперссылку. Если нужно передать список ID, не используйте запятую: FastReport трактует её как разделитель разных параметров. Практичный разделитель — _.

111_222_333

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

Для кнопки в карточке задачи обычно используется контекст «Задача». JavaScript-выражение открывает просмотр отчёта и передаёт TaskID как contextId:

window.open('/MVC/ReportView/{reportId}/contextId/' + TaskID, '_newtab');

Локальная копия шаблона FastReport сохраняется в .FRX. Восстановление через начальный экран дизайнера полностью заменяет содержимое отчёта в БД. Перед восстановлением нужно понимать, что текущий ContentXml будет перезаписан.

SQL-паттерны для FR-источников

Базовый пример SQL-источника и гиперссылки на задачу есть в academy-patterns.md и academy-patterns.md. Ниже — паттерны, которые нужны для нетривиальных отчётов.

Гиперссылки, HTML-очистка и служебные категории

Два способа построения гиперссылок на карточки задач:

Способ Когда использовать Пример
Через Settings.ApplicationPath когда в отчёт добавлена таблица Settings [Settings.ApplicationPath + "/MainTaskForm.aspx?TaskID=" + ToString([Table.TaskID])]
Относительный URL из SQL-источника когда не хочется добавлять Settings как источник сформировать URL в SQL и выбрать готовое поле в настройках гиперссылки

Для профиля пользователя используется тот же подход с UserID.

Если в категории разрешён HTML в тексте задачи, FastReport может некорректно отрисовать неполный HTML. Для плоского текста используйте SQL-функцию очистки:

SELECT dbo.fnStripTags(T.TaskText) AS TaskText
FROM TasksInSubcat11Denormalized T

Альтернативные функции, которые встречаются в отчётах: cm_StripHTML, cm_ReplaceHTML, cm_ReplaceEverything.

Полный путь категории хранит разделитель Fraction Slash (U+2044). В SQL используйте NCHAR(8260):

SELECT REPLACE(Subcategories.FullPath, NCHAR(8260), '\\') AS SubcatName
FROM Subcategories

Чтобы отчёт переносился между инсталляциями, не зашивайте ID служебных категорий. Добавьте Settings как источник данных и используйте поля:

Поле Settings Категория
CalendarSubcatID календарь
ChatSubcatID общение / чаты
PrivateSubcatID личные задачи

Для исключения задач из этих категорий передайте строку ID и проверяйте SubcatID через CHARINDEX или LIKE.

Мультивыбор в SQL и список выбранных значений в шапке

Параметр мультивыбора приходит строкой ID через запятую. Перед проверкой удобно добавить запятые в начало и конец строки: ,123,456,789,. Пустой выбор после такой нормализации даёт ,,.

WHERE (@subcat = ',,')
   OR (CHARINDEX(',' + CAST(T.SubcatID AS varchar(max)) + ',', @subcat) > 0)

Альтернативный вариант — табличная функция GetMultiValues:

WHERE (@subcat = ',,')
   OR (CAST(T.SubcatID AS varchar(max)) IN (
        SELECT [Value]
        FROM dbo.GetMultiValues(@subcat, ',')
   ))

В коде отчёта для строковых значений можно проверять вхождение через .ToString().Contains(...).

Для вывода выбранных категорий/пользователей/групп в шапке используйте отдельный SQL-источник с FOR XML PATH('') и той же проверкой CHARINDEX:

SELECT
  (SELECT REPLACE(S.FullPath, NCHAR(8260), '\\') + '; '
   FROM Subcategories S
   WHERE CHARINDEX(',' + CAST(S.SubcatID AS varchar(max)) + ',', @subcat) > 0
   FOR XML PATH('')) AS SubcatNames
FROM Subcategories

Если нужно вывести каждый элемент с новой строки, добавьте <br/> в SQL и после FOR XML PATH верните экранированные символы обратно. Для поля FastReport должен быть включён режим HTML-тегов.

SELECT REPLACE(REPLACE(
  (SELECT G.Descr + ', <br/>'
   FROM Groups G
   WHERE CHARINDEX(',' + CAST(G.GroupID AS varchar(max)) + ',', @GroupID) > 0
   FOR XML PATH('')),
  '&lt;', '<'), '&gt;', '>') AS GroupNames
FROM Groups

Рабочие минуты и Excel-формулы

Для рабочих минут используйте SQL-функцию:

dbo.tc_DiffWorkingMinutes(StartTime, EndTime)

Для отображения результата строкой в C#-коде отчёта обычно используется функция diff_str(int WMinutes), которая берёт Settings.WorkMinutesInDay и возвращает строку вида X дн. X ч. X мин.. Таблица Settings должна быть добавлена как источник данных.

Для генерации формул Excel из FR используется вспомогательная C#-функция ColumnNumberToName(int), возвращающая имя колонки (1 -> A, 2 -> B). Если порядок пересчёта формул важен, в начало формулы добавляют цифру очереди (1=..., 2=...) и затем запускают макрос .xlam AddIn, который сортирует и применяет формулы.

Дизайн FR-шаблонов и экспорт

Подробные режимы XLSX-экспорта (Wysiwyg, DataOnly, Seamless, PrintOptimized), настройки ExportSettings и API экспорта уже описаны в support-guide-fastreport.md. Здесь зафиксированы правила дизайна, которые влияют на корректность вывода.

Excel-сетка и матрицы

⚠️ Для Excel элементы отчёта обязательно привязывать к сетке. Если объекты не выровнены по одной сетке или пересекаются, FastReport создаёт лишние строки/столбцы и объединённые ячейки. После завершения шаблона включите привязку к сетке и выровняйте все элементы.

В обычных полях условное выделение может читать Value, Text или значения других ячеек. В матрицах порядок вычисления ячеек зависит от Layout (DownThenAcross / AcrossThenDown), поэтому чтение соседней ячейки в условии может быть нестабильным. Надёжнее читать исходное значение из DataSource, а не из уже отрисованной ячейки.

Для pivot/матрицы свойства Visible=false часто недостаточно. Для скрываемой колонки/строки применяйте одновременно:

Свойство Значение
Width / Height 0
Autosize False
MinWidth / MinHeight 0
Padding убрать отступы по соответствующей оси

Макет страницы: Unlimited height/width и «таблица в таблице»

Unlimited height отключает вертикальную пагинацию в браузере. Unlimited width нужен для широких матриц, которые растут по горизонтали. Настройка задаётся отдельно для каждой страницы отчёта.

FastReport не поддерживает вложенные таблицы как отдельные объекты. Для макета «таблица в таблице» используйте обычную таблицу для центральной части и текстовые поля по краям. У повторяющихся текстовых полей выставляется Duplicates=Merge, чтобы визуально получить объединённые вертикальные заголовки.

Интерактивность и изображения

Спойлер собирается из CheckBox, гиперссылки со значением группы, BeforePrint у заголовка группы и Click у чекбокса. В Click меняется список раскрытых групп и вызывается Report.Refresh().

⚠️ Клик по спойлеру полностью перезагружает отчёт. Для тяжёлых отчётов и больших наборов данных спойлеры использовать нельзя: пользователь будет ждать повторного формирования отчёта.

Изображения для объекта Picture можно брать из таблицы UploadFiles файлового провайдера. Для вложений задачи используется провайдер по умолчанию (FileProviders.UseToWriteFiles = 1), для файлового ДП — провайдер из ExtParamsFileSettings или провайдер по умолчанию.

Ключевые таблицы связки:

Сценарий Таблицы
файлы задачи FileStorageFileToTaskLinks, FileStorageFileVersions, {FileProviderDb}.dbo.UploadFiles
файлы ДП FileStorageFileToExtParamLinks, FileStorageFileVersions, {FileProviderDb}.dbo.UploadFiles

В старом руководстве отдельно указано, что для корректного отображения изображений у используемого файлового провайдера не должно быть включено сжатие данных. Если изображения хранятся в файловом ДП, для него можно выделить отдельный провайдер без сжатия.

Прочие дизайн-приёмы:

Приём Правило
сортировка по клику менять DataBand.Sort в обработчике Click; работает только на главной странице отчёта, не на детальных страницах
кликабельная шапка сортировки шапка столбца должна быть текстовым полем (Label), не ячейкой таблицы
несколько страниц в документе чтобы новая страница продолжила печататься на текущей странице, включить PrintOnPreviousPage
текстовый экспорт печатных форм RTF обычно лучше сохраняет форматирование, переносы и нестандартные шрифты, чем DOCX/PDF

Импорт, экспорт и форматы выгрузки

Экспорт отчётов создаёт ZIP-архив с XML-файлами. При импорте отчёты добавляются вместе с фильтрами; тип контекста переносится, но конкретные объекты контекста нужно указать заново. Права доступа после импорта также настраиваются заново.

⚠️ Совпадение отчётов проверяется по GUID. Если импортируемый отчёт имеет GUID уже существующего отчёта, старый отчёт заменяется новым. Привязки к объектам контекста при этом теряются.

Для локального восстановления одного шаблона используется .FRX из Win-дизайнера; это не то же самое, что пакетный экспорт/импорт отчётов через админку.

Настройки экспорта по форматам:

Формат Настройки Примечания
Docx тип экспорта: табличный / послойный / абзацы; высота строки: совпадает / минимальна; Wysiwyg; оптимизированная печать табличный экспорт кладёт каждый абзац в отдельную ячейку; послойный — в текстовые поля; абзацы — форматированный текст
Xlsx см. support-guide-fastreport.md не дублируется здесь: режимы и API уже описаны в support-guide
Rtf Wysiwyg; разрывы страниц; картинки: нет / PNG / JPEG / метафайл метафайл .EMF — default и лучший вариант для качества диаграмм
Ppt картинки: PNG / JPEG используется для презентационного вывода

Готовые отчёты и ограничения прав

В поставке есть 35 типовых отчётов. Они полезны как готовый инструмент и как примеры FR-шаблонов, но имеют отдельное ограничение прав.

Список отчётов с группой FR и контекстным меню: «Добавить в избранное», «Открыть онлайн редактор»

⚠️ В готовых отчётах права на задачи проверяются частично. Списки задач внутри отчёта могут содержать задачи, на просмотр которых у пользователя нет прав. Проверка прав сработает только при переходе по гиперссылке в карточку задачи; отдельные задачи могут не открыться.

⚠️ Совместимость: корректная работа готовых отчётов поддерживается с SQL Server 2014; SQL Server 2012 — ограниченно.

Список типовых отчётов:

Отчёт
1 Аудит доступа к задаче
2 Время активности пользователей в системе
3 Время активности пользователя в системе
4 Диаграмма Ганта по отсутствиям
5 Журнал регистрации действий пользователей
6 Задачи, не выполненные за рекомендуемый срок
7 Занятость сотрудников в группах за период
8 Информация по просроченным задачам
9 Использование дискового пространства
10 История доступа к файлам
11 Итоги дня
12 Нарушения регламентов работы с задачами
13 Общая статистика по задачам
14 Отчёт по входу сотрудников в 1Форму
15 Отчёт по переносам сроков
16 Отчёт по статусам
17 Поставленные задачи на группу
18 Просроченные задачи для пользователя
19 Работа по поставленным задачам
20 Статистика загрузки сотрудника
21 Статистика исполнения задач группой для орг.единиц
22 Статистика использования мобильных приложений
23 Статистика по акцептантам
24 Статистика по подписям
25 Статистика по просроченным задачам
26 Статистика по сотруднику за период
27 Табель трудозатрат
28 Табель трудозатрат по задаче
29 Табель трудозатрат по категории
30 Табель трудозатрат по проекту
31 Табель трудозатрат по сотруднику
32 Трудозатраты по задачам
33 Трудозатраты по задачам категории
34 Трудозатраты по задачам проекта
35 Трудозатраты по сотруднику

Прочие источники и связанные документы

Темы, не дублируемые в этом файле (основные источники):

Тема Где основной источник
процесс создания FR-отчёта, 3 типа источников данных, базовая гиперссылка на задачу academy-patterns.md
Win-дизайнер, сетевые требования, диагностика, маршруты API support-guide-fastreport.md
Настройки экспорта в XLSX support-guide-fastreport.md
пользовательские сценарии запуска отчётов business.md