public void Записать()
{
//Установка блокировки элемента на горизантально масштабированный кластер.
//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
//Выделение сервиса для блокировки элемента и генерации кода
//Выполнение операций контроля без обращений к sql-серверу.
//Контроль конфликта блокировок.
//Контроль загрузки булкинсертом гетерогенной коллекции.
//Контроль уникальности кода для Документов.
//Контроль уникальности номера для документов, в границах префикса.
//Контроль владельца, он не может быть группой.
//Контроль владельца он должен быть задан.
//Контроль родителя он должен быть группой.
//Контроль количества уровней, должен соотвествовать метаданным.
//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
//Контроль уникальности ссылки
//Контроль зацикливания
//Опционально контроль битых ссылок.
//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
using (var Подключение = new SqlConnection(СтрокаСоединения))
{
Подключение.Open();
using (var Команда = Подключение.CreateCommand())
{
if(_ЭтоНовый)
{
Команда.CommandText = @"
Insert Into _Document346(
_IDRRef
/*,_Version*/
,_Marked
,_IsMetadata
,_Number
,_Fld6981RRef
,_Fld6982
,_Fld6983RRef
,_Fld21717RRef
,_Fld6984RRef
,_Fld6986
,_Fld6987
,_Fld6988
,_Fld18781
,_Fld18782
,_Fld18783
,_Fld18784
,_Fld18785
,_Fld18786
,_Fld18787
,_Fld6985RRef
,_Fld23003
,_Fld27075
,_Fld27076RRef
,_Fld27077
,_Fld27078
,_Fld27079
,_Fld27080
,_Fld27081
,_Fld27082
,_Fld27083
,_Fld27084
,_Fld27085RRef
,_Fld27086
,_Fld27087
,_Fld27088
,_Fld27089
,_Fld27090
,_Fld27091
,_Fld27092
,_Fld27093RRef
,_Fld27094
,_Fld27095
,_Fld27096
,_Fld27097
,_Fld27098RRef
,_Fld27099RRef
,_Fld27100
,_Fld27101
,_Fld27102
,_Fld27103
,_Fld27104
,_Fld27105
,_Fld27106RRef
,_Fld27107
,_Fld27108
,_Fld27109
,_Fld27110
,_Fld27111
,_Fld27112
,_Fld27113
,_Fld27114
,_Fld27115
,_Fld27116
,_Fld27117
,_Fld27118
,_Fld27119)
Values(
@Ссылка
/*,@Версия*/
,@ПометкаУдаления
,@Номер
,@Организация
,@Комментарий
,@Ответственный
,@Сотрудник
,@Физлицо
,@ДатаДействия
,@ДатаНачала
,@ДатаОкончания
,@ДатаОкончанияПособияДоПолутораЛет
,@ДатаОкончанияПособияДоТрехЛет
,@СреднедневнойЗаработок
,@КоличествоДетей
,@КоличествоПервыхДетей
,@ВыплачиватьПособиеДоПолутораЛет
,@ВыплачиватьПособиеДоТрехЛет
,@УдалитьПриказ
,@ОсвобождатьСтавку
,@ДанныеПрошлойВерсии
,@ИсправляемыйДокумент
,@ДвиженияИсправляемогоДокумента
,@ПериодРасчетаСреднегоЗаработкаНачало
,@ПериодРасчетаСреднегоЗаработкаОкончание
,@ПрименятьЛьготыПриНачисленииПособия
,@СреднедневнойЗаработокПереходногоПериода2010
,@УчитыватьЗаработокПредыдущихСтрахователей
,@РасчетПоПравилам2010Года
,@ПеречислятьПособиеПочтовымПереводом
,@Банк
,@НаименованиеБанка
,@БИКБанка
,@НомерЛицевогоСчета
,@АдресПочтовый
,@Фамилия
,@Имя
,@Отчество
,@ВидДокумента
,@СерияДокумента
,@НомерДокумента
,@ДатаВыдачиДокумента
,@ДатаДействияДокумента
,@ДолжностьУполномоченного
,@Уполномоченный
,@АдресРегистрации
,@ДатаСправкиОНеполученииПособияОтОтца
,@НомерСправкиОНеполученииПособияОтОтца
,@ДатаСправкиОНеполученииПособияОтМатери
,@НомерСправкиОНеполученииПособияОтМатери
,@ПроживаниеРаботаВЛьготнойЗоне
,@СтатусЛьготнойЗоны
,@ДатаСправкиПоДругимМестамРаботы
,@НомерСправкиПоДругимМестамРаботы
,@КемВыданДокумент
,@ДатаВыдачиДокументаНаПроживание
,@НомерДокументаНаПроживание
,@СерияДокументаНаПроживание
,@НаименованиеДокументаНаПроживание
,@КоррСчетБанка
,@Телефон
,@РасчетПособияИзТарифнойСтавки
,@ТарифнаяСтавкаОклад
,@ТелефонСоставителя
,@АдресПочтовыйКодПоКЛАДР)";
}
else
{
Команда.CommandText = @"
Update _Document346
Set
/*_IDRRef = @Ссылка*/
/*,_Version = @Версия*/
_Marked = @ПометкаУдаления
,_Number = @Номер
,_Fld6981RRef = @Организация
,_Fld6982 = @Комментарий
,_Fld6983RRef = @Ответственный
,_Fld21717RRef = @Сотрудник
,_Fld6984RRef = @Физлицо
,_Fld6986 = @ДатаДействия
,_Fld6987 = @ДатаНачала
,_Fld6988 = @ДатаОкончания
,_Fld18781 = @ДатаОкончанияПособияДоПолутораЛет
,_Fld18782 = @ДатаОкончанияПособияДоТрехЛет
,_Fld18783 = @СреднедневнойЗаработок
,_Fld18784 = @КоличествоДетей
,_Fld18785 = @КоличествоПервыхДетей
,_Fld18786 = @ВыплачиватьПособиеДоПолутораЛет
,_Fld18787 = @ВыплачиватьПособиеДоТрехЛет
,_Fld6985RRef = @УдалитьПриказ
,_Fld23003 = @ОсвобождатьСтавку
,_Fld27075 = @ДанныеПрошлойВерсии
,_Fld27076RRef = @ИсправляемыйДокумент
,_Fld27077 = @ДвиженияИсправляемогоДокумента
,_Fld27078 = @ПериодРасчетаСреднегоЗаработкаНачало
,_Fld27079 = @ПериодРасчетаСреднегоЗаработкаОкончание
,_Fld27080 = @ПрименятьЛьготыПриНачисленииПособия
,_Fld27081 = @СреднедневнойЗаработокПереходногоПериода2010
,_Fld27082 = @УчитыватьЗаработокПредыдущихСтрахователей
,_Fld27083 = @РасчетПоПравилам2010Года
,_Fld27084 = @ПеречислятьПособиеПочтовымПереводом
,_Fld27085RRef = @Банк
,_Fld27086 = @НаименованиеБанка
,_Fld27087 = @БИКБанка
,_Fld27088 = @НомерЛицевогоСчета
,_Fld27089 = @АдресПочтовый
,_Fld27090 = @Фамилия
,_Fld27091 = @Имя
,_Fld27092 = @Отчество
,_Fld27093RRef = @ВидДокумента
,_Fld27094 = @СерияДокумента
,_Fld27095 = @НомерДокумента
,_Fld27096 = @ДатаВыдачиДокумента
,_Fld27097 = @ДатаДействияДокумента
,_Fld27098RRef = @ДолжностьУполномоченного
,_Fld27099RRef = @Уполномоченный
,_Fld27100 = @АдресРегистрации
,_Fld27101 = @ДатаСправкиОНеполученииПособияОтОтца
,_Fld27102 = @НомерСправкиОНеполученииПособияОтОтца
,_Fld27103 = @ДатаСправкиОНеполученииПособияОтМатери
,_Fld27104 = @НомерСправкиОНеполученииПособияОтМатери
,_Fld27105 = @ПроживаниеРаботаВЛьготнойЗоне
,_Fld27106RRef = @СтатусЛьготнойЗоны
,_Fld27107 = @ДатаСправкиПоДругимМестамРаботы
,_Fld27108 = @НомерСправкиПоДругимМестамРаботы
,_Fld27109 = @КемВыданДокумент
,_Fld27110 = @ДатаВыдачиДокументаНаПроживание
,_Fld27111 = @НомерДокументаНаПроживание
,_Fld27112 = @СерияДокументаНаПроживание
,_Fld27113 = @НаименованиеДокументаНаПроживание
,_Fld27114 = @КоррСчетБанка
,_Fld27115 = @Телефон
,_Fld27116 = @РасчетПособияИзТарифнойСтавки
,_Fld27117 = @ТарифнаяСтавкаОклад
,_Fld27118 = @ТелефонСоставителя
,_Fld27119 = @АдресПочтовыйКодПоКЛАДР
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("УдалитьПриказ", УдалитьПриказ.Ссылка);
Команда.Parameters.AddWithValue("ОсвобождатьСтавку", ОсвобождатьСтавку);
Команда.Parameters.AddWithValue("ДанныеПрошлойВерсии", ДанныеПрошлойВерсии);
Команда.Parameters.AddWithValue("ИсправляемыйДокумент", ИсправляемыйДокумент.Ссылка);
Команда.Parameters.AddWithValue("ДвиженияИсправляемогоДокумента",new byte[0]);
Команда.Parameters.AddWithValue("ПериодРасчетаСреднегоЗаработкаНачало", ПериодРасчетаСреднегоЗаработкаНачало);
Команда.Parameters.AddWithValue("ПериодРасчетаСреднегоЗаработкаОкончание", ПериодРасчетаСреднегоЗаработкаОкончание);
Команда.Parameters.AddWithValue("ПрименятьЛьготыПриНачисленииПособия", ПрименятьЛьготыПриНачисленииПособия);
Команда.Parameters.AddWithValue("СреднедневнойЗаработокПереходногоПериода2010", СреднедневнойЗаработокПереходногоПериода2010);
Команда.Parameters.AddWithValue("УчитыватьЗаработокПредыдущихСтрахователей", УчитыватьЗаработокПредыдущихСтрахователей);
Команда.Parameters.AddWithValue("РасчетПоПравилам2010Года", РасчетПоПравилам2010Года);
Команда.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();
}
}
}