V82.СправочникиОбъект.НастройкиОбменаДанными.Записать C# (CSharp) Method

Записать() public method

public Записать ( ) : void
return void
        public void Записать()
        {
            //Установка блокировки элемента на горизантально масштабированный кластер.
            //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
            //Выделение сервиса для блокировки элемента и генерации кода
            //Выполнение операций контроля без обращений к sql-серверу.
            //Контроль конфликта блокировок.
            //Контроль загрузки булкинсертом гетерогенной коллекции.
            //Контроль уникальности кода для справочников.
            //Контроль уникальности номера для документов, в границах префикса.
            //Контроль владельца, он не может быть группой.
            //Контроль владельца он должен быть задан.
            //Контроль родителя он должен быть группой.
            //Контроль количества уровней, должен соотвествовать метаданным.
            //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
            //Контроль уникальности ссылки
            //Контроль зацикливания
            //Опционально контроль битых ссылок.
            //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
            using (var Подключение = new SqlConnection(СтрокаСоединения))
            {
                Подключение.Open();
                using (var Команда = Подключение.CreateCommand())
                {
                    if(_ЭтоНовый)
                    {
                        Команда.CommandText = @"
                        Insert Into _Reference93(
                        _IDRRef
                        /*,_Version*/
                        ,_Marked
                        ,_IsMetadata
                        ,_Code
                        ,_Description
                        ,_Fld1375RRef
                        ,_Fld1378
                        ,_Fld1379
                        ,_Fld1380
                        ,_Fld1381
                        ,_Fld1382
                        ,_Fld1383
                        ,_Fld1384
                        ,_Fld1404
                        ,_Fld1405
                        ,_Fld1406
                        ,_Fld1407
                        ,_Fld1408
                        ,_Fld1412
                        ,_Fld19456
                        ,_Fld19462
                        ,_Fld1411
                        ,_Fld1409RRef
                        ,_Fld1410
                        ,_Fld19455
                        ,_Fld21242
                        ,_Fld21243
                        ,_Fld21244
                        ,_Fld21245
                        ,_Fld21246
                        ,_Fld21247
                        ,_Fld21248
                        ,_Fld21249
                        ,_Fld21250
                        ,_Fld21251
                        ,_Fld21252
                        ,_Fld21253
                        ,_Fld21254
                        ,_Fld21256
                        ,_Fld21257
                        ,_Fld21259RRef
                        ,_Fld21260
                        ,_Fld21262
                        ,_Fld21263
                        ,_Fld21267
                        ,_Fld21268
                        ,_Fld21265
                        ,_Fld22936
                        ,_Fld22937
                        ,_Fld22938
                        ,_Fld22939
                        ,_Fld22940)
                        Values(
                        @Ссылка
                        /*,@Версия*/
                        ,@ПометкаУдаления
                        ,@Предопределенный
                        ,@Код
                        ,@Наименование
                        ,@ТипНастройки
                        ,@ПроизводитьПриемСообщений
                        ,@ПроизводитьОтправкуСообщений
                        ,@КоличествоЭлементовВТранзакцииНаВыгрузкуДанных
                        ,@КоличествоЭлементовВТранзакцииНаЗагрузкуДанных
                        ,@ВыполнятьАрхивациюФайловОбмена
                        ,@ПарольНаОтправку
                        ,@ПарольНаПрием
                        ,@КаталогОбменаИнформацией
                        ,@FTPАдресОбмена
                        ,@ПортFTPСоединения
                        ,@ПользовательFTPСоединения
                        ,@ПарольFTPСоединения
                        ,@Комментарий
                        ,@МаксимальныйРазмерОтправляемогоПолучаемогоПакетаЧерезFTP
                        ,@ПассивноеFTPСоединение
                        ,@ПочтовыйАдресПолучателя
                        ,@УчетнаяЗаписьПриемаОтправкиСообщений
                        ,@АвтоматическиЗакачиватьПочтуПриОбмене
                        ,@МаксимальныйРазмерОтправляемогоПакетаЧерезПочту
                        ,@ПравилаОбмена
                        ,@ПравилаОбменаДляПриемника
                        ,@ДобавлениеОбъектовИзФоновогоОбмена
                        ,@КоличествоОбъектовДляФоновогоОбмена
                        ,@OnLineОбмен
                        ,@ТипИнформационнойБазыДляПодключения
                        ,@КаталогИнформационнойБазыДляПодключения
                        ,@ИмяСервераИнформационнойБазыДляПодключения
                        ,@ИмяИнформационнойБазыНаСервереДляПодключения
                        ,@АутентификацияWindowsИнформационнойБазыДляПодключения
                        ,@ПользовательИнформационнойБазыДляПодключения
                        ,@ПарольИнформационнойБазыДляПодключения
                        ,@ВерсияПлатформыИнформационнойБазыДляПодключения
                        ,@РежимОтладкиOnLineОбмена
                        ,@ИмяФайлаПротоколаОбменаOnLineОбмен
                        ,@УчетнаяЗаписьОтправкиСообщенияОбОшибке
                        ,@АдресДляОтправкиСообщенийОбОшибке
                        ,@ПослеОшибкиОтложенногоПроведенияПрекратитьОперации
                        ,@КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации
                        ,@ВыполнятьДействияПодПолнымиПравами
                        ,@ПроизводитьОтправкуТолькоПриУспешномПриеме
                        ,@ВыполнитьОтложенноеПроведениеДокументовПоРасписанию
                        ,@ПользовательПроксиFTP
                        ,@ПарольПроксиFTP
                        ,@СерверПроксиFTP
                        ,@ПортПроксиFTP
                        ,@ПротоколПроксиFTP)";
                    }
                    else
                    {
                        Команда.CommandText = @"
                        Update _Reference93
                        Set
                        /*_IDRRef	= @Ссылка*/
                        /*,_Version	= @Версия*/
                        _Marked	= @ПометкаУдаления
                        ,_IsMetadata	= @Предопределенный
                        ,_Code	= @Код
                        ,_Description	= @Наименование
                        ,_Fld1375RRef	= @ТипНастройки
                        ,_Fld1378	= @ПроизводитьПриемСообщений
                        ,_Fld1379	= @ПроизводитьОтправкуСообщений
                        ,_Fld1380	= @КоличествоЭлементовВТранзакцииНаВыгрузкуДанных
                        ,_Fld1381	= @КоличествоЭлементовВТранзакцииНаЗагрузкуДанных
                        ,_Fld1382	= @ВыполнятьАрхивациюФайловОбмена
                        ,_Fld1383	= @ПарольНаОтправку
                        ,_Fld1384	= @ПарольНаПрием
                        ,_Fld1404	= @КаталогОбменаИнформацией
                        ,_Fld1405	= @FTPАдресОбмена
                        ,_Fld1406	= @ПортFTPСоединения
                        ,_Fld1407	= @ПользовательFTPСоединения
                        ,_Fld1408	= @ПарольFTPСоединения
                        ,_Fld1412	= @Комментарий
                        ,_Fld19456	= @МаксимальныйРазмерОтправляемогоПолучаемогоПакетаЧерезFTP
                        ,_Fld19462	= @ПассивноеFTPСоединение
                        ,_Fld1411	= @ПочтовыйАдресПолучателя
                        ,_Fld1409RRef	= @УчетнаяЗаписьПриемаОтправкиСообщений
                        ,_Fld1410	= @АвтоматическиЗакачиватьПочтуПриОбмене
                        ,_Fld19455	= @МаксимальныйРазмерОтправляемогоПакетаЧерезПочту
                        ,_Fld21242	= @ПравилаОбмена
                        ,_Fld21243	= @ПравилаОбменаДляПриемника
                        ,_Fld21244	= @ДобавлениеОбъектовИзФоновогоОбмена
                        ,_Fld21245	= @КоличествоОбъектовДляФоновогоОбмена
                        ,_Fld21246	= @OnLineОбмен
                        ,_Fld21247	= @ТипИнформационнойБазыДляПодключения
                        ,_Fld21248	= @КаталогИнформационнойБазыДляПодключения
                        ,_Fld21249	= @ИмяСервераИнформационнойБазыДляПодключения
                        ,_Fld21250	= @ИмяИнформационнойБазыНаСервереДляПодключения
                        ,_Fld21251	= @АутентификацияWindowsИнформационнойБазыДляПодключения
                        ,_Fld21252	= @ПользовательИнформационнойБазыДляПодключения
                        ,_Fld21253	= @ПарольИнформационнойБазыДляПодключения
                        ,_Fld21254	= @ВерсияПлатформыИнформационнойБазыДляПодключения
                        ,_Fld21256	= @РежимОтладкиOnLineОбмена
                        ,_Fld21257	= @ИмяФайлаПротоколаОбменаOnLineОбмен
                        ,_Fld21259RRef	= @УчетнаяЗаписьОтправкиСообщенияОбОшибке
                        ,_Fld21260	= @АдресДляОтправкиСообщенийОбОшибке
                        ,_Fld21262	= @ПослеОшибкиОтложенногоПроведенияПрекратитьОперации
                        ,_Fld21263	= @КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации
                        ,_Fld21267	= @ВыполнятьДействияПодПолнымиПравами
                        ,_Fld21268	= @ПроизводитьОтправкуТолькоПриУспешномПриеме
                        ,_Fld21265	= @ВыполнитьОтложенноеПроведениеДокументовПоРасписанию
                        ,_Fld22936	= @ПользовательПроксиFTP
                        ,_Fld22937	= @ПарольПроксиFTP
                        ,_Fld22938	= @СерверПроксиFTP
                        ,_Fld22939	= @ПортПроксиFTP
                        ,_Fld22940	= @ПротоколПроксиFTP
                        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("FTPАдресОбмена", FTPАдресОбмена);
                    Команда.Parameters.AddWithValue("ПортFTPСоединения", ПортFTPСоединения);
                    Команда.Parameters.AddWithValue("ПользовательFTPСоединения", ПользовательFTPСоединения);
                    Команда.Parameters.AddWithValue("ПарольFTPСоединения", ПарольFTPСоединения);
                    Команда.Parameters.AddWithValue("Комментарий", Комментарий);
                    Команда.Parameters.AddWithValue("МаксимальныйРазмерОтправляемогоПолучаемогоПакетаЧерезFTP", МаксимальныйРазмерОтправляемогоПолучаемогоПакетаЧерезFTP);
                    Команда.Parameters.AddWithValue("ПассивноеFTPСоединение", ПассивноеFTPСоединение);
                    Команда.Parameters.AddWithValue("ПочтовыйАдресПолучателя", ПочтовыйАдресПолучателя);
                    Команда.Parameters.AddWithValue("УчетнаяЗаписьПриемаОтправкиСообщений", УчетнаяЗаписьПриемаОтправкиСообщений.Ссылка);
                    Команда.Parameters.AddWithValue("АвтоматическиЗакачиватьПочтуПриОбмене", АвтоматическиЗакачиватьПочтуПриОбмене);
                    Команда.Parameters.AddWithValue("МаксимальныйРазмерОтправляемогоПакетаЧерезПочту", МаксимальныйРазмерОтправляемогоПакетаЧерезПочту);
                    Команда.Parameters.AddWithValue("ПравилаОбмена",new byte[0]);
                    Команда.Parameters.AddWithValue("ПравилаОбменаДляПриемника",new byte[0]);
                    Команда.Parameters.AddWithValue("ДобавлениеОбъектовИзФоновогоОбмена", ДобавлениеОбъектовИзФоновогоОбмена);
                    Команда.Parameters.AddWithValue("КоличествоОбъектовДляФоновогоОбмена", КоличествоОбъектовДляФоновогоОбмена);
                    Команда.Parameters.AddWithValue("OnLineОбмен", OnLineОбмен);
                    Команда.Parameters.AddWithValue("ТипИнформационнойБазыДляПодключения", ТипИнформационнойБазыДляПодключения);
                    Команда.Parameters.AddWithValue("КаталогИнформационнойБазыДляПодключения", КаталогИнформационнойБазыДляПодключения);
                    Команда.Parameters.AddWithValue("ИмяСервераИнформационнойБазыДляПодключения", ИмяСервераИнформационнойБазыДляПодключения);
                    Команда.Parameters.AddWithValue("ИмяИнформационнойБазыНаСервереДляПодключения", ИмяИнформационнойБазыНаСервереДляПодключения);
                    Команда.Parameters.AddWithValue("АутентификацияWindowsИнформационнойБазыДляПодключения", АутентификацияWindowsИнформационнойБазыДляПодключения);
                    Команда.Parameters.AddWithValue("ПользовательИнформационнойБазыДляПодключения", ПользовательИнформационнойБазыДляПодключения);
                    Команда.Parameters.AddWithValue("ПарольИнформационнойБазыДляПодключения", ПарольИнформационнойБазыДляПодключения);
                    Команда.Parameters.AddWithValue("ВерсияПлатформыИнформационнойБазыДляПодключения", ВерсияПлатформыИнформационнойБазыДляПодключения);
                    Команда.Parameters.AddWithValue("РежимОтладкиOnLineОбмена", РежимОтладкиOnLineОбмена);
                    Команда.Parameters.AddWithValue("ИмяФайлаПротоколаОбменаOnLineОбмен", ИмяФайлаПротоколаОбменаOnLineОбмен);
                    Команда.Parameters.AddWithValue("УчетнаяЗаписьОтправкиСообщенияОбОшибке", УчетнаяЗаписьОтправкиСообщенияОбОшибке.Ссылка);
                    Команда.Parameters.AddWithValue("АдресДляОтправкиСообщенийОбОшибке", АдресДляОтправкиСообщенийОбОшибке);
                    Команда.Parameters.AddWithValue("ПослеОшибкиОтложенногоПроведенияПрекратитьОперации", ПослеОшибкиОтложенногоПроведенияПрекратитьОперации);
                    Команда.Parameters.AddWithValue("КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации", КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации);
                    Команда.Parameters.AddWithValue("ВыполнятьДействияПодПолнымиПравами", ВыполнятьДействияПодПолнымиПравами);
                    Команда.Parameters.AddWithValue("ПроизводитьОтправкуТолькоПриУспешномПриеме", ПроизводитьОтправкуТолькоПриУспешномПриеме);
                    Команда.Parameters.AddWithValue("ВыполнитьОтложенноеПроведениеДокументовПоРасписанию", ВыполнитьОтложенноеПроведениеДокументовПоРасписанию);
                    Команда.Parameters.AddWithValue("ПользовательПроксиFTP", ПользовательПроксиFTP);
                    Команда.Parameters.AddWithValue("ПарольПроксиFTP", ПарольПроксиFTP);
                    Команда.Parameters.AddWithValue("СерверПроксиFTP", СерверПроксиFTP);
                    Команда.Parameters.AddWithValue("ПортПроксиFTP", ПортПроксиFTP);
                    Команда.Parameters.AddWithValue("ПротоколПроксиFTP", ПротоколПроксиFTP);
                    Команда.ExecuteNonQuery();
                }
            }
        }