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 _Reference19650(
                        _IDRRef
                        /*,_Version*/
                        ,_Marked
                        ,_IsMetadata
                        ,_ParentIDRRef
                        ,_Folder
                        ,_Code
                        ,_Description
                        ,_Fld19823RRef
                        ,_Fld19824
                        ,_Fld19825RRef
                        ,_Fld19826RRef
                        ,_Fld19827RRef
                        ,_Fld19828RRef
                        ,_Fld19829
                        ,_Fld19830
                        ,_Fld19831RRef
                        ,_Fld19832RRef
                        ,_Fld19833RRef
                        ,_Fld19834
                        ,_Fld19835
                        ,_Fld19836
                        ,_Fld19837
                        ,_Fld19838RRef
                        ,_Fld19839
                        ,_Fld19840RRef
                        ,_Fld19841
                        ,_Fld19842RRef
                        ,_Fld26595RRef
                        ,_Fld26596RRef
                        ,_Fld26597RRef
                        ,_Fld26598
                        ,_Fld26599
                        ,_Fld26600RRef
                        ,_Fld26601RRef
                        ,_Fld26602
                        ,_Fld26603
                        ,_Fld26604)
                        Values(
                        @Ссылка
                        /*,@Версия*/
                        ,@ПометкаУдаления
                        ,@Предопределенный
                        ,@Родитель
                        ,@ЭтоГруппа
                        ,@Код
                        ,@Наименование
                        ,@Физлицо
                        ,@Актуальность
                        ,@Организация
                        ,@ОбособленноеПодразделение
                        ,@ВидДоговора
                        ,@ВидЗанятости
                        ,@НомерДоговора
                        ,@ДатаДоговора
                        ,@ГрафикРаботы
                        ,@ПодразделениеОрганизации
                        ,@Должность
                        ,@ЗанимаемыхСтавок
                        ,@ДатаНачала
                        ,@ДатаОкончания
                        ,@ИспытательныйСрок
                        ,@ВидРасчета
                        ,@ТарифнаяСтавка
                        ,@ВалютаТарифнойСтавки
                        ,@ПостфиксНаименования
                        ,@ТарифныйРазряд
                        ,@ТекущееОбособленноеПодразделение
                        ,@ТекущееПодразделениеОрганизации
                        ,@ТекущаяДолжностьОрганизации
                        ,@ДатаПриемаНаРаботу
                        ,@ДатаУвольнения
                        ,@ТекущееПодразделениеКомпании
                        ,@ТекущаяДолжностьКомпании
                        ,@ДатаПриемаНаРаботуВКомпанию
                        ,@ДатаУвольненияИзКомпании
                        ,@ЯвляетсяСтудентомРаботающимВСтудотряде)";
                    }
                    else
                    {
                        Команда.CommandText = @"
                        Update _Reference19650
                        Set
                        /*_IDRRef	= @Ссылка*/
                        /*,_Version	= @Версия*/
                        _Marked	= @ПометкаУдаления
                        ,_IsMetadata	= @Предопределенный
                        ,_ParentIDRRef	= @Родитель
                        ,_Folder	= @ЭтоГруппа
                        ,_Code	= @Код
                        ,_Description	= @Наименование
                        ,_Fld19823RRef	= @Физлицо
                        ,_Fld19824	= @Актуальность
                        ,_Fld19825RRef	= @Организация
                        ,_Fld19826RRef	= @ОбособленноеПодразделение
                        ,_Fld19827RRef	= @ВидДоговора
                        ,_Fld19828RRef	= @ВидЗанятости
                        ,_Fld19829	= @НомерДоговора
                        ,_Fld19830	= @ДатаДоговора
                        ,_Fld19831RRef	= @ГрафикРаботы
                        ,_Fld19832RRef	= @ПодразделениеОрганизации
                        ,_Fld19833RRef	= @Должность
                        ,_Fld19834	= @ЗанимаемыхСтавок
                        ,_Fld19835	= @ДатаНачала
                        ,_Fld19836	= @ДатаОкончания
                        ,_Fld19837	= @ИспытательныйСрок
                        ,_Fld19838RRef	= @ВидРасчета
                        ,_Fld19839	= @ТарифнаяСтавка
                        ,_Fld19840RRef	= @ВалютаТарифнойСтавки
                        ,_Fld19841	= @ПостфиксНаименования
                        ,_Fld19842RRef	= @ТарифныйРазряд
                        ,_Fld26595RRef	= @ТекущееОбособленноеПодразделение
                        ,_Fld26596RRef	= @ТекущееПодразделениеОрганизации
                        ,_Fld26597RRef	= @ТекущаяДолжностьОрганизации
                        ,_Fld26598	= @ДатаПриемаНаРаботу
                        ,_Fld26599	= @ДатаУвольнения
                        ,_Fld26600RRef	= @ТекущееПодразделениеКомпании
                        ,_Fld26601RRef	= @ТекущаяДолжностьКомпании
                        ,_Fld26602	= @ДатаПриемаНаРаботуВКомпанию
                        ,_Fld26603	= @ДатаУвольненияИзКомпании
                        ,_Fld26604	= @ЯвляетсяСтудентомРаботающимВСтудотряде
                        Where _IDRRef = @Ссылка";
                    }
                    Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
                    /*Команда.Parameters.AddWithValue("Версия", Версия);*/
                    Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления);
                    Команда.Parameters.AddWithValue("Предопределенный", Предопределенный);
                    Команда.Parameters.AddWithValue("Родитель", Родитель);
                    Команда.Parameters.AddWithValue("ЭтоГруппа", ЭтоГруппа?new byte[]{0}:new byte[]{1});
                    Команда.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("ВидРасчета", Guid.Empty);
                    Команда.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();
                }
            }
        }