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 _Reference189(
                        _IDRRef
                        /*,_Version*/
                        ,_Marked
                        ,_IsMetadata
                        ,_Code
                        ,_Description
                        ,_Fld2144
                        ,_Fld2145
                        ,_Fld2146
                        ,_Fld2147
                        ,_Fld2148
                        ,_Fld2149
                        ,_Fld2150
                        ,_Fld2151
                        ,_Fld2152
                        ,_Fld2153
                        ,_Fld2154
                        ,_Fld2155
                        ,_Fld2156
                        ,_Fld2157
                        ,_Fld2158RRef
                        ,_Fld2159RRef
                        ,_Fld2160RRef
                        ,_Fld2161RRef
                        ,_Fld21295RRef
                        ,_Fld2162RRef
                        ,_Fld2163
                        ,_Fld2164
                        ,_Fld2165
                        ,_Fld2166
                        ,_Fld2167
                        ,_Fld2168RRef
                        ,_Fld2169
                        ,_Fld2170RRef
                        ,_Fld2171
                        ,_Fld2172
                        ,_Fld2180
                        ,_Fld2181
                        ,_Fld2173
                        ,_Fld2174
                        ,_Fld2175
                        ,_Fld2176
                        ,_Fld2182
                        ,_Fld2177
                        ,_Fld2178
                        ,_Fld2179
                        ,_Fld2183
                        ,_Fld2184
                        ,_Fld2185
                        ,_Fld21296RRef
                        ,_Fld26646
                        ,_Fld26647)
                        Values(
                        @Ссылка
                        /*,@Версия*/
                        ,@ПометкаУдаления
                        ,@Предопределенный
                        ,@Код
                        ,@Наименование
                        ,@SMTPСервер
                        ,@POP3Сервер
                        ,@ПортSMTP
                        ,@ПортPOP3
                        ,@Логин
                        ,@Пароль
                        ,@ТребуетсяSMTPАутентификация
                        ,@ЛогинSMTP
                        ,@ПарольSMTP
                        ,@ВремяОжиданияСервера
                        ,@ОставлятьКопииСообщенийНаСервере
                        ,@УдалятьПисьмаССервераЧерез
                        ,@КоличествоДнейУдаленияПисемССервера
                        ,@АдресЭлектроннойПочты
                        ,@ГруппаВходящие
                        ,@ГруппаИсходящие
                        ,@ГруппаУдаленные
                        ,@ГруппаЧерновики
                        ,@ГруппаНежелательные
                        ,@ФорматТекстаПисьмаПоУмолчанию
                        ,@ТекстПодписи
                        ,@ДобавлятьПодписьКИсходящимПисьмам
                        ,@ДобавлятьПодписьКОтветамИПересылкам
                        ,@АвтоПолучениеОтправкаСообщений
                        ,@ИнтервалАвтоПолученияОтправкиСообщений
                        ,@ОтветственныйЗаАвтоПолучениеОтправкуСообщений
                        ,@ПомещатьОтветыИПереадресацииВТужеГруппу
                        ,@ДействиеАвтополученияОтправкиСообщений
                        ,@АвтоматическаяУстановкаПометкиРассмотрено
                        ,@ИнтервалАвтоматическойУстановкиОтметкиРассмотрено
                        ,@АвтоматическаяУстановкаПометкиРассмотреноПриОтвете
                        ,@АвтоматическаяУстановкаПометкиРассмотреноПриПолученииОтвета
                        ,@ИспользоватьКлассификациюПисемПоПредметам
                        ,@ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма
                        ,@ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьПредмет
                        ,@ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьОснованиеНовогоПисьма
                        ,@ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьГруппуПисемНовогоПисьма
                        ,@АвтосохранениеПисем
                        ,@ИнтервалАвтосохраненияПисем
                        ,@ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного
                        ,@КодировкаПисемПоУмолчанию
                        ,@КодировкуПисьмаДляОтветовБратьИзИсходного
                        ,@ЗаполнятьОбъектыИзАдресовПервогоПисьма
                        ,@НазначениеУчетнойЗаписи
                        ,@ИспользоватьДляОтправки
                        ,@ИспользоватьДляПолучения)";
                    }
                    else
                    {
                        Команда.CommandText = @"
                        Update _Reference189
                        Set
                        /*_IDRRef	= @Ссылка*/
                        /*,_Version	= @Версия*/
                        _Marked	= @ПометкаУдаления
                        ,_IsMetadata	= @Предопределенный
                        ,_Code	= @Код
                        ,_Description	= @Наименование
                        ,_Fld2144	= @SMTPСервер
                        ,_Fld2145	= @POP3Сервер
                        ,_Fld2146	= @ПортSMTP
                        ,_Fld2147	= @ПортPOP3
                        ,_Fld2148	= @Логин
                        ,_Fld2149	= @Пароль
                        ,_Fld2150	= @ТребуетсяSMTPАутентификация
                        ,_Fld2151	= @ЛогинSMTP
                        ,_Fld2152	= @ПарольSMTP
                        ,_Fld2153	= @ВремяОжиданияСервера
                        ,_Fld2154	= @ОставлятьКопииСообщенийНаСервере
                        ,_Fld2155	= @УдалятьПисьмаССервераЧерез
                        ,_Fld2156	= @КоличествоДнейУдаленияПисемССервера
                        ,_Fld2157	= @АдресЭлектроннойПочты
                        ,_Fld2158RRef	= @ГруппаВходящие
                        ,_Fld2159RRef	= @ГруппаИсходящие
                        ,_Fld2160RRef	= @ГруппаУдаленные
                        ,_Fld2161RRef	= @ГруппаЧерновики
                        ,_Fld21295RRef	= @ГруппаНежелательные
                        ,_Fld2162RRef	= @ФорматТекстаПисьмаПоУмолчанию
                        ,_Fld2163	= @ТекстПодписи
                        ,_Fld2164	= @ДобавлятьПодписьКИсходящимПисьмам
                        ,_Fld2165	= @ДобавлятьПодписьКОтветамИПересылкам
                        ,_Fld2166	= @АвтоПолучениеОтправкаСообщений
                        ,_Fld2167	= @ИнтервалАвтоПолученияОтправкиСообщений
                        ,_Fld2168RRef	= @ОтветственныйЗаАвтоПолучениеОтправкуСообщений
                        ,_Fld2169	= @ПомещатьОтветыИПереадресацииВТужеГруппу
                        ,_Fld2170RRef	= @ДействиеАвтополученияОтправкиСообщений
                        ,_Fld2171	= @АвтоматическаяУстановкаПометкиРассмотрено
                        ,_Fld2172	= @ИнтервалАвтоматическойУстановкиОтметкиРассмотрено
                        ,_Fld2180	= @АвтоматическаяУстановкаПометкиРассмотреноПриОтвете
                        ,_Fld2181	= @АвтоматическаяУстановкаПометкиРассмотреноПриПолученииОтвета
                        ,_Fld2173	= @ИспользоватьКлассификациюПисемПоПредметам
                        ,_Fld2174	= @ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма
                        ,_Fld2175	= @ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьПредмет
                        ,_Fld2176	= @ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьОснованиеНовогоПисьма
                        ,_Fld2182	= @ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьГруппуПисемНовогоПисьма
                        ,_Fld2177	= @АвтосохранениеПисем
                        ,_Fld2178	= @ИнтервалАвтосохраненияПисем
                        ,_Fld2179	= @ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного
                        ,_Fld2183	= @КодировкаПисемПоУмолчанию
                        ,_Fld2184	= @КодировкуПисьмаДляОтветовБратьИзИсходного
                        ,_Fld2185	= @ЗаполнятьОбъектыИзАдресовПервогоПисьма
                        ,_Fld21296RRef	= @НазначениеУчетнойЗаписи
                        ,_Fld26646	= @ИспользоватьДляОтправки
                        ,_Fld26647	= @ИспользоватьДляПолучения
                        Where _IDRRef = @Ссылка";
                    }
                    Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
                    /*Команда.Parameters.AddWithValue("Версия", Версия);*/
                    Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления);
                    Команда.Parameters.AddWithValue("Предопределенный", Предопределенный);
                    Команда.Parameters.AddWithValue("Код", Код);
                    Команда.Parameters.AddWithValue("Наименование", Наименование);
                    Команда.Parameters.AddWithValue("SMTPСервер", SMTPСервер);
                    Команда.Parameters.AddWithValue("POP3Сервер", POP3Сервер);
                    Команда.Parameters.AddWithValue("ПортSMTP", ПортSMTP);
                    Команда.Parameters.AddWithValue("ПортPOP3", ПортPOP3);
                    Команда.Parameters.AddWithValue("Логин", Логин);
                    Команда.Parameters.AddWithValue("Пароль", Пароль);
                    Команда.Parameters.AddWithValue("ТребуетсяSMTPАутентификация", ТребуетсяSMTPАутентификация);
                    Команда.Parameters.AddWithValue("ЛогинSMTP", ЛогинSMTP);
                    Команда.Parameters.AddWithValue("ПарольSMTP", ПарольSMTP);
                    Команда.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("АвтосохранениеПисем", АвтосохранениеПисем);
                    Команда.Parameters.AddWithValue("ИнтервалАвтосохраненияПисем", ИнтервалАвтосохраненияПисем);
                    Команда.Parameters.AddWithValue("ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного", ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного);
                    Команда.Parameters.AddWithValue("КодировкаПисемПоУмолчанию", КодировкаПисемПоУмолчанию);
                    Команда.Parameters.AddWithValue("КодировкуПисьмаДляОтветовБратьИзИсходного", КодировкуПисьмаДляОтветовБратьИзИсходного);
                    Команда.Parameters.AddWithValue("ЗаполнятьОбъектыИзАдресовПервогоПисьма", ЗаполнятьОбъектыИзАдресовПервогоПисьма);
                    Команда.Parameters.AddWithValue("НазначениеУчетнойЗаписи", НазначениеУчетнойЗаписи.Ключ());
                    Команда.Parameters.AddWithValue("ИспользоватьДляОтправки", ИспользоватьДляОтправки);
                    Команда.Parameters.AddWithValue("ИспользоватьДляПолучения", ИспользоватьДляПолучения);
                    Команда.ExecuteNonQuery();
                }
            }
        }