public void Записать()
{
//Установка блокировки элемента на горизантально масштабированный кластер.
//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
//Выделение сервиса для блокировки элемента и генерации кода
//Выполнение операций контроля без обращений к sql-серверу.
//Контроль конфликта блокировок.
//Контроль загрузки булкинсертом гетерогенной коллекции.
//Контроль уникальности кода для Документов.
//Контроль уникальности номера для документов, в границах префикса.
//Контроль владельца, он не может быть группой.
//Контроль владельца он должен быть задан.
//Контроль родителя он должен быть группой.
//Контроль количества уровней, должен соотвествовать метаданным.
//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
//Контроль уникальности ссылки
//Контроль зацикливания
//Опционально контроль битых ссылок.
//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
using (var Подключение = new SqlConnection(СтрокаСоединения))
{
Подключение.Open();
using (var Команда = Подключение.CreateCommand())
{
if(_ЭтоНовый)
{
Команда.CommandText = @"
Insert Into _Document354(
_IDRRef
/*,_Version*/
,_Marked
,_IsMetadata
,_Number
,_Fld7199RRef
,_Fld7200
,_Fld7201RRef
,_Fld7202
,_Fld7203RRef
,_Fld7204
,_Fld7205
,_Fld7206RRef
,_Fld7207
,_Fld7208RRef
,_Fld7209RRef
,_Fld7210
,_Fld7211
,_Fld7212
,_Fld7213RRef
,_Fld7214RRef
,_Fld7215
,_Fld7217RRef
,_Fld7218RRef
,_Fld7219RRef
,_Fld7220RRef
,_Fld7221RRef
,_Fld7222RRef
,_Fld7223RRef
,_Fld7224RRef
,_Fld7225RRef
,_Fld7226
,_Fld7227
,_Fld7228
,_Fld7229
,_Fld7230RRef
,_Fld7231RRef
,_Fld7232RRef
,_Fld7233RRef
,_Fld7234RRef
,_Fld7235RRef
,_Fld7236RRef
,_Fld7237RRef
,_Fld7238
,_Fld7240
,_Fld7241RRef
,_Fld7242RRef
,_Fld18992
,_Fld21798
,_Fld21799)
Values(
@Ссылка
/*,@Версия*/
,@ПометкаУдаления
,@Номер
,@ВалютаДокумента
,@ДатаВходящегоДокумента
,@ДоговорКонтрагента
,@Комментарий
,@Контрагент
,@КратностьВзаиморасчетов
,@КурсВзаиморасчетов
,@НоменклатурнаяГруппа
,@НомерВходящегоДокумента
,@Организация
,@Ответственный
,@ОтражатьВБухгалтерскомУчете
,@ОтражатьВНалоговомУчете
,@ОтражатьВУправленческомУчете
,@Подразделение
,@ПодразделениеОрганизации
,@ПроцентКомиссионногоВознаграждения
,@СпособРасчетаКомиссионногоВознаграждения
,@СтавкаНДСВознаграждения
,@СтатьяЗатрат
,@СубконтоНУ1
,@СубконтоНУ2
,@СубконтоНУ3
,@Субконто1
,@Субконто2
,@Субконто3
,@СуммаВключаетНДС
,@СуммаВознаграждения
,@СуммаНДСВознаграждения
,@СуммаДокумента
,@СчетУчетаЗатрат
,@СчетУчетаЗатратНУ
,@СчетУчетаНДС
,@СчетУчетаРасчетовЗаПосредническиеУслуги
,@СчетУчетаРасчетовПоАвансамВыданным
,@СчетУчетаРасчетовПоАвансамПолученным
,@СчетУчетаРасчетовСКонтрагентом
,@ТипЦен
,@УчитыватьНДС
,@УдержатьКомиссионноеВознаграждение
,@Грузоотправитель
,@Грузополучатель
,@НДСВключенВСтоимость
,@НомерВходящегоДокументаЭлектронногоОбмена
,@ДатаВходящегоДокументаЭлектронногоОбмена)";
}
else
{
Команда.CommandText = @"
Update _Document354
Set
/*_IDRRef = @Ссылка*/
/*,_Version = @Версия*/
_Marked = @ПометкаУдаления
,_Number = @Номер
,_Fld7199RRef = @ВалютаДокумента
,_Fld7200 = @ДатаВходящегоДокумента
,_Fld7201RRef = @ДоговорКонтрагента
,_Fld7202 = @Комментарий
,_Fld7203RRef = @Контрагент
,_Fld7204 = @КратностьВзаиморасчетов
,_Fld7205 = @КурсВзаиморасчетов
,_Fld7206RRef = @НоменклатурнаяГруппа
,_Fld7207 = @НомерВходящегоДокумента
,_Fld7208RRef = @Организация
,_Fld7209RRef = @Ответственный
,_Fld7210 = @ОтражатьВБухгалтерскомУчете
,_Fld7211 = @ОтражатьВНалоговомУчете
,_Fld7212 = @ОтражатьВУправленческомУчете
,_Fld7213RRef = @Подразделение
,_Fld7214RRef = @ПодразделениеОрганизации
,_Fld7215 = @ПроцентКомиссионногоВознаграждения
,_Fld7217RRef = @СпособРасчетаКомиссионногоВознаграждения
,_Fld7218RRef = @СтавкаНДСВознаграждения
,_Fld7219RRef = @СтатьяЗатрат
,_Fld7220RRef = @СубконтоНУ1
,_Fld7221RRef = @СубконтоНУ2
,_Fld7222RRef = @СубконтоНУ3
,_Fld7223RRef = @Субконто1
,_Fld7224RRef = @Субконто2
,_Fld7225RRef = @Субконто3
,_Fld7226 = @СуммаВключаетНДС
,_Fld7227 = @СуммаВознаграждения
,_Fld7228 = @СуммаНДСВознаграждения
,_Fld7229 = @СуммаДокумента
,_Fld7230RRef = @СчетУчетаЗатрат
,_Fld7231RRef = @СчетУчетаЗатратНУ
,_Fld7232RRef = @СчетУчетаНДС
,_Fld7233RRef = @СчетУчетаРасчетовЗаПосредническиеУслуги
,_Fld7234RRef = @СчетУчетаРасчетовПоАвансамВыданным
,_Fld7235RRef = @СчетУчетаРасчетовПоАвансамПолученным
,_Fld7236RRef = @СчетУчетаРасчетовСКонтрагентом
,_Fld7237RRef = @ТипЦен
,_Fld7238 = @УчитыватьНДС
,_Fld7240 = @УдержатьКомиссионноеВознаграждение
,_Fld7241RRef = @Грузоотправитель
,_Fld7242RRef = @Грузополучатель
,_Fld18992 = @НДСВключенВСтоимость
,_Fld21798 = @НомерВходящегоДокументаЭлектронногоОбмена
,_Fld21799 = @ДатаВходящегоДокументаЭлектронногоОбмена
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("СубконтоНУ1", Guid.Empty);
Команда.Parameters.AddWithValue("СубконтоНУ2", Guid.Empty);
Команда.Parameters.AddWithValue("СубконтоНУ3", Guid.Empty);
Команда.Parameters.AddWithValue("Субконто1", Guid.Empty);
Команда.Parameters.AddWithValue("Субконто2", Guid.Empty);
Команда.Parameters.AddWithValue("Субконто3", Guid.Empty);
Команда.Parameters.AddWithValue("СуммаВключаетНДС", СуммаВключаетНДС);
Команда.Parameters.AddWithValue("СуммаВознаграждения", СуммаВознаграждения);
Команда.Parameters.AddWithValue("СуммаНДСВознаграждения", СуммаНДСВознаграждения);
Команда.Parameters.AddWithValue("СуммаДокумента", СуммаДокумента);
Команда.Parameters.AddWithValue("СчетУчетаЗатрат", Guid.Empty);
Команда.Parameters.AddWithValue("СчетУчетаЗатратНУ", Guid.Empty);
Команда.Parameters.AddWithValue("СчетУчетаНДС", Guid.Empty);
Команда.Parameters.AddWithValue("СчетУчетаРасчетовЗаПосредническиеУслуги", Guid.Empty);
Команда.Parameters.AddWithValue("СчетУчетаРасчетовПоАвансамВыданным", Guid.Empty);
Команда.Parameters.AddWithValue("СчетУчетаРасчетовПоАвансамПолученным", Guid.Empty);
Команда.Parameters.AddWithValue("СчетУчетаРасчетовСКонтрагентом", Guid.Empty);
Команда.Parameters.AddWithValue("УчитыватьНДС", УчитыватьНДС);
Команда.Parameters.AddWithValue("УдержатьКомиссионноеВознаграждение", УдержатьКомиссионноеВознаграждение);
Команда.Parameters.AddWithValue("НДСВключенВСтоимость", НДСВключенВСтоимость);
Команда.Parameters.AddWithValue("НомерВходящегоДокументаЭлектронногоОбмена", НомерВходящегоДокументаЭлектронногоОбмена);
Команда.Parameters.AddWithValue("ДатаВходящегоДокументаЭлектронногоОбмена", ДатаВходящегоДокументаЭлектронногоОбмена);
Команда.ExecuteNonQuery();
}
}
}