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 _Reference36(
                        _IDRRef
                        /*,_Version*/
                        ,_Marked
                        ,_IsMetadata
                        ,_Description
                        ,_Fld1007RRef
                        ,_Fld1008
                        ,_Fld1009RRef
                        ,_Fld1010RRef
                        ,_Fld1011
                        ,_Fld1012
                        ,_Fld1013
                        ,_Fld1014RRef
                        ,_Fld1015
                        ,_Fld1016
                        ,_Fld1017
                        ,_Fld21225
                        ,_Fld21226
                        ,_Fld26515
                        ,_Fld26516
                        ,_Fld26517
                        ,_Fld26518RRef
                        ,_Fld21224)
                        Values(
                        @Ссылка
                        /*,@Версия*/
                        ,@ПометкаУдаления
                        ,@Предопределенный
                        ,@Наименование
                        ,@ВидГрафика
                        ,@СуммированныйУчетРабочегоВремени
                        ,@ПервыйВыходной
                        ,@ВторойВыходной
                        ,@ДатаОтсчета
                        ,@ДлительностьРабочейНедели
                        ,@СокращенноеРабочееВремя
                        ,@ГрафикПолногоРабочегоВремени
                        ,@НачалоДневныхЧасов
                        ,@НачалоВечернихЧасов
                        ,@НачалоНочныхЧасов
                        ,@СокращеннаяРабочаяНеделя
                        ,@НеполныйРабочийДень
                        ,@УчитыватьПраздники
                        ,@УчитыватьВечерниеЧасы
                        ,@УчитыватьНочныеЧасы
                        ,@ШаблонЗаполнения
                        ,@УдалитьВыходныеПоСкользящемуГрафику)";
                    }
                    else
                    {
                        Команда.CommandText = @"
                        Update _Reference36
                        Set
                        /*_IDRRef	= @Ссылка*/
                        /*,_Version	= @Версия*/
                        _Marked	= @ПометкаУдаления
                        ,_IsMetadata	= @Предопределенный
                        ,_Description	= @Наименование
                        ,_Fld1007RRef	= @ВидГрафика
                        ,_Fld1008	= @СуммированныйУчетРабочегоВремени
                        ,_Fld1009RRef	= @ПервыйВыходной
                        ,_Fld1010RRef	= @ВторойВыходной
                        ,_Fld1011	= @ДатаОтсчета
                        ,_Fld1012	= @ДлительностьРабочейНедели
                        ,_Fld1013	= @СокращенноеРабочееВремя
                        ,_Fld1014RRef	= @ГрафикПолногоРабочегоВремени
                        ,_Fld1015	= @НачалоДневныхЧасов
                        ,_Fld1016	= @НачалоВечернихЧасов
                        ,_Fld1017	= @НачалоНочныхЧасов
                        ,_Fld21225	= @СокращеннаяРабочаяНеделя
                        ,_Fld21226	= @НеполныйРабочийДень
                        ,_Fld26515	= @УчитыватьПраздники
                        ,_Fld26516	= @УчитыватьВечерниеЧасы
                        ,_Fld26517	= @УчитыватьНочныеЧасы
                        ,_Fld26518RRef	= @ШаблонЗаполнения
                        ,_Fld21224	= @УдалитьВыходныеПоСкользящемуГрафику
                        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("УчитыватьВечерниеЧасы", УчитыватьВечерниеЧасы);
                    Команда.Parameters.AddWithValue("УчитыватьНочныеЧасы", УчитыватьНочныеЧасы);
                    Команда.Parameters.AddWithValue("ШаблонЗаполнения", ШаблонЗаполнения.Ключ());
                    Команда.Parameters.AddWithValue("УдалитьВыходныеПоСкользящемуГрафику", УдалитьВыходныеПоСкользящемуГрафику);
                    Команда.ExecuteNonQuery();
                }
            }
        }