Перейти к основному содержанию
`Ctrl`+`K`

# Сервер Отчетов (ies.service)

`Сервер отчетов` отвечает за генерацию и обработку отчетов, используя реплицируемую базу данных для снижения нагрузки на основной сервер. Взаимодействие между серверами осуществляется по протоколу HTTP для прямого запуска маршрутизируемых процессов. Сервер настраивается принимать процессы отчетов запущенные с основного сервера или с клиента, результаты возвращает инициатору. Все холдеры, не являющиеся системными и не учавствующие в обработке отчётов отключаются.

В разделе описывается типовая конфигурация Сервера Отчетов (Report Server).

## Конфигурация и Параметры

Сервер отчетов представляет собой службу .NET, конфигурация которой определяется файлами `appsettings.json`, `IES.Service.(exe|dll).config` и сущностью правил маршрутизации процессов.

# Настройка Компонентов

Для корректной работы сервера отчетов необходимо отключить ряд компонентов (Хандлеров и Холдеров), которые должны выполняться только на основном сервере. Данная настройка производится в файле конфигурации `IES.Service.(exe|dll).config` в секции `VCLib.Server/StarterConfiguration/Holders`.

Ниже приведены списки компонентов, которые необходимо отключить.

Конфигурация Обработчиков (Handlers):

Полное имя (Full Name) | Описание | Системный
--- | --- | ---
IES.ExpertiseOneSluchProcessHandler | Обработчик процесса экспертизы одного случая | Нет
IES.ExpertisePolicyProcessHandler | Обработчик процесса проверки полисов | Нет
IES.ExpertiseSchetAsFlkProcessHandler | Обработчик процесса экспертизы счета как ФЛК | Нет
IES.ExpertiseSchetByGroupProcessHandler | Обработчик процесса экспертизы счета по группе | Нет
IES.ExpertiseSchetProcessHandler | Обработчик процесса экспертизы счета | Нет
IES.ExpertiseSluchProcessHandler | Обработчик процесса экспертизы случая | Нет
IES.ProcessAttachmentProcessHandler | Обработчик запросов о прикреплении | Нет
IES.TempFileRepairingHandler | Хандлер восстановления временных файлов | Нет

Конфигурация Холдеров (Holders):

Полное имя (Full Name) | Описание | Системный
--- | --- | ---
FNS.LoadSettingsHolder | Холдер настроек загрузки ФНС | Нет
IES.CompanySettingsHolder | Холдер настроек компании | Нет
IES.ComponentsDiagram | Холдер диаграммы компонентов | Нет
IES.DiagramMonitoringHolder | Холдер мониторинга диаграммы серверных процессов | Нет
IES.EmailLoadHolder | Холдер загрузки из Email | Нет
IES.EmailNotifyHolder | Холдер отправки оповещений по Email | Нет
IES.ExpertiseErrorsHolder | Холдер ошибок экспертизы | Нет
IES.ExpertiseLogHolder | Холдер логирования экспертизы | Нет
IES.ExportRecordServiceHolder | Холдер сервисов выгрузки | Нет
IES.F006Holder | Холдер F006 | Нет
IES.F014DenyReasonHolder | Холдер причин отказа F014 | Нет
IES.FactCalcSettingHolder | Холдер настроек расчета факта | Нет
IES.FlkSettingsHolder | Холдер ФЛК схем | Нет
IES.FrzlMessagePackHolder | Холдер пакетов ФРЗЛ | Нет
IES.GosznakMessageHolder | Холдер приёмки ответов госзнака | Нет
IES.HolidayHolder | Холдер выходных | Нет
IES.ImportRecordHolder | Холдер процесса загрузки | Нет
IES.MedicalExpertiseFolderHolder | Холдер папок экспертизы | Нет
IES.MesPriceHolder | Холдер стоимостей стандартов | Нет
IES.MtrSchetOutCopyHolder | Холдер копирования атрибутов при раскассировании | Нет
IES.PlanFactCalculationHolder | Холдер расчета план-факта | Нет
IES.PlanSectionHolder | Холдер классификаторов планирования | Нет
IES.PolicyPackSendHolder | Холдер отправки пакетов полисов | Нет
IES.PostponedDeleteEntityHolder | Холдер настроек отложенного удаления | Да
IES.RabbitMQHolder | Холдер загрузки реестров из шины данных | Нет
IES.RabbitWatcherHolder | Холдер предобработки счетов раббита | Нет
IES.RedirectImportDataHolder | Холдер перенаправления импорта данных | Нет
IES.ReportNameHolder | Холдер именования отчетов | Нет
IES.ResetProcessObjectHolder | Холдер для перезапуска PROCESS_IMPORT_OBJECT | Нет
IES.RobotFolderHolder | Холдер папок робота | Нет
IES.SchetOplataHolder | Холдер оплаты | Нет
IES.SchetQueueHolder | Холдер приоритетных очередей приемки счетов | Нет
IES.SchetZapIdentificationHolder | Холдер идентификации | Нет
IES.SearchCriteriaHolder | Холдер критериев поиска | Нет
IES.SMEV3ServiceHolder | Холдер взаимодействия со СМЕВ3 | Нет
IES.SPReplaceHolder | Холдер замен хранимых процедур | Нет
IES.TariffAgreementHolder | Холдер тарификации | Нет
IES.TariffValueGroupsHolder | Холдер групп тарифных значений | Нет
IES.TfomsF001DictionaryHolder | Холдер ТФОМС F001 | Нет
VCLib.CascadeDeleteHolder | Холдер каскадного удаления | Да
VCLib.DictionaryUpdateHolder | Холдер обновляемых справочников | Да
VCLib.DictionaryUpdateInfoHolder | Холдер информации об обновлении справочников | Да
VCLib.DtoModelHolder | Холдер DTO моделей | Нет
VCLib.EntitiesWebAliasHolder | Холдер веб-алиасов сущностей | Нет
VCLib.ExtraUICommandHolder | Холдер доп. команд | Да
VCLib.FileContentHolder | Холдер получения контента файлов | Да
VCLib.KKMProcessHolder | Холдер процессов ККМ | Нет
VCLib.MongoDBIntegrationHolder | Холдер интеграции с MongoDB | Да
VCLib.ObjectModificationActionHolder | Холдер действий при модификации объектов | Да
VCLib.ObjectsHistoryManagerHolder | Холдер управления историей объектов | Да
VCLib.StatisticsHolder | Холдер статистики использования | Нет
VCLib.WebApiHolder | Холдер Web API | Нет
VCLib.WebServiceHolder | Холдер веб-сервисов | Нет

