//читает параметры оборудования: связанные номенклатуры и время их обработки
        //каждая сопоставленная номенклатура будет добавлена в соответствующий элемент типа tMachineTool массива arrTools
        private void ReadTimes(IXLWorksheet _inSheet)
        {
            //первая строка - легенда, данные со второй строки
            int iRow = 2;

            //читаем, пока не найдется пустая ячейка в столбце ID
            while (_inSheet.Cell(String.Format("A{0}", iRow)).Value.ToString() != "")
            {
                int iToolID = Int32.Parse(_inSheet.Cell(String.Format("A{0}", iRow)).Value.ToString());
                int iNomID  = Int32.Parse(_inSheet.Cell(String.Format("B{0}", iRow)).Value.ToString());
                int iOpTime = Int32.Parse(_inSheet.Cell(String.Format("C{0}", iRow)).Value.ToString());

                //нашли индексы оборудования и номенклатуры в массивах
                int iToolIndex = FindToolByID(iToolID);
                int iNomIndex  = FindNomenclatureByID(iNomID);
                if ((iToolIndex != -1) && (iNomIndex != -1))
                {
                    //если оборудование и номенклатура известны, то разрешаем этому оборудованию работать с этой номенклатурой за время iOpTime
                    tTime Time1 = new tTime();
                    Time1._tnNomenclature = (tNomenclature)arrNomenclatures[iNomIndex];
                    Time1._iTime          = iOpTime;
                    ((tMachineTool)arrTools[iToolIndex]).AddTime(Time1);
                }
                else
                {
                    //++iRow;
                    //continue;
                }
                ++iRow;
            }
        }
 //добавляет номенклатуру и время ее обработки в описание оборудования
 //повторное вхождение номенклатуры - отбрасывается
 public int AddTime(tTime _t)
 {
     if (!this.isSuitableForNomenclature(_t._tnNomenclature._id))
     {
         arrTime.Add(_t);
     }
     return(0);
 }