private void Fill_ImbaseTable(long newSelectedID, DataTable dt) { using (SessionKeeper keeper = new SessionKeeper()) { DataSet ds; DataTable tb2; DataRow row1; try { ds = TableLoadHelper.GetTables(keeper.Session, newSelectedID, true); tb2 = ds.Tables[Intermech.Imbase.Consts.IMS_DATA]; } catch (Exception ex) { MessageBox.Show("Таблицы с tableID = " + newSelectedID.ToString() + " не найдено"); throw ex; } Dictionary <string, Guid> columnNamesAndGuids = new Dictionary <string, Guid>(); byte columnsCount = Convert.ToByte(dt.Columns.Count); // количество колонок в табллице List <string> columnNamesinExcel = new List <string>(columnsCount); for (byte i = 0; i < columnsCount; i++) { columnNamesinExcel.Add(dt.Columns[i].ColumnName); // создали список наименований колонок в таблице columnNamesAndGuids.Add(dt.Columns[i].ColumnName, MetaDataHelper.GetAttributeByTypeNameGuid(dt.Columns[i].ColumnName)); // имя аттрибута и его Guid } string tempGuid; string tempName; foreach (var item in dt.AsEnumerable()) // по всем рядкам { row1 = tb2.NewRow(); for (byte i = 0; i < columnsCount; i++) // по каждой колонке { tempName = columnNamesinExcel[i]; tempGuid = "" + columnNamesAndGuids[tempName] + ""; row1.SetField(tempGuid, item[tempName].ToString()); } tb2.Rows.Add(row1); tb2.AcceptChanges(); } TableLoadHelper.StoreData(keeper.Session, newSelectedID, ds, keeper.Session.GetCustomService(typeof(Intermech.Interfaces.Imbase.ITablesIndexer)) as Intermech.Interfaces.Imbase.ITablesIndexer); } }