Пример секции `VCLib.Server/StarterConfiguration/Holders`:

    <Holders>
            <!-- Хандлеры report сервера, которые должны быть только на main -->
            <Holder name="IES.ExpertiseSchetProcessHandler" startup="disabled" />
            <Holder name="IES.ExpertiseSchetByGroupProcessHandler" startup="disabled" />
            <Holder name="IES.ExpertiseSluchProcessHandler" startup="disabled" />
            <Holder name="IES.ExpertiseSchetAsFlkProcessHandler" startup="disabled" />
            <Holder name="IES.ProcessAttachmentProcessHandler" startup="disabled" />
            <Holder name="IES.ExpertisePolicyProcessHandler" startup="disabled" />
            <Holder name="IES.ExpertiseOneSluchProcessHandler" startup="disabled" />
            <Holder name="IES.TempFileRepairingHandler" startup="disabled" />

            <!-- Холдеры report сервера, которые должны быть только на main -->
            <Holder name="FNS.LoadSettingsHolder" startup="disabled" />
            <Holder name="IES.CompanySettingsHolder" startup="disabled" />
            <Holder name="IES.ComponentsDiagram" startup="disabled" />
            <Holder name="IES.EmailLoadHolder" startup="disabled" />
            <Holder name="IES.EmailNotifyHolder" startup="disabled" />
            <Holder name="IES.ExpertiseErrorsHolder" startup="disabled" />
            <Holder name="IES.ExpertiseLogHolder" startup="disabled" />
            <Holder name="IES.ExportRecordServiceHolder" startup="disabled" />
            <Holder name="IES.F006Holder" startup="disabled" />
            <Holder name="IES.F014DenyReasonHolder" startup="disabled" />
            <Holder name="IES.FactCalcSettingHolder" startup="disabled" />
            <Holder name="IES.FlkSettingsHolder" startup="disabled" />
            <Holder name="IES.FrzlMessagePackHolder" startup="disabled" />
            <Holder name="IES.GosznakMessageHolder" startup="disabled" />
            <Holder name="IES.HolidayHolder" startup="disabled" />
            <Holder name="IES.ImportRecordHolder" startup="disabled" />
            <Holder name="IES.MedicalExpertiseFolderHolder" startup="disabled" />
            <Holder name="IES.MesPriceHolder" startup="disabled" />
            <Holder name="IES.MtrSchetOutCopyHolder" startup="disabled" />
            <Holder name="IES.PlanFactCalculationHolder" startup="disabled" />
            <Holder name="IES.PlanSectionHolder" startup="disabled" />
            <Holder name="IES.PolicyPackSendHolder" startup="disabled" />
            <Holder name="IES.PostponedDeleteEntityHolder" startup="disabled" />
            <Holder name="IES.RabbitMQHolder" startup="disabled" />
            <Holder name="IES.RabbitWatcherHolder" startup="disabled" />
            <Holder name="IES.RedirectImportDataHolder" startup="disabled" />
            <Holder name="IES.ReportNameHolder" startup="disabled" />
            <Holder name="IES.ResetProcessObjectHolder" startup="disabled" />
            <Holder name="IES.RobotFolderHolder" startup="disabled" />
            <Holder name="IES.SchetOplataHolder" startup="disabled" />
            <Holder name="IES.SchetQueueHolder" startup="disabled" />
            <Holder name="IES.SchetZapIdentificationHolder" startup="disabled" />
            <Holder name="IES.SearchCriteriaHolder" startup="disabled" />
            <Holder name="IES.SMEV3ServiceHolder" startup="disabled" />
            <Holder name="IES.SPReplaceHolder" startup="disabled" />
            <Holder name="IES.TariffAgreementHolder" startup="disabled" />
            <Holder name="IES.TariffValueGroupsHolder" startup="disabled" />
            <Holder name="IES.TfomsF001DictionaryHolder" startup="disabled" />
            <Holder name="IES.DiagramMonitoringHolder" startup="disabled" />
            <Holder name="VCLib.CascadeDeleteHolder" startup="disabled" />
            <Holder name="VCLib.DictionaryUpdateHolder" startup="disabled" />
            <Holder name="VCLib.DictionaryUpdateInfoHolder" startup="disabled" />
            <Holder name="VCLib.DtoModelHolder" startup="disabled" />
            <Holder name="VCLib.EntitiesWebAliasHolder" startup="disabled" />
            <Holder name="VCLib.ExtraUICommandHolder" startup="disabled" />
            <Holder name="VCLib.FileContentHolder" startup="disabled" />
            <Holder name="VCLib.ObjectModificationActionHolder" startup="disabled" />
            <Holder name="VCLib.ObjectsHistoryManagerHolder" startup="disabled" />
            <Holder name="VCLib.StatisticsHolder" startup="disabled" />
            <Holder name="VCLib.WebApiHolder" startup="disabled" />
            <Holder name="VCLib.WebServiceHolder" startup="disabled" />
            <Holder name="VCLib.KKMProcessHolder" startup="disabled" />
            <Holder name="VCLib.MongoDBIntegrationHolder" startup="disabled" />
    </Holders>

