///<summary>МЕТОД Фабрика объекта Protokol</summary> /// <param name="pTip">Тип протокола</param> /// <param name="pCodApstac">Код посещения</param> /// <param name="pCodShablon">Код шаблона</param> /// <param name="pIndex">Индекс протокола</param> public static UserProtokol MET_FactoryProtokol(eTipDocum pTip, decimal pCodApstac, int pCodShablon, int pIndex) { // Коллекция Protokol List <UserProtokol> _Protokol = ((VirtualModul)MyGlo.Modul).PUB_Protokol; // Ищем в коллекции Protokol по типу, коду Apstac, номеру шаблона и индексу UserProtokol _Value = _Protokol.FirstOrDefault(p => p.PROP_TipProtokol.PROP_TipDocum == pTip && p.PROP_CodApstac == pCodApstac && p.PROP_NumShablon == pCodShablon && p.PROP_pIndex == pIndex); // Если не нашли, то пытаемся Protokol создать if (_Value == null) { _Value = new UserProtokol(); // Загружаем данные из SQL try { var _TipProtokol = new MyTipProtokol(pTip); SqlDataReader _SqlDataReader = MySql.MET_QuerySqlDataReader(MyQuery.MET_Protokol_Select_5(pCodApstac, pCodShablon, pIndex, _TipProtokol.PROP_Prefix)); _SqlDataReader.Read(); _Value.MET_LoadDataReader(_SqlDataReader); _Value.PROP_TipProtokol = _TipProtokol; _SqlDataReader.Close(); _Protokol.Add(_Value); } catch (Exception ex) { MyGlo.PUB_Logger.Fatal(ex, "Ошибка Загрузки данных Protokol из SQL"); MyGlo.Event_Error(ex); _Value = null; } } return(_Value); }