} //Вид объекта учета public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference94( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_ParentIDRRef ,_Folder ,_Code ,_Description ,_Fld1415 ,_Fld1416RRef ,_Fld1417RRef ,_Fld1418 ,_Fld1419RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Родитель ,@ЭтоГруппа ,@Код ,@Наименование ,@НаименованиеПолное ,@ВидНМА ,@АмортизационнаяГруппа ,@ПрочиеСведения ,@ВидОбъектаУчета)" ; } else { Команда.CommandText = @" Update _Reference94 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_ParentIDRRef = @Родитель ,_Folder = @ЭтоГруппа ,_Code = @Код ,_Description = @Наименование ,_Fld1415 = @НаименованиеПолное ,_Fld1416RRef = @ВидНМА ,_Fld1417RRef = @АмортизационнаяГруппа ,_Fld1418 = @ПрочиеСведения ,_Fld1419RRef = @ВидОбъектаУчета 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("ПрочиеСведения", ПрочиеСведения); Команда.Parameters.AddWithValue("ВидОбъектаУчета", ВидОбъектаУчета.Ключ()); Команда.ExecuteNonQuery(); } } }
} //Назначение помещения public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference111( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_ParentIDRRef ,_Folder ,_Code ,_Description ,_Fld1584 ,_Fld18594 ,_Fld1581RRef ,_Fld1579RRef ,_Fld1578 ,_Fld1577 ,_Fld1575 ,_Fld1580RRef ,_Fld18595 ,_Fld1583 ,_Fld1574 ,_Fld1576 ,_Fld26568 ,_Fld26569 ,_Fld26570 ,_Fld26571RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Родитель ,@ЭтоГруппа ,@Код ,@Наименование ,@Автотранспорт ,@АдресМестонахождения ,@АмортизационнаяГруппа ,@ГруппаОС ,@ДатаВыпуска ,@ЗаводскойНомер ,@Изготовитель ,@КодПоОКОФ ,@КодРегиона ,@Комментарий ,@НаименованиеПолное ,@НомерПаспорта ,@Помещение ,@КадастровыйНомер ,@УсловныйНомер ,@НазначениеПомещения)" ; } else { Команда.CommandText = @" Update _Reference111 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_ParentIDRRef = @Родитель ,_Folder = @ЭтоГруппа ,_Code = @Код ,_Description = @Наименование ,_Fld1584 = @Автотранспорт ,_Fld18594 = @АдресМестонахождения ,_Fld1581RRef = @АмортизационнаяГруппа ,_Fld1579RRef = @ГруппаОС ,_Fld1578 = @ДатаВыпуска ,_Fld1577 = @ЗаводскойНомер ,_Fld1575 = @Изготовитель ,_Fld1580RRef = @КодПоОКОФ ,_Fld18595 = @КодРегиона ,_Fld1583 = @Комментарий ,_Fld1574 = @НаименованиеПолное ,_Fld1576 = @НомерПаспорта ,_Fld26568 = @Помещение ,_Fld26569 = @КадастровыйНомер ,_Fld26570 = @УсловныйНомер ,_Fld26571RRef = @НазначениеПомещения 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("ГруппаОС", ГруппаОС.Ключ()); Команда.Parameters.AddWithValue("ДатаВыпуска", ДатаВыпуска); Команда.Parameters.AddWithValue("ЗаводскойНомер", ЗаводскойНомер); Команда.Parameters.AddWithValue("Изготовитель", Изготовитель); Команда.Parameters.AddWithValue("КодПоОКОФ", КодПоОКОФ.Ссылка); Команда.Parameters.AddWithValue("КодРегиона", КодРегиона); Команда.Parameters.AddWithValue("Комментарий", Комментарий); Команда.Parameters.AddWithValue("НаименованиеПолное", НаименованиеПолное); Команда.Parameters.AddWithValue("НомерПаспорта", НомерПаспорта); Команда.Parameters.AddWithValue("Помещение", Помещение); Команда.Parameters.AddWithValue("КадастровыйНомер", КадастровыйНомер); Команда.Parameters.AddWithValue("УсловныйНомер", УсловныйНомер); Команда.Parameters.AddWithValue("НазначениеПомещения", НазначениеПомещения.Ключ()); Команда.ExecuteNonQuery(); } } }