public static Guid Ссылка(this ХарактерЗатрат Значение) { switch (Значение) { case ХарактерЗатрат.БракВПроизводстве: return(БракВПроизводстве); case ХарактерЗатрат.ВложенияВоВнеоборотныеАктивы: return(ВложенияВоВнеоборотныеАктивы); case ХарактерЗатрат.ИздержкиОбращения: return(ИздержкиОбращения); case ХарактерЗатрат.КоммерческиеРасходы: return(КоммерческиеРасходы); case ХарактерЗатрат.ОбщепроизводственныеРасходы: return(ОбщепроизводственныеРасходы); case ХарактерЗатрат.ОбщехозяйственныеРасходы: return(ОбщехозяйственныеРасходы); case ХарактерЗатрат.ПроизводственныеРасходы: return(ПроизводственныеРасходы); case ХарактерЗатрат.Прочие: return(Прочие); case ХарактерЗатрат.НеУчитываемыеВУправленческомУчете: return(НеУчитываемыеВУправленческомУчете); case ХарактерЗатрат.ЗаготовлениеИПриобретениеМЦ: return(ЗаготовлениеИПриобретениеМЦ); } return(Guid.Empty); }
public static ХарактерЗатрат Получить(this ХарактерЗатрат Значение, Guid Ссылка) { if (Ссылка == БракВПроизводстве) { return(ХарактерЗатрат.БракВПроизводстве); } else if (Ссылка == ВложенияВоВнеоборотныеАктивы) { return(ХарактерЗатрат.ВложенияВоВнеоборотныеАктивы); } else if (Ссылка == ИздержкиОбращения) { return(ХарактерЗатрат.ИздержкиОбращения); } else if (Ссылка == КоммерческиеРасходы) { return(ХарактерЗатрат.КоммерческиеРасходы); } else if (Ссылка == ОбщепроизводственныеРасходы) { return(ХарактерЗатрат.ОбщепроизводственныеРасходы); } else if (Ссылка == ОбщехозяйственныеРасходы) { return(ХарактерЗатрат.ОбщехозяйственныеРасходы); } else if (Ссылка == ПроизводственныеРасходы) { return(ХарактерЗатрат.ПроизводственныеРасходы); } else if (Ссылка == Прочие) { return(ХарактерЗатрат.Прочие); } else if (Ссылка == НеУчитываемыеВУправленческомУчете) { return(ХарактерЗатрат.НеУчитываемыеВУправленческомУчете); } else if (Ссылка == ЗаготовлениеИПриобретениеМЦ) { return(ХарактерЗатрат.ЗаготовлениеИПриобретениеМЦ); } return(ХарактерЗатрат.ПустаяСсылка); }
public static readonly Guid ЗаготовлениеИПриобретениеМЦ = new Guid("fb8a619b-08d8-a782-49c5-e564634a0c3a"); //Заготовление и приобретение материальных ценностей public static ХарактерЗатрат Получить(this ХарактерЗатрат Значение, byte[] Ссылка) { return(Получить(Значение, new Guid(Ссылка))); }
public static byte[] Ключ(this ХарактерЗатрат Значение) { return(Ссылка(Значение).ToByteArray()); }
} //Вид расходов (НУ) public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference162( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_ParentIDRRef ,_Folder ,_Code ,_Description ,_Fld1963RRef ,_Fld1964RRef ,_Fld1965RRef ,_Fld1966RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Родитель ,@ЭтоГруппа ,@Код ,@Наименование ,@ВидЗатрат ,@СтатусМатериальныхЗатрат ,@ХарактерЗатрат ,@ВидРасходовНУ)" ; } else { Команда.CommandText = @" Update _Reference162 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_ParentIDRRef = @Родитель ,_Folder = @ЭтоГруппа ,_Code = @Код ,_Description = @Наименование ,_Fld1963RRef = @ВидЗатрат ,_Fld1964RRef = @СтатусМатериальныхЗатрат ,_Fld1965RRef = @ХарактерЗатрат ,_Fld1966RRef = @ВидРасходовНУ Where _IDRRef = @Ссылка" ; } Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray()); /*Команда.Parameters.AddWithValue("Версия", Версия);*/ Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления); Команда.Parameters.AddWithValue("Предопределенный", Предопределенный); Команда.Parameters.AddWithValue("Родитель", одитель); Команда.Parameters.AddWithValue("ЭтоГруппа", ЭтоГруппа?new byte[] { 0 }:new byte[] { 1 }); Команда.Parameters.AddWithValue("Код", Код); Команда.Parameters.AddWithValue("Наименование", Наименование); Команда.Parameters.AddWithValue("ВидЗатрат", ВидЗатрат.Ключ()); Команда.Parameters.AddWithValue("СтатусМатериальныхЗатрат", СтатусМатериальныхЗатрат.Ключ()); Команда.Parameters.AddWithValue("ХарактерЗатрат", ХарактерЗатрат.Ключ()); Команда.Parameters.AddWithValue("ВидРасходовНУ", ВидРасходовНУ.Ключ()); Команда.ExecuteNonQuery(); } } }