public override bool CheckSettings() { if (HasLeadReport && CheckPathSettings()) { //if (Groups.FirstOrDefault(arg => arg.LeadSheetIndex < 0) != null) //{ // Все группы должны быть заполнены // MessageBox.Show(m_ParentWnd, // Properties.Resources.resGroupWithoutLeadSheetIndex, // Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(), // MessageBoxButton.OK, // MessageBoxImage.Error); // return false; //} if ((from gr in Groups where gr.LeadSheetIndex >= 0 group gr by gr.LeadSheetIndex into LeadSheets where LeadSheets.Count() > 1 select LeadSheets.Count()).Count() > 0) { // Для разных групп выбраны одинаковые листы MessageBox.Show(m_ParentWnd, Properties.Resources.resLeadSheetsDuplicated, Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(), MessageBoxButton.OK, MessageBoxImage.Error); return(false); } if ((from gr in Groups where gr.LeadSheetIndex >= 0 && (gr.StartDate.HasValue && gr.EndDate.HasValue && gr.StartDate.Value > gr.EndDate.Value) || !gr.StartDate.HasValue || gr.EndDate.Value.Year < GlobalDefines.MIN_GROUP_YEAR select gr).Count() > 0) { // Есть группы с неверно заданными датами MessageBox.Show(m_ParentWnd, Properties.Resources.resInvalidDatesForLeadSheets, Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(), MessageBoxButton.OK, MessageBoxImage.Error); return(false); } if (FirstMemberRow < 1 || PlaceColumnIndex < 1 || PersonalDataColumnIndex < 1 || YearOfBirthColumnIndex < 1 || TeamColumnIndex < 1) { MessageBox.Show(m_ParentWnd, Properties.Resources.resInvalidLeadReportInfoVals, Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(), MessageBoxButton.OK, MessageBoxImage.Error); return(false); } } return(true); }
/// <summary> /// Изменили путь к книге с протоколами трудности /// </summary> private void OnLeadReportRefreshed() { LeadSheets.Clear(); foreach (CGroupItem group in Groups) { group.LeadSheetIndex = -1; group.LeadSheetsCount = 0; } if (HasLeadReport && CheckPathSettings()) { bool NewAppCreated; MSExcel.Application excelApp = GlobalDefines.StartExcel(out NewAppCreated); if (excelApp != null) { MSExcel.Workbook wbk = null; bool NewWbkCreated = false; try { foreach (MSExcel.Workbook book in excelApp.Workbooks) { if (book.FullName == XlsPath) { // Книга уже открыта => используем её wbk = book; break; } } if (wbk == null) { if (NewAppCreated) { excelApp.Visible = true; excelApp.WindowState = MSExcel.XlWindowState.xlMinimized; } wbk = excelApp.Workbooks.Open(XlsPath); if (NewAppCreated) { excelApp.Visible = false; } NewWbkCreated = true; } if (wbk != null) { foreach (MSExcel.Worksheet wsh in wbk.Worksheets) { LeadSheets.Add(wsh.Name); } LeadSheets.Add(Properties.Resources.resCmbiClear); // Последним пунктом будет "Очистить" } foreach (CGroupItem group in Groups) { group.LeadSheetsCount = LeadSheets.Count; } return; } catch (Exception ex) { MessageBox.Show(m_ParentWnd, string.Format(Properties.Resources.resfmtErrorDurExcelOperation, ex.Message), Parent == null ? m_ParentWnd.Title : (Parent as TabItem).Header.ToString(), MessageBoxButton.OK, MessageBoxImage.Error); } finally { if (wbk != null && NewWbkCreated) { wbk.Saved = true; // Чтобы не появлялось сообщение с вопросом на сохранение wbk.Close(); } if (NewAppCreated) { excelApp.Quit(); } } } else { MessageBox.Show(m_ParentWnd, string.Format(Properties.Resources.resfmtErrorDurExcelOperation, Properties.Resources.resCantCreateExcelApp), Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(), MessageBoxButton.OK, MessageBoxImage.Error); } } }