Exemplo n.º 1
0
        }                                                         //Протокол прокси FTP
        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();
                }
            }
        }
        }                                                               //Краткий состав настройки
        public void Записать()
        {
            //Установка блокировки элемента на горизантально масштабированный кластер.
            //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
            //Выделение сервиса для блокировки элемента и генерации кода
            //Выполнение операций контроля без обращений к sql-серверу.
            //Контроль конфликта блокировок.
            //Контроль загрузки булкинсертом гетерогенной коллекции.
            //Контроль уникальности кода для справочников.
            //Контроль уникальности номера для документов, в границах префикса.
            //Контроль владельца, он не может быть группой.
            //Контроль владельца он должен быть задан.
            //Контроль родителя он должен быть группой.
            //Контроль количества уровней, должен соотвествовать метаданным.
            //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
            //Контроль уникальности ссылки
            //Контроль зацикливания
            //Опционально контроль битых ссылок.
            //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
            using (var Подключение = new SqlConnection(СтрокаСоединения))
            {
                Подключение.Open();
                using (var Команда = Подключение.CreateCommand())
                {
                    if (_ЭтоНовый)
                    {
                        Команда.CommandText = @"
						Insert Into _Reference19651(
						_IDRRef
						/*,_Version*/
						,_Marked
						,_IsMetadata
						,_Description
						,_Fld19877RRef
						,_Fld19879
						,_Fld19880
						,_Fld19881
						,_Fld19882
						,_Fld19883
						,_Fld19884
						,_Fld26609)
						Values(
						@Ссылка
						/*,@Версия*/
						,@ПометкаУдаления
						,@Предопределенный
						,@Наименование
						,@ТипНастройки
						,@СохранятьАвтоматически
						,@ИспользоватьПриОткрытии
						,@СохранятьПериод
						,@ОткрыватьПриЗапуске
						,@ХранилищеНастроек
						,@Описание
						,@КраткийСоставНастройки)"                        ;
                    }
                    else
                    {
                        Команда.CommandText = @"
						Update _Reference19651
						Set
						/*_IDRRef	= @Ссылка*/
						/*,_Version	= @Версия*/
						_Marked	= @ПометкаУдаления
						,_IsMetadata	= @Предопределенный
						,_Description	= @Наименование
						,_Fld19877RRef	= @ТипНастройки
						,_Fld19879	= @СохранятьАвтоматически
						,_Fld19880	= @ИспользоватьПриОткрытии
						,_Fld19881	= @СохранятьПериод
						,_Fld19882	= @ОткрыватьПриЗапуске
						,_Fld19883	= @ХранилищеНастроек
						,_Fld19884	= @Описание
						,_Fld26609	= @КраткийСоставНастройки
						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("ХранилищеНастроек", new byte[0]);
                    Команда.Parameters.AddWithValue("Описание", Описание);
                    Команда.Parameters.AddWithValue("КраткийСоставНастройки", КраткийСоставНастройки);
                    Команда.ExecuteNonQuery();
                }
            }
        }