public static string RequestKmhCard(Guid prod_id, Guid order_id) { using (ProductProvider provider = new ProductProvider()) { DateTime CurDateTime = DateTime.Now; Product prod = provider.GetProduct(prod_id); transfer tran = new transfer() { prod_id = prod._dictNomenID.Value }; #region filling kmh card if (Guid.Empty.Equals(order_id)) { var actual_kmh = from kmh in provider.Specification_1s where kmh.OrderArticleID == null // стандарные (не приказные) && kmh.StartDT <= CurDateTime // на текущую дату && kmh.FinishDT > CurDateTime && kmh._Product_ID == prod._dictNomenID select kmh; if (actual_kmh.Count() > 0) { FillKmh(actual_kmh.First(), tran, CurDateTime); tran.prod_pn2 = actual_kmh.First().Product.superpole; } else { // создание новой КМХ для продукта tran.prod_id = prod._dictNomenID.Value; tran.prod_pn2 = prod._dictNomen.superpole; } } else { Product order_unit = provider.GetActualOrderProduct(order_id); Specification_1 actual_kmh = null; // пытаемся получить КМХ для данного приказа try { actual_kmh = (from kmh in provider.Specification_1s where kmh.OrderArticleID == order_id // стандарные (не приказные) && kmh.StartDT <= CurDateTime // на текущую дату && kmh.FinishDT > CurDateTime && kmh._Product_ID == prod._dictNomenID select kmh).Single(); } catch { // пытаемся получить КМХ на момент создания сборки try { var actual_date = (from dates in provider.TechnDates where dates.OrderArticleID == order_id && dates._dictNomenID == prod._dictNomenID select dates.gen_date).SingleOrDefault(); if (actual_date == null) actual_date = order_unit.CreatedDate; actual_kmh = (from kmh in provider.Specification_1s where kmh.OrderArticleID == null // стандарные (не приказные) && kmh.StartDT <= actual_date && kmh.FinishDT > actual_date && kmh._Product_ID == prod._dictNomenID select kmh).Single(); } catch { } } if (actual_kmh == null) { // создание новой КМХ для продукта tran.prod_id = prod._dictNomenID.Value; tran.prod_pn2 = prod._dictNomen.superpole; } else { // заполняем карточку FillKmh(actual_kmh, tran, CurDateTime); tran.prod_pn2 = actual_kmh.Product.superpole; } } #endregion Guid userID = (Guid)HttpContext.Current.Session["userID"]; List<Guid> userRoles = (from role in provider.UserRoles where role.UserID == userID select role.RoleID).ToList(); var permisions = (from perm in provider.RoleViewPermissions where perm.PermissionEntityID == new Guid("11F1BC17-20FB-4E93-8389-A55BFA4CA251") // EditorKMH && userRoles.Contains(perm.RoleID) && perm.Read select perm.EntityID).Distinct(); tran.enabled_fields.AddRange(permisions); JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Serialize(tran); } }