public IEnumerable <BomShell> GetBomShell(IEdmFile7 file, string bomConfiguration, IEdmVault7 vault) { try { var bomView = file.GetComputedBOM(22, file.CurrentVersion, bomConfiguration, (int)EdmBomFlag.EdmBf_ShowSelected); if (bomView == null) { throw new Exception("Computed BOM it can not be null"); } object[] bomRows; EdmBomColumn[] bomColumns; bomView.GetRows(out bomRows); bomView.GetColumns(out bomColumns); DataTable bomTable = new DataTable(); foreach (EdmBomColumn bomColumn in bomColumns) { bomTable.Columns.Add(new DataColumn { ColumnName = bomColumn.mbsCaption }); } for (var i = 0; i < bomRows.Length; i++) { var cell = (IEdmBomCell)bomRows.GetValue(i); bomTable.Rows.Add(); for (var j = 0; j < bomColumns.Length; j++) { EdmBomColumn column = (EdmBomColumn)bomColumns.GetValue(j); object value; object computedValue; string config; bool readOnly; cell.GetVar(column.mlVariableID, column.meType, out value, out computedValue, out config, out readOnly); if (value != null) { bomTable.Rows[i][j] = value; } else { bomTable.Rows[i][j] = null; } } } return(BomTableToBomList(bomTable)); } catch (COMException ex) { MessageBox.Show("Failed get bom shell " + (EdmResultErrorCodes_e)ex.ErrorCode + ". Укажите вид PDM или тип спецификации"); throw ex; } }
public IEnumerable <BomShell> GetBomShell(string filePath, string bomConfiguration) { try { IEdmFolder5 oFolder; IEdmFile7 EdmFile7 = (IEdmFile7)PdmExemplar.GetFileFromPath(filePath, out oFolder); var bomView = EdmFile7.GetComputedBOM(BoomId, -1, bomConfiguration, (int)EdmBomFlag.EdmBf_ShowSelected); if (bomView == null) { throw new Exception("Computed BOM it can not be null"); } object[] bomRows; EdmBomColumn[] bomColumns; bomView.GetRows(out bomRows); bomView.GetColumns(out bomColumns); DataTable bomTable = new DataTable(); foreach (EdmBomColumn bomColumn in bomColumns) { bomTable.Columns.Add(new DataColumn { ColumnName = bomColumn.mbsCaption }); } for (var i = 0; i < bomRows.Length; i++) { var cell = (IEdmBomCell)bomRows.GetValue(i); bomTable.Rows.Add(); for (var j = 0; j < bomColumns.Length; j++) { EdmBomColumn column = (EdmBomColumn)bomColumns.GetValue(j); object value; object computedValue; string config; bool readOnly; cell.GetVar(column.mlVariableID, column.meType, out value, out computedValue, out config, out readOnly); if (value != null) { bomTable.Rows[i][j] = value; } else { bomTable.Rows[i][j] = null; } } } return(BomTableToBomList(bomTable)); } catch (COMException ex) { MessageObserver.Instance.SetMessage("Failed get bom shell " + (EdmResultErrorCodes_e)ex.ErrorCode + ". Укажите вид PDM или тип спецификации"); throw ex; } }