public void Записать()
{
//Установка блокировки элемента на горизантально масштабированный кластер.
//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
//Выделение сервиса для блокировки элемента и генерации кода
//Выполнение операций контроля без обращений к sql-серверу.
//Контроль конфликта блокировок.
//Контроль загрузки булкинсертом гетерогенной коллекции.
//Контроль уникальности кода для Документов.
//Контроль уникальности номера для документов, в границах префикса.
//Контроль владельца, он не может быть группой.
//Контроль владельца он должен быть задан.
//Контроль родителя он должен быть группой.
//Контроль количества уровней, должен соотвествовать метаданным.
//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
//Контроль уникальности ссылки
//Контроль зацикливания
//Опционально контроль битых ссылок.
//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
using (var Подключение = new SqlConnection(СтрокаСоединения))
{
Подключение.Open();
using (var Команда = Подключение.CreateCommand())
{
if(_ЭтоНовый)
{
Команда.CommandText = @"
Insert Into _Document464(
_IDRRef
/*,_Version*/
,_Marked
,_IsMetadata
,_Number
,_Fld27318
,_Fld11932RRef
,_Fld11936RRef
,_Fld22260RRef
,_Fld11928
,_Fld11938
,_Fld11929RRef
,_Fld11930
,_Fld11931
,_Fld11923
,_Fld11922
,_Fld11933RRef
,_Fld11934
,_Fld11937
,_Fld11926RRef
,_Fld11924
,_Fld27319
,_Fld27320
,_Fld27321
,_Fld27322
,_Fld27323
,_Fld27324
,_Fld27325
,_Fld27326
,_Fld27327
,_Fld27328
,_Fld27329
,_Fld27330
,_Fld11925RRef
,_Fld27331
,_Fld27332
,_Fld27333
,_Fld27334
,_Fld27335
,_Fld27336
,_Fld27337
,_Fld27338RRef
,_Fld27339RRef
,_Fld27340RRef
,_Fld27341RRef)
Values(
@Ссылка
/*,@Версия*/
,@ПометкаУдаления
,@Номер
,@ДатаВыставления
,@Контрагент
,@ДоговорКонтрагента
,@ВидСчетаФактуры
,@Под0
,@ВалютнаяСумма
,@СтавкаНДС
,@Сумма
,@СуммаНДС
,@ДатаПлатежноРасчетногоДокумента
,@НомерПлатежноРасчетногоДокумента
,@ВалютаДокумента
,@СуммаДокумента
,@СформированПриВводеНачальныхОстатковНДС
,@Ответственный
,@Комментарий
,@Исправление
,@КодСпособаВыставления
,@КодВидаОперации
,@Выставлен
,@НомерИсправления
,@НомерИсходногоДокумента
,@ДатаИсходногоДокумента
,@НомерИсправленияИсходногоДокумента
,@ДатаИсправленияИсходногоДокумента
,@СуммаУвеличение
,@СуммаУменьшение
,@УчитыватьИсправлениеИсходногоДокумента
,@Организация
,@НомерИсправляемогоКорректировочногоДокумента
,@ДатаИсправляемогоКорректировочногоДокумента
,@СчетФактураБезНДС
,@СчетФактураНеВыставляется
,@СуммаНДСУвеличение
,@СуммаНДСУменьшение
,@СуммаНДСДокумента
,@ИсправляемыйСчетФактура
,@Комитент
,@Руководитель
,@ГлавныйБухгалтер)";
}
else
{
Команда.CommandText = @"
Update _Document464
Set
/*_IDRRef = @Ссылка*/
/*,_Version = @Версия*/
_Marked = @ПометкаУдаления
,_Number = @Номер
,_Fld27318 = @ДатаВыставления
,_Fld11932RRef = @Контрагент
,_Fld11936RRef = @ДоговорКонтрагента
,_Fld22260RRef = @ВидСчетаФактуры
,_Fld11928 = @Под0
,_Fld11938 = @ВалютнаяСумма
,_Fld11929RRef = @СтавкаНДС
,_Fld11930 = @Сумма
,_Fld11931 = @СуммаНДС
,_Fld11923 = @ДатаПлатежноРасчетногоДокумента
,_Fld11922 = @НомерПлатежноРасчетногоДокумента
,_Fld11933RRef = @ВалютаДокумента
,_Fld11934 = @СуммаДокумента
,_Fld11937 = @СформированПриВводеНачальныхОстатковНДС
,_Fld11926RRef = @Ответственный
,_Fld11924 = @Комментарий
,_Fld27319 = @Исправление
,_Fld27320 = @КодСпособаВыставления
,_Fld27321 = @КодВидаОперации
,_Fld27322 = @Выставлен
,_Fld27323 = @НомерИсправления
,_Fld27324 = @НомерИсходногоДокумента
,_Fld27325 = @ДатаИсходногоДокумента
,_Fld27326 = @НомерИсправленияИсходногоДокумента
,_Fld27327 = @ДатаИсправленияИсходногоДокумента
,_Fld27328 = @СуммаУвеличение
,_Fld27329 = @СуммаУменьшение
,_Fld27330 = @УчитыватьИсправлениеИсходногоДокумента
,_Fld11925RRef = @Организация
,_Fld27331 = @НомерИсправляемогоКорректировочногоДокумента
,_Fld27332 = @ДатаИсправляемогоКорректировочногоДокумента
,_Fld27333 = @СчетФактураБезНДС
,_Fld27334 = @СчетФактураНеВыставляется
,_Fld27335 = @СуммаНДСУвеличение
,_Fld27336 = @СуммаНДСУменьшение
,_Fld27337 = @СуммаНДСДокумента
,_Fld27338RRef = @ИсправляемыйСчетФактура
,_Fld27339RRef = @Комитент
,_Fld27340RRef = @Руководитель
,_Fld27341RRef = @ГлавныйБухгалтер
Where _IDRRef = @Ссылка";
}
Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
/*Команда.Parameters.AddWithValue("Версия", Версия);*/
Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления);
Команда.Parameters.AddWithValue("Номер", Номер);
Команда.Parameters.AddWithValue("ДатаВыставления", ДатаВыставления);
Команда.Parameters.AddWithValue("ВидСчетаФактуры", ВидСчетаФактуры.Ключ());
Команда.Parameters.AddWithValue("Под0", Под0);
Команда.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();
}
}
}