/// <summary>
        /// Формирует отчет согласно заданным критериям
        /// </summary>
        /// <param name="sender"> Владелец окна отчета</param>
        /// <param name="Title">Надпись окна отчета</param>
        /// <param name="path">Путь к основном отчету</param>
        /// <param name="subreports">Подотчеты</param>
        /// <param name="tables">Таблицы данных отчета</param>
        /// <param name="r">Параметры отчета</param>
        /// <param name="duplex">Режим печати отчета</param>
        /// <param name="PreviewPrint">Показывать ли предварительный просмотр</param>
        /// <param name="EnabledExport">Доступные параметры для экспорта</param>
        public static void ShowReport(DependencyObject sender, string Title, string path, IEnumerable <SubReport> subreports, IEnumerable <DataTable> tables, IEnumerable <ReportParameter> r, SPrint.Duplex duplex = SPrint.Duplex.Simplex,
                                      bool PreviewPrint = true, DateTime?YearVersion = null, string[] EnabledExport = null)
        {
            if (!ExistsReport(path, YearVersion))
            {
                System.Windows.MessageBox.Show(Window.GetWindow(sender), "Ошибка формирования. Макет отчета не найден в заданной директории", "Зарплата предприятия");
                return;
            }
            ViewReportWindow f = new ViewReportWindow(EnabledExport);

            f.repViewer.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
            f.repViewer.LocalReport.LoadReportDefinition(File.OpenRead(string.Format(@"{0}\Reports\{1}{2}", AppLocalPath.CurrentAppPath, YearVersion.HasValue ? YearVersion.Value.Year.ToString() + @"\" : string.Empty, path)));

            if (subreports != null)
            {
                CurrentSubReports = subreports;
                foreach (SubReport st in subreports)
                {
                    f.repViewer.LocalReport.LoadSubreportDefinition(st.ReportName, File.OpenRead(string.Format(@"{0}\Reports\{1}{2}", AppLocalPath.CurrentAppPath, YearVersion.HasValue ? YearVersion.Value.Year.ToString() + @"\" : string.Empty, st.ReportPath)));
                }
            }
            else
            {
                CurrentSubReports = null;
            }
            f.repViewer.PrinterSettings.Duplex = duplex;
            f.repViewer.ZoomPercent            = 110;
            f.repViewer.LocalReport.DataSources.Clear();
            if (tables != null)
            {
                int i = 1;
                foreach (DataTable t in tables)
                {
                    f.repViewer.LocalReport.DataSources.Add(new ReportDataSource(string.Format("DataSet{0}", i++), t));
                }
            }
            if (r != null)
            {
                f.repViewer.LocalReport.SetParameters(r);
            }
            f.repViewer.RefreshReport();
            if (PreviewPrint)
            {
                f.repViewer.SetDisplayMode(DisplayMode.PrintLayout);
            }
            if (sender != null)
            {
                f.Owner = Window.GetWindow(sender);
            }
            f.Title += "    " + Title;
            f.Show();
        }
        public static Window ShowReport(string Title, string path, IEnumerable <DataTable> tables, IEnumerable <ReportParameter> r)
        {
            ViewReportWindow f = new ViewReportWindow();

            f.repViewer.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
            f.repViewer.LocalReport.LoadReportDefinition(File.OpenRead(string.Format(@"{0}\Reports\{1}{2}", AppLocalPath.CurrentAppPath, string.Empty, path)));

            /*if (subreports != null)
             * {
             *  CurrentSubReports = subreports;
             *  foreach (SubReport st in subreports)
             *  {
             *      f.repViewer.LocalReport.LoadSubreportDefinition(st.ReportName, File.OpenRead(string.Format(@"{0}\Reports\{1}{2}", Connect.CurrentAppPath, string.Empty, st.ReportPath)));
             *  }
             * }
             * else*/
            CurrentSubReports       = null;
            f.repViewer.ZoomPercent = 100;
            f.repViewer.LocalReport.DataSources.Clear();
            if (tables != null)
            {
                int i = 1;
                foreach (DataTable t in tables)
                {
                    f.repViewer.LocalReport.DataSources.Add(new ReportDataSource(string.Format("DataSet{0}", i++), t));
                }
            }
            if (r != null)
            {
                f.repViewer.LocalReport.SetParameters(r);
            }
            f.repViewer.RefreshReport();
            f.repViewer.SetDisplayMode(DisplayMode.PrintLayout);
            f.Title += "    " + Title;
            f.Show();
            return(f);
        }