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 _Document452(
                        _IDRRef
                        /*,_Version*/
                        ,_Marked
                        ,_IsMetadata
                        ,_Number
                        ,_Fld11506
                        ,_Fld11507RRef
                        ,_Fld11508RRef
                        ,_Fld11509RRef
                        ,_Fld11510
                        ,_Fld11511RRef
                        ,_Fld11512
                        ,_Fld11515
                        ,_Fld11516
                        ,_Fld11517
                        ,_Fld11518
                        ,_Fld11520RRef
                        ,_Fld11521RRef
                        ,_Fld11522RRef
                        ,_Fld11523
                        ,_Fld11524RRef
                        ,_Fld11525RRef
                        ,_Fld11526RRef
                        ,_Fld11527RRef
                        ,_Fld11528
                        ,_Fld11529RRef
                        ,_Fld11530
                        ,_Fld11531
                        ,_Fld22251RRef)
                        Values(
                        @Ссылка
                        /*,@Версия*/
                        ,@ПометкаУдаления
                        ,@Номер
                        ,@АдресЭлектроннойПочты
                        ,@Важность
                        ,@ВидОбъекта
                        ,@ВидСобытия
                        ,@ВремяНапоминания
                        ,@ИсточникИнформацииПриОбращении
                        ,@Комментарий
                        ,@НапомнитьОСобытии
                        ,@НачалоСобытия
                        ,@ОкончаниеСобытия
                        ,@ОписаниеСобытия
                        ,@Ответственный
                        ,@Помещение
                        ,@Проект
                        ,@СодержаниеСобытия
                        ,@СостояниеСобытия
                        ,@Территория
                        ,@ТипСобытия
                        ,@ГруппаСобытия
                        ,@ЕстьВложения
                        ,@КонтактноеЛицоБезКонтрагента
                        ,@ИнтервалНапоминания
                        ,@ПредметКонтакта
                        ,@ЗаявкаКандидата)";
                    }
                    else
                    {
                        Команда.CommandText = @"
                        Update _Document452
                        Set
                        /*_IDRRef	= @Ссылка*/
                        /*,_Version	= @Версия*/
                        _Marked	= @ПометкаУдаления
                        ,_Number	= @Номер
                        ,_Fld11506	= @АдресЭлектроннойПочты
                        ,_Fld11507RRef	= @Важность
                        ,_Fld11508RRef	= @ВидОбъекта
                        ,_Fld11509RRef	= @ВидСобытия
                        ,_Fld11510	= @ВремяНапоминания
                        ,_Fld11511RRef	= @ИсточникИнформацииПриОбращении
                        ,_Fld11512	= @Комментарий
                        ,_Fld11515	= @НапомнитьОСобытии
                        ,_Fld11516	= @НачалоСобытия
                        ,_Fld11517	= @ОкончаниеСобытия
                        ,_Fld11518	= @ОписаниеСобытия
                        ,_Fld11520RRef	= @Ответственный
                        ,_Fld11521RRef	= @Помещение
                        ,_Fld11522RRef	= @Проект
                        ,_Fld11523	= @СодержаниеСобытия
                        ,_Fld11524RRef	= @СостояниеСобытия
                        ,_Fld11525RRef	= @Территория
                        ,_Fld11526RRef	= @ТипСобытия
                        ,_Fld11527RRef	= @ГруппаСобытия
                        ,_Fld11528	= @ЕстьВложения
                        ,_Fld11529RRef	= @КонтактноеЛицоБезКонтрагента
                        ,_Fld11530	= @ИнтервалНапоминания
                        ,_Fld11531	= @ПредметКонтакта
                        ,_Fld22251RRef	= @ЗаявкаКандидата
                        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("СостояниеСобытия", СостояниеСобытия.Ключ());
                    Команда.Parameters.AddWithValue("ТипСобытия", ТипСобытия.Ключ());
                    Команда.Parameters.AddWithValue("ЕстьВложения", ЕстьВложения);
                    Команда.Parameters.AddWithValue("ИнтервалНапоминания", ИнтервалНапоминания);
                    Команда.Parameters.AddWithValue("ПредметКонтакта", ПредметКонтакта);
                    Команда.ExecuteNonQuery();
                }
            }
        }