public void Записать()
{
//Установка блокировки элемента на горизантально масштабированный кластер.
//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
//Выделение сервиса для блокировки элемента и генерации кода
//Выполнение операций контроля без обращений к sql-серверу.
//Контроль конфликта блокировок.
//Контроль загрузки булкинсертом гетерогенной коллекции.
//Контроль уникальности кода для справочников.
//Контроль уникальности номера для документов, в границах префикса.
//Контроль владельца, он не может быть группой.
//Контроль владельца он должен быть задан.
//Контроль родителя он должен быть группой.
//Контроль количества уровней, должен соотвествовать метаданным.
//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
//Контроль уникальности ссылки
//Контроль зацикливания
//Опционально контроль битых ссылок.
//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
using (var Подключение = new SqlConnection(СтрокаСоединения))
{
Подключение.Open();
using (var Команда = Подключение.CreateCommand())
{
if(_ЭтоНовый)
{
Команда.CommandText = @"
Insert Into _Reference19645(
_IDRRef
/*,_Version*/
,_Marked
,_IsMetadata
,_Code
,_Description
,_Fld19768
,_Fld19769
,_Fld19770RRef
,_Fld19771RRef
,_Fld19772
,_Fld19773
,_Fld19774
,_Fld19775
,_Fld19776
,_Fld19777
,_Fld19778
,_Fld19779
,_Fld19780
,_Fld19781
,_Fld19782
,_Fld19783RRef
,_Fld19784RRef
,_Fld19785RRef
,_Fld19786RRef
,_Fld19787RRef
,_Fld19788
,_Fld19789
,_Fld19790
,_Fld19791
,_Fld19792RRef
,_Fld19793
,_Fld19794
,_Fld19795
,_Fld19796
,_Fld19797)
Values(
@Ссылка
/*,@Версия*/
,@ПометкаУдаления
,@Предопределенный
,@Код
,@Наименование
,@ОбменТоварами
,@ОбменЗаказами
,@УзелОбменаТоварами
,@УзелОбменаЗаказами
,@ВыгружатьТолькоИзменения
,@ВыгружатьНаСайт
,@КаталогВыгрузки
,@HTTPОбменАдресСайта
,@HTTPОбменИмяПользователя
,@HTTPОбменПароль
,@HTTPОбменПроксиИспользование
,@HTTPОбменПроксиСервер
,@HTTPОбменПроксиПорт
,@HTTPОбменПроксиИмяПользователя
,@HTTPОбменПроксиПароль
,@ГруппаДляНовыхКонтрагентов
,@ГруппаДляНовойНоменклатуры
,@Организация
,@Ответственный
,@Подразделение
,@ЗаписыватьДокументыТекущейДатой
,@ПроводитьДокументы
,@ПроводитьДокументыОперативно
,@СпособИдентификацииКонтрагентов
,@ЕдиницаИзмеренияНовойНоменклатуры
,@СохраненныеНастройкиПостроителя
,@ВыгружатьКартинки
,@Комментарий
,@РегламентноеЗадание
,@ИспользоватьРегламентныеЗадания)";
}
else
{
Команда.CommandText = @"
Update _Reference19645
Set
/*_IDRRef = @Ссылка*/
/*,_Version = @Версия*/
_Marked = @ПометкаУдаления
,_IsMetadata = @Предопределенный
,_Code = @Код
,_Description = @Наименование
,_Fld19768 = @ОбменТоварами
,_Fld19769 = @ОбменЗаказами
,_Fld19770RRef = @УзелОбменаТоварами
,_Fld19771RRef = @УзелОбменаЗаказами
,_Fld19772 = @ВыгружатьТолькоИзменения
,_Fld19773 = @ВыгружатьНаСайт
,_Fld19774 = @КаталогВыгрузки
,_Fld19775 = @HTTPОбменАдресСайта
,_Fld19776 = @HTTPОбменИмяПользователя
,_Fld19777 = @HTTPОбменПароль
,_Fld19778 = @HTTPОбменПроксиИспользование
,_Fld19779 = @HTTPОбменПроксиСервер
,_Fld19780 = @HTTPОбменПроксиПорт
,_Fld19781 = @HTTPОбменПроксиИмяПользователя
,_Fld19782 = @HTTPОбменПроксиПароль
,_Fld19783RRef = @ГруппаДляНовыхКонтрагентов
,_Fld19784RRef = @ГруппаДляНовойНоменклатуры
,_Fld19785RRef = @Организация
,_Fld19786RRef = @Ответственный
,_Fld19787RRef = @Подразделение
,_Fld19788 = @ЗаписыватьДокументыТекущейДатой
,_Fld19789 = @ПроводитьДокументы
,_Fld19790 = @ПроводитьДокументыОперативно
,_Fld19791 = @СпособИдентификацииКонтрагентов
,_Fld19792RRef = @ЕдиницаИзмеренияНовойНоменклатуры
,_Fld19793 = @СохраненныеНастройкиПостроителя
,_Fld19794 = @ВыгружатьКартинки
,_Fld19795 = @Комментарий
,_Fld19796 = @РегламентноеЗадание
,_Fld19797 = @ИспользоватьРегламентныеЗадания
Where _IDRRef = @Ссылка";
}
Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
/*Команда.Parameters.AddWithValue("Версия", Версия);*/
Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления);
Команда.Parameters.AddWithValue("Предопределенный", Предопределенный);
Команда.Parameters.AddWithValue("Код", Код);
Команда.Parameters.AddWithValue("Наименование", Наименование);
Команда.Parameters.AddWithValue("ОбменТоварами", ОбменТоварами);
Команда.Parameters.AddWithValue("ОбменЗаказами", ОбменЗаказами);
Команда.Parameters.AddWithValue("УзелОбменаТоварами", Guid.Empty);
Команда.Parameters.AddWithValue("УзелОбменаЗаказами", Guid.Empty);
Команда.Parameters.AddWithValue("ВыгружатьТолькоИзменения", ВыгружатьТолькоИзменения);
Команда.Parameters.AddWithValue("ВыгружатьНаСайт", ВыгружатьНаСайт);
Команда.Parameters.AddWithValue("КаталогВыгрузки", КаталогВыгрузки);
Команда.Parameters.AddWithValue("HTTPОбменАдресСайта", HTTPОбменАдресСайта);
Команда.Parameters.AddWithValue("HTTPОбменИмяПользователя", HTTPОбменИмяПользователя);
Команда.Parameters.AddWithValue("HTTPОбменПароль", HTTPОбменПароль);
Команда.Parameters.AddWithValue("HTTPОбменПроксиИспользование", HTTPОбменПроксиИспользование);
Команда.Parameters.AddWithValue("HTTPОбменПроксиСервер", HTTPОбменПроксиСервер);
Команда.Parameters.AddWithValue("HTTPОбменПроксиПорт", HTTPОбменПроксиПорт);
Команда.Parameters.AddWithValue("HTTPОбменПроксиИмяПользователя", HTTPОбменПроксиИмяПользователя);
Команда.Parameters.AddWithValue("HTTPОбменПроксиПароль", HTTPОбменПроксиПароль);
Команда.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("ИспользоватьРегламентныеЗадания", ИспользоватьРегламентныеЗадания);
Команда.ExecuteNonQuery();
}
}
}