コード例 #1
0
        /// <summary>
        /// Получение/формирование параметров отчёта, DataSource (список сущностей для таблицы), пути файла и заголовка
        /// </summary>
        /// <inheritdoc />
        public void AdditionalInitializeComponent()
        {
            _reportFile = Common.GetReportFilePath(ReportFileName);             // Путь к файлу отчёта

            // Запрос параметров отчёта в отдельном окне

            const bool isPeriod        = false;
            const bool isMounthOrYeath = false;
            const bool isWarehouse     = false;
            const bool isWorkGuild     = false;
            const bool isDate          = true;
            const bool isDatePeriod    = false;
            const bool isMonthYear     = false;
            const bool isProduct       = false;
            const bool isCompany       = false;
            const bool isTypeProduct   = false;
            const bool isFormaPayment  = false;
            const bool isAbroad        = true;

            const string message          = "Выберите дату";
            var          parametersWindow = new ReportParametersWindow(isPeriod, isMounthOrYeath, isWarehouse,
                                                                       isWorkGuild, isDate, isDatePeriod, isMonthYear, isProduct, isCompany, isTypeProduct, isFormaPayment, isAbroad,
                                                                       message)
            {
                Owner = Common.GetOwnerWindow()
            };

            parametersWindow.ShowDialog();
            if (!parametersWindow.DialogResult.HasValue || parametersWindow.DialogResult != true)
            {
                return;
            }

            // Получение введённых пользователем параметров
            var abroad = parametersWindow.SelectedAbroad();

            var nullableLoadDateTime = parametersWindow.SelectedDateTime();

            if (nullableLoadDateTime == null)
            {
                const string           errorMessage = "Дата не указана";
                const MessageBoxButton buttons      = MessageBoxButton.OK;
                const MessageBoxImage  messageType  = MessageBoxImage.Error;
                MessageBox.Show(errorMessage, PageLiterals.HeaderValidation, buttons, messageType);
                return;
            }

            var endDate = ((DateTime)nullableLoadDateTime).AddDays(-1);

            DateTime startDate = new DateTime(endDate.Year, 1, 1);

            // Формирование одиночных строковых параметров отчёта
            _reportParameters = new[]
            {
                new ReportParameter("Date", ((DateTime)nullableLoadDateTime).ToShortDateString()),
                new ReportParameter("TheAbroad", abroad)
            };
            try
            {
                const string dataSourceName   = "ExpenditureByTerritory";
                var          resultReportList =
                    ExpenditureByTerritoryService.GetExpenditureByTerritory(startDate, endDate, abroad);
                _reportDataSource = new ReportDataSource(dataSourceName, resultReportList);


                ReportViewer.Load += ReportViewer_Load;                 // Подписка на метод загрузки и отображения отчёта
            }
            catch (StorageException ex)
            {
                Common.ShowDetailExceptionMessage(ex);
            }
        }