static void AddDeviceTables(WordprocessingDocument Protocol, UserSession Session, TablesCreator Creator, string DeviceType, CardData DeviceCard, DateTime StartDateOfService) { // Определение точек вставки таблиц для протоколов поверки разных типов приборов IEnumerable <VerificationProtocolTableLook> TablesCollection = Creator.VerifyProtokolDeviceTablesCollection.Where(r => r.DeviceTypes.Any(s => s == DeviceType)); if (TablesCollection.Count() > 0) { OpenXmlElement IncertElement = Protocol.GetTable("Заключение:").ElementsBefore().Last(); switch (DeviceType) { case "ПКВ/М7": IncertElement = Protocol.GetTable("Определение основной абсолютной погрешности измерений интервалов времени").ElementsBefore().Last(); break; case "ПКВ/У3.0": IncertElement = Protocol.GetTable("Определение основной абсолютной погрешности измерений интервалов времени").ElementsBefore().Last(); break; case "ПКВ/У3.1": IncertElement = Protocol.GetTable("Определение основной абсолютной погрешности измерений интервалов времени").ElementsBefore().Last(); break; case "ПКВ/У3.0-01": IncertElement = Protocol.GetTable("Определение основной абсолютной погрешности измерений интервалов времени").ElementsBefore().Last(); break; /*case "МИКО-2.2": * IncertElement = Protocol.GetTable("Определение метрологических характеристик").ElementsAfter().First(); * break; * case "МИКО-2.3": * IncertElement = Protocol.GetTable("Определение метрологических характеристик").ElementsAfter().First(); * break;*/ case "МИКО-7": IncertElement = Protocol.GetTable("7. Проверка ограничения выходной мощности").ElementsBefore().Last(); break; /*case "МИКО-21": * IncertElement = Protocol.GetTable("Заключение:").ElementsAfter().First(); * break;*/ } //OpenXmlElement IncertElement = Protocol.GetTable("Определение основной абсолютной погрешности измерений силы постоянного электрического тока каналами ВКЛ и ОТКЛ силового коммутатора").ElementsAfter().First(); Dictionary <String, Table> TablesList = new Dictionary <String, Table>(); foreach (VerificationProtocolTableLook CurrentTable in TablesCollection) { //WordprocessingDocument ParentDocument; string ParentDocumentPath = ""; switch (CurrentTable.ParentDocumentCategory) { case VerificationProtocolTableLook.DocumentCategory.AcceptanceTestingProtocol: ParentDocumentPath = CalibrationLib.GetDocumentPath(Session, DeviceCard, CalibrationLib.AcceptanceTestingProtocolCategoryID); break; case VerificationProtocolTableLook.DocumentCategory.CalibrationProtocol: ParentDocumentPath = CalibrationLib.GetDocumentPath(Session, DeviceCard, CalibrationLib.CalibrationProtocolCategoryID); break; case VerificationProtocolTableLook.DocumentCategory.MeasuringData: ParentDocumentPath = CalibrationLib.GetDocumentPath(Session, DeviceCard, CalibrationLib.MeasuringDataCategoryID); break; default: ParentDocumentPath = ""; break; } if (ParentDocumentPath.EndsWith(".docx")) { WordprocessingDocument ParentDocument = WordprocessingDocument.Open(ParentDocumentPath, true); if (TablesList.Any(r => r.Key == CurrentTable.TableName)) { CurrentTable.AdditionDeviceTable(ParentDocument, TablesList.First(r => r.Key == CurrentTable.TableName).Value); } else { TablesList.Add(CurrentTable.TableName, CurrentTable.GetDeviceTable(ParentDocument)); } if (ParentDocument != null) { ParentDocument.Close(); } } if (ParentDocumentPath.EndsWith(".json")) { string fileContent = File.ReadAllText(ParentDocumentPath); RootObject MeashureData = JsonConvert.DeserializeObject <RootObject>(fileContent); TablesList.Add(CurrentTable.TableName, CurrentTable.GetDeviceTable(MeashureData)); } File.Delete(ParentDocumentPath); } foreach (KeyValuePair <String, Table> T in TablesList) { AddNewTable(Protocol, T.Value, IncertElement); } } }