public void Записать()
{
//Установка блокировки элемента на горизантально масштабированный кластер.
//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
//Выделение сервиса для блокировки элемента и генерации кода
//Выполнение операций контроля без обращений к sql-серверу.
//Контроль конфликта блокировок.
//Контроль загрузки булкинсертом гетерогенной коллекции.
//Контроль уникальности кода для Документов.
//Контроль уникальности номера для документов, в границах префикса.
//Контроль владельца, он не может быть группой.
//Контроль владельца он должен быть задан.
//Контроль родителя он должен быть группой.
//Контроль количества уровней, должен соотвествовать метаданным.
//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
//Контроль уникальности ссылки
//Контроль зацикливания
//Опционально контроль битых ссылок.
//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
using (var Подключение = new SqlConnection(СтрокаСоединения))
{
Подключение.Open();
using (var Команда = Подключение.CreateCommand())
{
if(_ЭтоНовый)
{
Команда.CommandText = @"
Insert Into _Document322(
_IDRRef
/*,_Version*/
,_Marked
,_IsMetadata
,_Number
,_Fld6309
,_Fld6310RRef
,_Fld6311
,_Fld6312RRef
,_Fld21589RRef
,_Fld6313RRef
,_Fld26847
,_Fld6315
,_Fld6316
,_Fld21590
,_Fld6317RRef
,_Fld6318
,_Fld6319
,_Fld21591
,_Fld6320RRef
,_Fld6324
,_Fld6321
,_Fld6326
,_Fld6322RRef
,_Fld6323
,_Fld18526
,_Fld6314RRef
,_Fld6325RRef
,_Fld6327
,_Fld6328
,_Fld26848
,_Fld26849
,_Fld26850
,_Fld26851
,_Fld26852
,_Fld26853
,_Fld26854
,_Fld26855
,_Fld26856RRef
,_Fld26857
,_Fld26858
,_Fld26859
,_Fld26860
,_Fld26861
,_Fld26862RRef
,_Fld26863
,_Fld26864
,_Fld26865
,_Fld26866
,_Fld26867RRef
,_Fld26868RRef
,_Fld26869
,_Fld26870
,_Fld26871
,_Fld26872
,_Fld26873)
Values(
@Ссылка
/*,@Версия*/
,@ПометкаУдаления
,@Номер
,@ПериодРегистрации
,@Организация
,@Комментарий
,@Ответственный
,@Сотрудник
,@Физлицо
,@ДатаНачалаСобытия
,@ДатаНачалаОсновногоОтпуска
,@ДатаОкончанияОсновногоОтпуска
,@КоличествоДнейОсновногоОтпуска
,@ПорядокРасчетаОсновногоОтпуска
,@ДатаНачалаДополнительногоОтпуска
,@ДатаОкончанияДополнительногоОтпуска
,@КоличествоДнейДополнительногоОтпуска
,@ВидРасчетаДополнительногоОтпуска
,@УдалитьРезультатКомпенсацииОтпуска
,@ПроцентОплатыДополнительногоОтпуска
,@УдалитьСторноРезультатКомпенсацииОтпуска
,@ПорядокРасчетаКомпенсацииОтпуска
,@ДнейЧасовКомпенсацииОтпуска
,@ИспользоватьСреднеЧасовойЗаработок
,@УдалитьПриказ
,@ПерерассчитываемыйДокумент
,@РабочийГодС
,@РабочийГодПо
,@ОсновнойОтпуск
,@ДополнительныйОтпуск
,@КомпенсацияОтпуска
,@ПериодРасчетаСреднегоЗаработкаНачало
,@ПериодРасчетаСреднегоЗаработкаОкончание
,@Фамилия
,@Имя
,@Отчество
,@ВидДокумента
,@СерияДокумента
,@НомерДокумента
,@ДатаВыдачиДокумента
,@ДатаДействияДокумента
,@ПеречислятьПособиеПочтовымПереводом
,@Банк
,@НомерЛицевогоСчета
,@АдресПочтовый
,@НаименованиеБанка
,@БИКБанка
,@ДолжностьУполномоченного
,@Уполномоченный
,@КоррСчетБанка
,@КемВыданДокумент
,@АдресРегистрации
,@Телефон
,@ТелефонСоставителя)";
}
else
{
Команда.CommandText = @"
Update _Document322
Set
/*_IDRRef = @Ссылка*/
/*,_Version = @Версия*/
_Marked = @ПометкаУдаления
,_Number = @Номер
,_Fld6309 = @ПериодРегистрации
,_Fld6310RRef = @Организация
,_Fld6311 = @Комментарий
,_Fld6312RRef = @Ответственный
,_Fld21589RRef = @Сотрудник
,_Fld6313RRef = @Физлицо
,_Fld26847 = @ДатаНачалаСобытия
,_Fld6315 = @ДатаНачалаОсновногоОтпуска
,_Fld6316 = @ДатаОкончанияОсновногоОтпуска
,_Fld21590 = @КоличествоДнейОсновногоОтпуска
,_Fld6317RRef = @ПорядокРасчетаОсновногоОтпуска
,_Fld6318 = @ДатаНачалаДополнительногоОтпуска
,_Fld6319 = @ДатаОкончанияДополнительногоОтпуска
,_Fld21591 = @КоличествоДнейДополнительногоОтпуска
,_Fld6320RRef = @ВидРасчетаДополнительногоОтпуска
,_Fld6324 = @УдалитьРезультатКомпенсацииОтпуска
,_Fld6321 = @ПроцентОплатыДополнительногоОтпуска
,_Fld6326 = @УдалитьСторноРезультатКомпенсацииОтпуска
,_Fld6322RRef = @ПорядокРасчетаКомпенсацииОтпуска
,_Fld6323 = @ДнейЧасовКомпенсацииОтпуска
,_Fld18526 = @ИспользоватьСреднеЧасовойЗаработок
,_Fld6314RRef = @УдалитьПриказ
,_Fld6325RRef = @ПерерассчитываемыйДокумент
,_Fld6327 = @РабочийГодС
,_Fld6328 = @РабочийГодПо
,_Fld26848 = @ОсновнойОтпуск
,_Fld26849 = @ДополнительныйОтпуск
,_Fld26850 = @КомпенсацияОтпуска
,_Fld26851 = @ПериодРасчетаСреднегоЗаработкаНачало
,_Fld26852 = @ПериодРасчетаСреднегоЗаработкаОкончание
,_Fld26853 = @Фамилия
,_Fld26854 = @Имя
,_Fld26855 = @Отчество
,_Fld26856RRef = @ВидДокумента
,_Fld26857 = @СерияДокумента
,_Fld26858 = @НомерДокумента
,_Fld26859 = @ДатаВыдачиДокумента
,_Fld26860 = @ДатаДействияДокумента
,_Fld26861 = @ПеречислятьПособиеПочтовымПереводом
,_Fld26862RRef = @Банк
,_Fld26863 = @НомерЛицевогоСчета
,_Fld26864 = @АдресПочтовый
,_Fld26865 = @НаименованиеБанка
,_Fld26866 = @БИКБанка
,_Fld26867RRef = @ДолжностьУполномоченного
,_Fld26868RRef = @Уполномоченный
,_Fld26869 = @КоррСчетБанка
,_Fld26870 = @КемВыданДокумент
,_Fld26871 = @АдресРегистрации
,_Fld26872 = @Телефон
,_Fld26873 = @ТелефонСоставителя
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("ВидРасчетаДополнительногоОтпуска", Guid.Empty);
Команда.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("Отчество", Отчество);
Команда.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();
}
}
}