public void Записать()
{
//Установка блокировки элемента на горизантально масштабированный кластер.
//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
//Выделение сервиса для блокировки элемента и генерации кода
//Выполнение операций контроля без обращений к sql-серверу.
//Контроль конфликта блокировок.
//Контроль загрузки булкинсертом гетерогенной коллекции.
//Контроль уникальности кода для Документов.
//Контроль уникальности номера для документов, в границах префикса.
//Контроль владельца, он не может быть группой.
//Контроль владельца он должен быть задан.
//Контроль родителя он должен быть группой.
//Контроль количества уровней, должен соотвествовать метаданным.
//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
//Контроль уникальности ссылки
//Контроль зацикливания
//Опционально контроль битых ссылок.
//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
using (var Подключение = new SqlConnection(СтрокаСоединения))
{
Подключение.Open();
using (var Команда = Подключение.CreateCommand())
{
if(_ЭтоНовый)
{
Команда.CommandText = @"
Insert Into _Document23146(
_IDRRef
/*,_Version*/
,_Marked
,_IsMetadata
,_Number
,_Fld24224
,_Fld24225RRef
,_Fld24226RRef
,_Fld24227RRef
,_Fld24229
,_Fld24230
,_Fld24231
,_Fld24232
,_Fld24233
,_Fld24234
,_Fld24235
,_Fld24236
,_Fld24237
,_Fld24238
,_Fld24239
,_Fld24240
,_Fld24241
,_Fld24242
,_Fld24243
,_Fld24244
,_Fld24245
,_Fld24246
,_Fld24247
,_Fld24248RRef
,_Fld24249
,_Fld24250
,_Fld24251
,_Fld24252
,_Fld24253RRef
,_Fld24254RRef
,_Fld24255
,_Fld24256
,_Fld24257
,_Fld24258RRef
,_Fld24259RRef
,_Fld24260
,_Fld24261
,_Fld24262
,_Fld24263RRef
,_Fld24264
,_Fld24265)
Values(
@Ссылка
/*,@Версия*/
,@ПометкаУдаления
,@Номер
,@ИдентификаторДокументооборота
,@ТипЗаявления
,@Статус
,@УчетнаяЗапись
,@ИНН
,@КПП
,@ПолноеНаименование
,@КраткоеНаименование
,@ПризнакУполномоченногоПредставителя
,@ПризнакКрупнейшегоНалогоплательщика
,@ПризнакОбособленногоПодразделения
,@АдресЮридический
,@АдресФактический
,@РегНомерПФР
,@РегНомерФСС
,@ТелефонОсновной
,@ТелефонДополнительный
,@ЭлектроннаяПочта
,@ВладелецЭЦПФамилия
,@ВладелецЭЦПИмя
,@ВладелецЭЦПОтчество
,@ВладелецЭЦПДолжность
,@ВладелецЭЦППодразделение
,@ВладелецЭЦПВидДокумента
,@ВладелецЭЦПНомерДокумента
,@ВладелецЭЦПСерияДокумента
,@ВладелецЭЦПДатаВыдачиДокумента
,@ВладелецЭЦПКемВыданДокумент
,@ВладелецЭЦПТип
,@ТипКриптопровайдера
,@ПутьКонтейнерЗакрытогоКлюча
,@Комментарий
,@СтатусКомментарий
,@СпецоператорСвязи
,@Организация
,@ДатаОтправкиЗаявления
,@ДатаПолученияОтвета
,@ДатаСозданияУчетнойЗаписи
,@Ответственный
,@ДополнительныйКодФСС
,@НомерОсновнойПоставки1с)";
}
else
{
Команда.CommandText = @"
Update _Document23146
Set
/*_IDRRef = @Ссылка*/
/*,_Version = @Версия*/
_Marked = @ПометкаУдаления
,_Number = @Номер
,_Fld24224 = @ИдентификаторДокументооборота
,_Fld24225RRef = @ТипЗаявления
,_Fld24226RRef = @Статус
,_Fld24227RRef = @УчетнаяЗапись
,_Fld24229 = @ИНН
,_Fld24230 = @КПП
,_Fld24231 = @ПолноеНаименование
,_Fld24232 = @КраткоеНаименование
,_Fld24233 = @ПризнакУполномоченногоПредставителя
,_Fld24234 = @ПризнакКрупнейшегоНалогоплательщика
,_Fld24235 = @ПризнакОбособленногоПодразделения
,_Fld24236 = @АдресЮридический
,_Fld24237 = @АдресФактический
,_Fld24238 = @РегНомерПФР
,_Fld24239 = @РегНомерФСС
,_Fld24240 = @ТелефонОсновной
,_Fld24241 = @ТелефонДополнительный
,_Fld24242 = @ЭлектроннаяПочта
,_Fld24243 = @ВладелецЭЦПФамилия
,_Fld24244 = @ВладелецЭЦПИмя
,_Fld24245 = @ВладелецЭЦПОтчество
,_Fld24246 = @ВладелецЭЦПДолжность
,_Fld24247 = @ВладелецЭЦППодразделение
,_Fld24248RRef = @ВладелецЭЦПВидДокумента
,_Fld24249 = @ВладелецЭЦПНомерДокумента
,_Fld24250 = @ВладелецЭЦПСерияДокумента
,_Fld24251 = @ВладелецЭЦПДатаВыдачиДокумента
,_Fld24252 = @ВладелецЭЦПКемВыданДокумент
,_Fld24253RRef = @ВладелецЭЦПТип
,_Fld24254RRef = @ТипКриптопровайдера
,_Fld24255 = @ПутьКонтейнерЗакрытогоКлюча
,_Fld24256 = @Комментарий
,_Fld24257 = @СтатусКомментарий
,_Fld24258RRef = @СпецоператорСвязи
,_Fld24259RRef = @Организация
,_Fld24260 = @ДатаОтправкиЗаявления
,_Fld24261 = @ДатаПолученияОтвета
,_Fld24262 = @ДатаСозданияУчетнойЗаписи
,_Fld24263RRef = @Ответственный
,_Fld24264 = @ДополнительныйКодФСС
,_Fld24265 = @НомерОсновнойПоставки1с
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("ТелефонДополнительный", ТелефонДополнительный);
Команда.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("НомерОсновнойПоставки1с", НомерОсновнойПоставки1с);
Команда.ExecuteNonQuery();
}
}
}