private void tableMain(object ObjMissing, Word._Document ObjDoc) { int curRow; int countCol; int countRow; string[] FIO; string Surname; string Name; string Patronymic; string Addition; //Задаём закладку конца документа object EndOfDoc = "\\endofdoc"; Word.Table ObjTable; Word.Range ObjWordRange; //Задаём количество столбцов //оно остаётся неизменным //в количестве 6 штук countCol = 6; //Создаём строки //1. под шапку таблицы countRow = 1; //Формируем строки по заменам преподавателей в первом семестре //прогоняем все строки фактической нагрузки for (int i = 0; i <= mdlData.colDistribution.Count - 1; i++) { //смотрим только второй семестр if (mdlData.colDistribution[i].Semestr.SemNum.Equals(cmbSemestr.SelectedItem.ToString())) { //Если есть часы на ГАК, на аспирантуру, на диплом, //на преддипломную практику, на производственную практику, //на посещение учебных занятий, //на учебную практику, то не рассматриваем эти строки if (!(mdlData.colDistribution[i].GAK > 0) & !(mdlData.colDistribution[i].PostGrad > 0) & !(mdlData.colDistribution[i].DiplomaPaper > 0) & !(mdlData.colDistribution[i].PreDiplomaPractice > 0) & !(mdlData.colDistribution[i].ProducingPractice > 0) & !(mdlData.colDistribution[i].TutorialPractice > 0) & !(mdlData.colDistribution[i].Visiting > 0)) { if ((mdlData.colDistribution[i].Subject.Subject == "Посещение занятий") || (mdlData.colDistribution[i].Subject.Subject == "Аспирантура") || (mdlData.colDistribution[i].Subject.Subject == "Руководство магистрами")) { continue; } //добавляем строку countRow++; } } } //Вставляем таблицу согласно заполненной сетке и заполняем её данными о нагрузке ObjWordRange = ObjDoc.Bookmarks.get_Item(ref EndOfDoc).Range; ObjTable = ObjDoc.Tables.Add(ObjWordRange, countRow, countCol, ref ObjMissing, ref ObjMissing); //Размер шрифта 10 пт ObjTable.Range.Font.Size = 10; //Выравнивание по левому краю ObjTable.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; //Отступ после абзаца отсутствует ObjTable.Range.ParagraphFormat.SpaceAfter = 0; //Отступ в 0 пт до абзаца ObjTable.Range.ParagraphFormat.SpaceBefore = 0; //Одинарный межстрочный интервал ObjTable.Range.ParagraphFormat.Space1(); //Границы таблицы включены ObjTable.Borders.Enable = 1; //Текущая строка первая curRow = 1; ObjTable.Rows[1].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; ObjTable.Rows[1].Range.Font.Bold = 1; //Заполняем первую строку и одновременно формируем размерности ObjTable.Cell(curRow, 1).Range.Text = "№ п/п"; ObjTable.Cell(curRow, 2).Range.Text = "Дисциплина"; ObjTable.Cell(curRow, 3).Range.Text = "Группа"; ObjTable.Cell(curRow, 4).Range.Text = "Основной преподаватель"; ObjTable.Cell(curRow, 5).Range.Text = "Замещающий преподаватель"; ObjTable.Cell(curRow, 6).Range.Text = "Резервный преподаватель"; //Формируем строки по заменам преподавателей в первом семестре //прогоняем все строки фактической нагрузки for (int i = 0; i <= mdlData.colDistribution.Count - 1; i++) { //смотрим только второй семестр if (mdlData.colDistribution[i].Semestr.SemNum.Equals(cmbSemestr.SelectedItem.ToString())) { //Если есть часы на ГАК, на аспирантуру, на диплом, //на преддипломную практику, на производственную практику, //на посещение учебных занятий, //на учебную практику, то не рассматриваем эти строки if (!(mdlData.colDistribution[i].GAK > 0) & !(mdlData.colDistribution[i].PostGrad > 0) & !(mdlData.colDistribution[i].DiplomaPaper > 0) & !(mdlData.colDistribution[i].PreDiplomaPractice > 0) & !(mdlData.colDistribution[i].ProducingPractice > 0) & !(mdlData.colDistribution[i].TutorialPractice > 0) & !(mdlData.colDistribution[i].Visiting > 0)) { if ((mdlData.colDistribution[i].Subject.Subject == "Посещение занятий") || (mdlData.colDistribution[i].Subject.Subject == "Аспирантура") || (mdlData.colDistribution[i].Subject.Subject == "Руководство магистрами")) { continue; } //счётчик текущей строки увеличиваем на единицу curRow += 1; //дополнение к названию дисциплины Addition = "("; //Если есть лекционные часы if (mdlData.colDistribution[i].Lecture > 0) { //пишем про наличие лекции Addition += "лк,"; } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть практические часы if (mdlData.colDistribution[i].Practice > 0) { //пишем про наличие практических Addition += "пр,"; } } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть лабораторные часы if (mdlData.colDistribution[i].LabWork > 0) { //пишем про наличие лабораторных Addition += "лб,"; } } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть курсовой проект if (mdlData.colDistribution[i].KursProject > 0) { //пишем про наличие курсового проекта Addition += "к/пр,"; } } //Убираем запятую if (Addition.EndsWith(",")) { Addition = Addition.Substring(0, Addition.Length - 1); } //Закрываем скобку Addition += ")"; //Если внутри скобок пустота, то if (Addition == "()") { //убираем скобки Addition = ""; } //В номер по порядку вписываем значение счётчика ObjTable.Cell(curRow, 1).Range.Text = (curRow - 1).ToString(); //Вписываем название дисциплины с дополнением ObjTable.Cell(curRow, 2).Range.Text = mdlData.colDistribution[i].Subject.Subject.ToString() + " " + Addition; //Название группы с номером курса if (!(mdlData.colDistribution[i].Speciality == null) & !(mdlData.colDistribution[i].KursNum == null)) { ObjTable.Cell(curRow, 3).Range.Text = mdlData.colDistribution[i].Speciality.ShortInstitute.ToString() + "-" + mdlData.colDistribution[i].KursNum.Kurs.ToString(); } else { if (!(mdlData.colDistribution[i].Speciality == null)) { ObjTable.Cell(curRow, 3).Range.Text = mdlData.colDistribution[i].Speciality.ShortInstitute.ToString(); } else { if (!(mdlData.colDistribution[i].KursNum == null)) { ObjTable.Cell(curRow, 3).Range.Text = "???-" + mdlData.colDistribution[i].KursNum.Kurs.ToString(); } } } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества основного преподавателя if (mdlData.colDistribution[i].Lecturer != null) { FIO = mdlData.colDistribution[i].Lecturer.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } ObjTable.Cell(curRow, 4).Range.Text = Surname + " " + Name + Patronymic; } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества заменяющего преподавателя if (!(mdlData.colDistribution[i].Lecturer2 == null)) { FIO = mdlData.colDistribution[i].Lecturer2.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } ObjTable.Cell(curRow, 5).Range.Text = Surname + " " + Name + Patronymic; } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества резервного преподавателя if (!(mdlData.colDistribution[i].Lecturer3 == null)) { FIO = mdlData.colDistribution[i].Lecturer3.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } ObjTable.Cell(curRow, 6).Range.Text = Surname + " " + Name + Patronymic; } } } } ObjTable.Columns[1].Width = 0.94f / 0.03527f; ObjTable.Columns[2].Width = 7.05f / 0.03527f; ObjTable.Columns[3].Width = 1.70f / 0.03527f; ObjTable.Columns[4].Width = 3.09f / 0.03527f; ObjTable.Columns[5].Width = 3.62f / 0.03527f; ObjTable.Columns[6].Width = 3.43f / 0.03527f; }
/// <summary> /// Действия, происходящие при смене элемента в списке преподавателей /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cmbLecturerList_SelectedIndexChanged(object sender, EventArgs e) { //Значение средней нагрузки на кафедру int AvgLoad = mdlData.AverageLoad; //Разгрузка дополнительная фактическая double UnLoadDopFact = 0; //Фактические часы нагрузки преподавателя int FactHours = 0; //Плановые часы нагрузки преподавателя double PlanHours = 0; //Реальная ставка при смене ставок в семестрах double RealRate = 0; //Возраст int Age = 0; //Стаж работы int Seniority = 0; IList <clsDistribution> coll; string[] FIO; //Заполняем строку должности if (!(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Duty == null)) { txtDuty.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Duty.Duty; } else { txtDuty.Text = ""; } //Заполняем строку дополнительной должности if (!(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Duty1 == null)) { txtDopDuty.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Duty1.Duty; } else { txtDopDuty.Text = ""; } //Заполняем строку кафедры if (!(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Depart == null)) { txtDepart.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Depart.Short; } else { txtDepart.Text = ""; } //Заполняем строку учёной степени if (!(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Degree == null)) { txtDegree.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Degree.Short; } else { txtDegree.Text = ""; } //Заполняем строку учёного звания if (!(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Status == null)) { txtStatus.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Status.Status; } else { txtStatus.Text = ""; } //Заполняем строку совместительства if (!(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Combination == null)) { txtCombination.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Combination.CombType; } else { txtCombination.Text = ""; } //Установка соответствующего индекса должности cmbDutyList.SelectedIndex = mdlData.colDuty.IndexOf(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Duty); //Установка соответствующего индекса дополнительной должности cmbDutyAddList.SelectedIndex = mdlData.colDuty.IndexOf(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Duty1); //Установка соответствующего индекса кафедры cmbDepartmentList.SelectedIndex = mdlData.colDepart.IndexOf(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Depart); //Установка соответствующего индекса совместительства cmbCombinationList.SelectedIndex = mdlData.colCombination.IndexOf(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Combination); //Установка соответствующего индекса степени cmbDegreeList.SelectedIndex = mdlData.colDegree.IndexOf(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Degree); //Установка соответствующего индекса звания cmbStatusList.SelectedIndex = mdlData.colStatus.IndexOf(mdlData.colLecturer[cmbLecturerList.SelectedIndex].Status); //Формируем читаемую дату рождения txtDOB.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].DOB.ToShortDateString(); //Считаем возраст преподавателя Age = DateTime.Now.Year - mdlData.colLecturer[cmbLecturerList.SelectedIndex].DOB.Year; //Если текущий месяц не достиг месяца рождения, то необходимо //убавить один год в возрасте if (DateTime.Now.Month < mdlData.colLecturer[cmbLecturerList.SelectedIndex].DOB.Month) { Age -= 1; } //в противном случае, else { //если месяц равен месяцу рождения if (DateTime.Now.Month == mdlData.colLecturer[cmbLecturerList.SelectedIndex].DOB.Month) { //Если текущий день не достиг дня рождения, то необходимо //убавить один год в возрасте if (DateTime.Now.Day < mdlData.colLecturer[cmbLecturerList.SelectedIndex].DOB.Day) { Age -= 1; } } } //Выводим возраст преподавателя txtAge.Text = Age.ToString(); //Формируем читаемую дату начала работы txtWorkSince.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Seniority.ToShortDateString(); //Считаем стаж преподавателя Seniority = DateTime.Now.Year - mdlData.colLecturer[cmbLecturerList.SelectedIndex].Seniority.Year; //Если текущий месяц не достиг месяца вступления на работу, то необходимо //убавить один год стажа if (DateTime.Now.Month < mdlData.colLecturer[cmbLecturerList.SelectedIndex].Seniority.Month) { Seniority -= 1; } //в противном случае, else { //если месяц равен месяцу начала работы if (DateTime.Now.Month == mdlData.colLecturer[cmbLecturerList.SelectedIndex].Seniority.Month) { //Если текущий день не достиг дня начала работы, то необходимо //убавить один год стажа if (DateTime.Now.Day < mdlData.colLecturer[cmbLecturerList.SelectedIndex].Seniority.Day) { Seniority -= 1; } } } //Выводим стаж преподавателя txtSeniority.Text = Seniority.ToString(); //Выводим максимальную нагрузку преподавателя txtMaxLoad.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].MaxLoad.ToString(); //Выводим разгрузку преподавателя txtUnLoad.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].UnLoad.ToString(); //Разбираем строку для вывода отдельно //Фамилии, имени и отчества преподавателя FIO = mdlData.colLecturer[cmbLecturerList.SelectedIndex].FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { txtSurname.Text = FIO[0]; txtName.Text = FIO[1]; txtPatronymic.Text = FIO[2]; } else if (FIO.GetLength(0) == 2) { txtSurname.Text = FIO[0]; txtName.Text = FIO[1]; txtPatronymic.Text = ""; } else if (FIO.GetLength(0) == 1) { txtSurname.Text = FIO[0]; txtName.Text = ""; txtPatronymic.Text = ""; } else { txtSurname.Text = ""; txtName.Text = ""; txtPatronymic.Text = ""; } if (mdlData.colLecturer[cmbLecturerList.SelectedIndex].ChangeRate) { RealRate = (mdlData.colLecturer[cmbLecturerList.SelectedIndex].Rate1 + mdlData.colLecturer[cmbLecturerList.SelectedIndex].Rate2) / 2; } else { RealRate = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Rate; } //Выводим реальную ставку преподавателя txtRealRate.Text = RealRate.ToString("0.00"); //Выводим ставку преподавателя txtRate.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Rate.ToString("0.00"); //Выводим нагрузку преподавателя //Здесь нужна реальная ставка if (optCombine.Checked || optMain.Checked) { txtLoad.Text = (RealRate * AvgLoad).ToString("0.00"); } else { txtLoad.Text = "0"; } //Считаем дополнительную нагрузку преподавателя с //учётом разгрузки других (здесь нужна ставка по отделу кадров) if (mdlData.colLecturer[cmbLecturerList.SelectedIndex].UnLoad == 0 & !chkNonOverLoad.Checked) { UnLoadDopFact = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Rate * mdlData.LoadInc; } else { UnLoadDopFact = 0; } //Пересчитываем нагрузку преподавателя с учётом дополнительной и реальной if (optCombine.Checked || optMain.Checked) { PlanHours = (RealRate * AvgLoad) + mdlData.colLecturer[cmbLecturerList.SelectedIndex].UnLoad + UnLoadDopFact; } else { PlanHours = 0; } //Пересчитанная нагрузка является плановой txtPlanLoad.Text = PlanHours.ToString("0.00"); if (optMain.Checked) { coll = mdlData.colDistribution; } else { if (optHoured.Checked) { coll = mdlData.colHouredDistribution; } else { if (optCombine.Checked) { coll = mdlData.colCombineDistribution; } else { coll = mdlData.colDistribution; } } } //Считаем фактическую нагрузку преподавателя for (int i = 0; i <= coll.Count - 1; i++) { //Если строка участвует в расчёте нагрузки if (!coll[i].flgExclude) { //Если стандартная строка нагрузки if (!coll[i].flgDistrib) { if (!(coll[i].Lecturer == null)) { if ((coll[i].Lecturer.Equals(mdlData.colLecturer[cmbLecturerList.SelectedIndex]))) { FactHours += mdlData.toSumDistributionComponents(coll[i]); } } } //Если равномерно распределяемая строка нагрузки else { //Проходим всех студентов студентов for (int j = 0; j <= mdlData.colStudents.Count - 1; j++) { //Если студент записан в плановую нагрузку if (mdlData.colStudents[j].flgPlan) { //Если рассматриваемый преподаватель - руководитель студента //И если студент на том же курсе, где и дисциплина //И специальность студента должна соответствовать специальности нагрузки if (mdlData.colStudents[j].Lect.Equals(mdlData.colLecturer[cmbLecturerList.SelectedIndex]) & mdlData.colStudents[j].KursNum.Equals(coll[i].KursNum) & mdlData.colStudents[j].Speciality.Equals(coll[i].Speciality)) { FactHours += coll[i].Weight; } } } //Может оказаться так, что часть равномерно распределяемой нагрузки //переведено в почасовую и это необходимо учесть при расчёте if (optCombine.Checked) { mdlData.toDetectUniformInHoured(ref FactHours, coll[i], mdlData.colLecturer[cmbLecturerList.SelectedIndex]); } } } } //Выводим фактическую нагрузку преподавателя txtFactLoad.Text = FactHours.ToString("0.00"); //Выводим перегрузку (+) или недогрузку (-) преподавателя txtOverLoad.Text = (FactHours - PlanHours).ToString("0.00"); //Отмечаем членство в совете chkSoviet.Checked = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Soviet; //Выводим пожелания для диспетчерской txtText.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Text; //Выводим пожелания для диспетчерской txtPreferences.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Preferences; //Выводим старую ставку txtOldRate.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].OldRate.ToString("0.00"); //Выводим ставку первого семестра txtRate1.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Rate1.ToString("0.00"); //Выводим ставку второго семестра txtRate2.Text = mdlData.colLecturer[cmbLecturerList.SelectedIndex].Rate2.ToString("0.00"); //Отмечаем необходимость смены ставок chkChangeRate.Checked = mdlData.colLecturer[cmbLecturerList.SelectedIndex].ChangeRate; }
//Форитрование графика замен на первый семестр private void btnSemestr1_Click(object sender, EventArgs e) { int curRow; string[] FIO; string Surname; string Name; string Patronymic; string Addition; //Очищаем сетку dgSwap.Rows.Clear(); dgSwap.Columns.Clear(); //Делаем невидимыми нуль-строку и нуль-столбец dgSwap.ColumnHeadersVisible = false; dgSwap.RowHeadersVisible = false; //Задаём количество столбцов //оно остаётся неизменным //в количестве 6 штук for (int i = 0; i <= 5; i++) { dgSwap.Columns.Add("", ""); } //Создаём строки //1. под шапку таблицы dgSwap.Rows.Add(); //Текущая строка первая curRow = 0; //Заполняем первую строку и одновременно формируем размерности dgSwap.Columns[0].Width = 30; dgSwap[0, curRow].Value = "№ п/п"; dgSwap.Columns[1].Width = 350; dgSwap[1, curRow].Value = "Дисциплина"; dgSwap.Columns[2].Width = 70; dgSwap[2, curRow].Value = "Группа"; dgSwap.Columns[3].Width = 150; dgSwap[3, curRow].Value = "Основной преподаватель"; dgSwap.Columns[4].Width = 150; dgSwap[4, curRow].Value = "Замещающий преподаватель"; dgSwap.Columns[5].Width = 150; dgSwap[5, curRow].Value = "Резервный преподаватель"; //Формируем строки по заменам преподавателей в первом семестре //прогоняем все строки фактической нагрузки for (int i = 0; i <= mdlData.colDistribution.Count - 1; i++) { //смотрим только второй семестр if (mdlData.colDistribution[i].Semestr.SemNum.Equals("1 семестр")) { //Если есть часы на ГАК, на аспирантуру, на диплом, //на преддипломную практику, на производственную практику, //на посещение учебных занятий, //на учебную практику, то не рассматриваем эти строки if (!(mdlData.colDistribution[i].GAK > 0) & !(mdlData.colDistribution[i].PostGrad > 0) & !(mdlData.colDistribution[i].DiplomaPaper > 0) & !(mdlData.colDistribution[i].PreDiplomaPractice > 0) & !(mdlData.colDistribution[i].ProducingPractice > 0) & !(mdlData.colDistribution[i].TutorialPractice > 0) & !(mdlData.colDistribution[i].Visiting > 0)) { if ((mdlData.colDistribution[i].Subject.Subject == "Посещение занятий") || (mdlData.colDistribution[i].Subject.Subject == "Аспирантура")) { continue; } //добавляем строку dgSwap.Rows.Add(); //счётчик текущей строки увеличиваем на единицу curRow += 1; //дополнение к названию дисциплины Addition = "("; //Если есть лекционные часы if (mdlData.colDistribution[i].Lecture > 0) { //пишем про наличие лекции Addition += "лк,"; } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть практические часы if (mdlData.colDistribution[i].Practice > 0) { //пишем про наличие практических Addition += "пр,"; } } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть лабораторные часы if (mdlData.colDistribution[i].LabWork > 0) { //пишем про наличие лабораторных Addition += "лб,"; } } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть курсовой проект if (mdlData.colDistribution[i].KursProject > 0) { //пишем про наличие курсового проекта Addition += "к/пр,"; } } //Убираем запятую if (Addition.EndsWith(",")) { Addition = Addition.Substring(0, Addition.Length - 1); } //Закрываем скобку Addition += ")"; //Если внутри скобок пустота, то if (Addition == "()") { //убираем скобки Addition = ""; } //В номер по порядку вписываем значение счётчика dgSwap[0, curRow].Value = curRow.ToString(); //Вписываем название дисциплины с дополнением dgSwap[1, curRow].Value = mdlData.colDistribution[i].Subject.Subject.ToString() + " " + Addition; //Название группы с номером курса if (!(mdlData.colDistribution[i].Speciality == null) & !(mdlData.colDistribution[i].KursNum == null)) { dgSwap[2, curRow].Value = mdlData.colDistribution[i].Speciality.ShortInstitute.ToString() + "-" + mdlData.colDistribution[i].KursNum.Kurs.ToString(); } else { if (!(mdlData.colDistribution[i].Speciality == null)) { dgSwap[2, curRow].Value = mdlData.colDistribution[i].Speciality.ShortInstitute.ToString(); } else { if (!(mdlData.colDistribution[i].KursNum == null)) { dgSwap[2, curRow].Value = "???-" + mdlData.colDistribution[i].KursNum.Kurs.ToString(); } } } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества основного преподавателя FIO = mdlData.colDistribution[i].Lecturer.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } dgSwap[3, curRow].Value = Surname + " " + Name + Patronymic; //Разбираем строку для вывода отдельно //Фамилии, имени и отчества заменяющего преподавателя if (!(mdlData.colDistribution[i].Lecturer2 == null)) { FIO = mdlData.colDistribution[i].Lecturer2.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } dgSwap[4, curRow].Value = Surname + " " + Name + Patronymic; } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества резервного преподавателя if (!(mdlData.colDistribution[i].Lecturer3 == null)) { FIO = mdlData.colDistribution[i].Lecturer3.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } dgSwap[5, curRow].Value = Surname + " " + Name + Patronymic; } } } } }