IZennoTable tb = project.Tables["tb"]; // Должна быть табличка с именем tb в шаблоне
tb.AddRow(new[]{"1","2","3","4"}); // Добавили демо данные
tb.AddRow(new[]{"10","20","30","40"}); // Добавили демо данные
// Переменные для результата
string a = string.Empty;
string b = string.Empty;
string c = string.Empty;
string d = string.Empty;
List<string[]> listData = new List<string[]>(); // Результат - мы же не знаем есть ли в строке 4 ячейки (вдруг будет меньше)
lock(SyncObjects.TableSyncer) { // Блокируем для многопотока
if(tb.RowCount > 0) { // Если табличка содержит строчки
List<string[]> list = new List<string[]>(); // Временный список
for(int i =0;i<tb.RowCount; i++) list.Add(tb.GetRow(i).ToArray()); // Считываем во временный список
if(list.Count > 0) { // Если что-то было считано с таблички
tb.Clear(); // Очистим табличку
string[] temp_data = list[0].ToArray(); // Получаем первую строчку
listData.Add(temp_data); // Сохраняем результат во временный список
list.RemoveAt(0); // Удаляем первую строчку
list.Add(temp_data); // Добавляем строчку в конец
for(int i=0; i<list.Count; i++) tb.AddRow(list[i]); // Возвращаем данные в табличку
}
}
else {
project.SendInfoToLog("В табличке нет данных - разблокировать",true);
}
} // Разблокировали табличку
// Дальше что-то делаем с полученными данными
if(listData.Count > 0) { // Что-то нашли
if(listData[0].Length >= 4) {
a = listData[0][0];
b = listData[0][1];
c = listData[0][2];
d = listData[0][3];
listData.Clear();
}
else {
throw new Exception("Строка таблички имеет меньше 4 ячеек");
}
}
else { // Ничего не нашли
throw new Exception("В табличке нет данных");
}
project.SendInfoToLog(string.Format(@"{0} {1} {2} {3}",a,b,c,d));
// Дальше уже сохраняем себе куда-то a-b-c-d, например во внутренние переменные