} //Перенесен из 7.7 public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document251( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld4174RRef ,_Fld4175 ,_Fld4176RRef ,_Fld4177 ,_Fld4178 ,_Fld4179 ,_Fld4180RRef ,_Fld4181 ,_Fld4182 ,_Fld4183 ,_Fld4184 ,_Fld4185RRef ,_Fld4186 ,_Fld4193RRef ,_Fld4187RRef ,_Fld4188 ,_Fld4189RRef ,_Fld4190RRef ,_Fld4191RRef ,_Fld4192RRef ,_Fld26723) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@ФизЛицо ,@СуммаЗайма ,@ВалютаДокумента ,@КурсДокумента ,@КратностьДокумента ,@ПроцентЗаПользованиеЗаймом ,@ПорядокПогашенияЗайма ,@СрокПогашения ,@НачалоПогашения ,@ОтражатьВУправленческомУчете ,@ОтражатьВБухгалтерскомУчете ,@Организация ,@НачислятьМатериальнуюВыгоду ,@СтавкаНалогообложенияРезидента ,@СчетУчетаПроцентовПоЗайму ,@Комментарий ,@Ответственный ,@Субконто1 ,@Субконто2 ,@Субконто3 ,@ДанныеПрошлойВерсии)" ; } else { Команда.CommandText = @" Update _Document251 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld4174RRef = @ФизЛицо ,_Fld4175 = @СуммаЗайма ,_Fld4176RRef = @ВалютаДокумента ,_Fld4177 = @КурсДокумента ,_Fld4178 = @КратностьДокумента ,_Fld4179 = @ПроцентЗаПользованиеЗаймом ,_Fld4180RRef = @ПорядокПогашенияЗайма ,_Fld4181 = @СрокПогашения ,_Fld4182 = @НачалоПогашения ,_Fld4183 = @ОтражатьВУправленческомУчете ,_Fld4184 = @ОтражатьВБухгалтерскомУчете ,_Fld4185RRef = @Организация ,_Fld4186 = @НачислятьМатериальнуюВыгоду ,_Fld4193RRef = @СтавкаНалогообложенияРезидента ,_Fld4187RRef = @СчетУчетаПроцентовПоЗайму ,_Fld4188 = @Комментарий ,_Fld4189RRef = @Ответственный ,_Fld4190RRef = @Субконто1 ,_Fld4191RRef = @Субконто2 ,_Fld4192RRef = @Субконто3 ,_Fld26723 = @ДанныеПрошлойВерсии Where _IDRRef = @Ссылка" ; } Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray()); /*Команда.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("СчетУчетаПроцентовПоЗайму", Guid.Empty); Команда.Parameters.AddWithValue("Комментарий", Комментарий); Команда.Parameters.AddWithValue("Субконто1", Guid.Empty); Команда.Parameters.AddWithValue("Субконто2", Guid.Empty); Команда.Parameters.AddWithValue("Субконто3", Guid.Empty); Команда.Parameters.AddWithValue("ДанныеПрошлойВерсии", ДанныеПрошлойВерсии); Команда.ExecuteNonQuery(); } } }
} //Учитывать по периоду действия public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference54( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Code ,_Description ,_Fld1131RRef ,_Fld1132 ,_Fld26532 ,_Fld26533 ,_Fld26534) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Код ,@Наименование ,@СтавкаНалогообложенияРезидента ,@КодДляОтчетности ,@НеОблагаетсяУНалоговогоАгента ,@НеОтражаетсяВОтчетности2010 ,@УчитыватьПоПериодуДействия)" ; } else { Команда.CommandText = @" Update _Reference54 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_Code = @Код ,_Description = @Наименование ,_Fld1131RRef = @СтавкаНалогообложенияРезидента ,_Fld1132 = @КодДляОтчетности ,_Fld26532 = @НеОблагаетсяУНалоговогоАгента ,_Fld26533 = @НеОтражаетсяВОтчетности2010 ,_Fld26534 = @УчитыватьПоПериодуДействия Where _IDRRef = @Ссылка" ; } Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray()); /*Команда.Parameters.AddWithValue("Версия", Версия);*/ Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления); Команда.Parameters.AddWithValue("Предопределенный", Предопределенный); Команда.Parameters.AddWithValue("Код", Код); Команда.Parameters.AddWithValue("Наименование", Наименование); Команда.Parameters.AddWithValue("СтавкаНалогообложенияРезидента", СтавкаНалогообложенияРезидента.Ключ()); Команда.Parameters.AddWithValue("КодДляОтчетности", КодДляОтчетности); Команда.Parameters.AddWithValue("НеОблагаетсяУНалоговогоАгента", НеОблагаетсяУНалоговогоАгента); Команда.Parameters.AddWithValue("НеОтражаетсяВОтчетности2010", НеОтражаетсяВОтчетности2010); Команда.Parameters.AddWithValue("УчитыватьПоПериодуДействия", УчитыватьПоПериодуДействия); Команда.ExecuteNonQuery(); } } }