# Настройка Маршрутизации Процессов

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

Принцип маршрутизации:

- На Основной Сервер (Main): Должны перенаправляться все процессы, выполняющие модификацию данных (INSERT, UPDATE, DELETE). Поскольку сервер отчетов работает с доступной только для чтения репликой, любые попытки записи локально приведут к ошибкам.

- На Сервер Отчетов (Report): Должны перенаправляться ресурсоемкие процессы чтения, формирования отчетов и выгрузки данных, чтобы разгрузить основной сервер.

Ниже приведена таблица рекомендуемых правил маршрутизации.

Имя Процесса | Описание | Источник (Source) | Назначение (Target)
--- | --- | --- | ---
KERNEL_INSERT | Выполнение инструкции по созданию записи в БД | Report | Main
KERNEL_UPDATE | Выполнение инструкции по изменению записи в БД | Report | Main
KERNEL_DELETE | Выполнение инструкции по удалению записи из БД | Report | Main
KERNEL_SAVE | Генерация инструкций и запуск процессов создания или изменения записи в БД | Report | Main
Save | Серверный процесс сохранения. Сбор и запуск низкоуровневых процессов изменения БД по объекту | Report | Main
INTERACTIVE_SAVE | Подготовка и запуск серверных процессов сохранения | Report | Main
ExecStoredProcedureProcess | Процесс выполнения хранимой процедуры | Report | Main
CountStatisticsValues | Сбор и сохранение статистики выполнения отчётов | Report | Main
RefreshCompanySettingsHolder | Обновление холдера настроек организации | Report | Main
GetCompanySettingsParameterValue | Получение значений параметров из холдера настроек организации | Report | Main
GetCompanySettingsParameter | Получение параметров из холдера настроек организации | Report | Main
REPORT_CREATE | Процесс формирования списочного отчёта | Main | Report
ReportUnloadProcess | Серверный процесс инструмента выгрузки отчётов | Main | Report
MENU_REPORT_CREATE | Процесс запуска любого отчёта через меню Отчёты в интерфейсе | Main | Report
CreateGenericReport | Процесс формирования генераторного отчёта | Main | Report
ViewGenericReportProcess | Процесс формирования preview генераторного отчёта | Main | Report
CheckGenericReportProgressProvided | Проверка работоспособности генераторного отчёта | Main | Report
CreateXMLReportProcess | Процесс формирования XML отчёта | Main | Report
ExportDataProcess | Процесс формирования отчёта типа Выгрузка | Main | Report
GENERATE_TEMPLATE | Процесс генерации шаблона для списочного отчёта | Main | Report
CHECK_TEMPLATE | Процесс проверки работоспособности шаблона списочного отчёта | Main | Report