private void GenerateOrder() { List <List <int> > filialMarks = new List <List <int> >(); int firstCheckBoxColumnIndex = gridOrder.Columns.IndexOf(gridOrder.Columns[OrderFileGenerator.filialNames.First()]); int columnCount = gridOrder.Columns.Count; int rowCount = gridOrder.Rows.Count; for (int i = 0; i < rowCount; i++) { List <int> list = new List <int>(); for (int j = firstCheckBoxColumnIndex; j < columnCount; j++) { if (Convert.ToBoolean(gridOrder.Rows[i].Cells[j].Value)) { list.Add(j - firstCheckBoxColumnIndex); } } if (list.Count == 0) { list.Add((int)OrderFileGenerator.Filials.Minsk); } filialMarks.Add(list); } if (filialMarks.Count == 0) { MessageBox.Show("Нет данных для генерации выписки", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } OrderFileGenerator.SaveOrderIntoFile(prologue, document, filialMarks, epilogue); }
private void GenerateOrder() { DialogResult result = DialogResult.None; bool everythingIsOk = true; if (gridOrder.ColumnCount == 0) { MessageBox.Show("Нет данных для генерации выписки", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { toolStripStatusLabel.Text = loadingString; String date = tableOrder.Rows[0].Field <String>(columnNames.First()); if (!OrderFileGenerator.ConnectToExcelRegisterAndGetInformation(date)) { result = MessageBox.Show("Возникли проблемы с файлом реестра. Не найдены записи на требуемую дату: " + date, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (System.Runtime.InteropServices.COMException exc) { everythingIsOk = false; result = MessageBox.Show("Возникли проблемы с файлом реестра. Не найдена страница с именем " + Properties.Settings.Default.RegisterSheetName + ". Проверьте имя страницы и файл реестра.\n" + exc.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { toolStripStatusLabel.Text = String.Empty; if (result == DialogResult.OK) { result = MessageBox.Show("Хотите продолжить генерацию выписки без импорта данных из реестра? " + "(Т.е. если сумма одна на несколько филиалов, то она дублируется во всех филиалах, а ее " + "изменение придется выполнять вручную)", "Предложение", MessageBoxButtons.YesNo, MessageBoxIcon.Question); } } if (result == DialogResult.Yes || everythingIsOk) { List <List <int> > filialMarks = new List <List <int> >(); int firstCheckBoxColumnIndex = gridOrder.Columns.IndexOf(gridOrder.Columns[OrderFileGenerator.filialNames.First()]); int columnCount = gridOrder.Columns.Count; int rowCount = gridOrder.Rows.Count; for (int i = 0; i < rowCount; i++) { List <int> list = new List <int>(); for (int j = firstCheckBoxColumnIndex; j < columnCount; j++) { if (Convert.ToBoolean(gridOrder.Rows[i].Cells[j].Value)) { list.Add(j - firstCheckBoxColumnIndex); } } if (list.Count == 0) { list.Add((int)OrderFileGenerator.Filials.Minsk); } filialMarks.Add(list); } if (filialMarks.Count == 0) { MessageBox.Show("Нет данных для генерации выписки", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { OrderFileGenerator.SaveOrderIntoFile(prologue, document, filialMarks, epilogue); } catch (Exception exc) { MessageBox.Show(exc.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { OrderFileGenerator.Register.Close(false, false, false); // OrderFileGenerator.ExcelApp.Quit(); GC.Collect(); } } else { OrderFileGenerator.Register.Close(false, false, false); // OrderFileGenerator.ExcelApp.Quit(); GC.Collect(); } }