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 _Reference45(
                        _IDRRef
                        /*,_Version*/
                        ,_Marked
                        ,_IsMetadata
                        ,_OwnerIDRRef
                        ,_ParentIDRRef
                        ,_Folder
                        ,_Code
                        ,_Description
                        ,_Fld1062RRef
                        ,_Fld1063RRef
                        ,_Fld1069
                        ,_Fld1065RRef
                        ,_Fld1066
                        ,_Fld1067
                        ,_Fld1068
                        ,_Fld1073RRef
                        ,_Fld1070
                        ,_Fld1071
                        ,_Fld1072
                        ,_Fld1074
                        ,_Fld1076RRef
                        ,_Fld1075
                        ,_Fld1079RRef
                        ,_Fld1078
                        ,_Fld1080
                        ,_Fld1081RRef
                        ,_Fld1083
                        ,_Fld1082
                        ,_Fld1086
                        ,_Fld1084
                        ,_Fld1085
                        ,_Fld1064RRef
                        ,_Fld1087
                        ,_Fld1090RRef
                        ,_Fld1091
                        ,_Fld26523RRef
                        ,_Fld26524RRef
                        ,_Fld26525
                        ,_Fld26526
                        ,_Fld26527)
                        Values(
                        @Ссылка
                        /*,@Версия*/
                        ,@ПометкаУдаления
                        ,@Предопределенный
                        ,@Владелец
                        ,@Родитель
                        ,@ЭтоГруппа
                        ,@Код
                        ,@Наименование
                        ,@ВалютаВзаиморасчетов
                        ,@ВедениеВзаиморасчетов
                        ,@Комментарий
                        ,@ВидУсловийДоговора
                        ,@ДержатьРезервБезОплатыОграниченноеВремя
                        ,@ДопустимаяСуммаЗадолженности
                        ,@ДопустимоеЧислоДнейЗадолженности
                        ,@Организация
                        ,@КонтролироватьСуммуЗадолженности
                        ,@КонтролироватьЧислоДнейЗадолженности
                        ,@ОбособленныйУчетТоваровПоЗаказамПокупателей
                        ,@ПроцентКомиссионногоВознаграждения
                        ,@СпособРасчетаКомиссионногоВознаграждения
                        ,@ПроцентПредоплаты
                        ,@ВидДоговора
                        ,@ЧислоДнейРезерваБезОплаты
                        ,@УчетАгентскогоНДС
                        ,@ВидАгентскогоДоговора
                        ,@РасчетыВУсловныхЕдиницах
                        ,@КонтролироватьДенежныеСредстваКомитента
                        ,@РеализацияНаЭкспорт
                        ,@Дата
                        ,@Номер
                        ,@ВидВзаиморасчетов
                        ,@ВестиПоДокументамРасчетовСКонтрагентом
                        ,@ОсновнаяСтатьяДвиженияДенежныхСредств
                        ,@СрокДействия
                        ,@НаименованиеДляСчетаФактурыНаАванс
                        ,@ПорядокРегистрацииСчетовФактурНаАвансПоДоговору
                        ,@НалоговыйАгентПоОплате
                        ,@УстановленСрокОплатыДляРезервовПоСомнительнымДолгам
                        ,@СрокОплатыДляРезервовПоСомнительнымДолгам)";
                    }
                    else
                    {
                        Команда.CommandText = @"
                        Update _Reference45
                        Set
                        /*_IDRRef	= @Ссылка*/
                        /*,_Version	= @Версия*/
                        _Marked	= @ПометкаУдаления
                        ,_IsMetadata	= @Предопределенный
                        ,_OwnerIDRRef	= @Владелец
                        ,_ParentIDRRef	= @Родитель
                        ,_Folder	= @ЭтоГруппа
                        ,_Code	= @Код
                        ,_Description	= @Наименование
                        ,_Fld1062RRef	= @ВалютаВзаиморасчетов
                        ,_Fld1063RRef	= @ВедениеВзаиморасчетов
                        ,_Fld1069	= @Комментарий
                        ,_Fld1065RRef	= @ВидУсловийДоговора
                        ,_Fld1066	= @ДержатьРезервБезОплатыОграниченноеВремя
                        ,_Fld1067	= @ДопустимаяСуммаЗадолженности
                        ,_Fld1068	= @ДопустимоеЧислоДнейЗадолженности
                        ,_Fld1073RRef	= @Организация
                        ,_Fld1070	= @КонтролироватьСуммуЗадолженности
                        ,_Fld1071	= @КонтролироватьЧислоДнейЗадолженности
                        ,_Fld1072	= @ОбособленныйУчетТоваровПоЗаказамПокупателей
                        ,_Fld1074	= @ПроцентКомиссионногоВознаграждения
                        ,_Fld1076RRef	= @СпособРасчетаКомиссионногоВознаграждения
                        ,_Fld1075	= @ПроцентПредоплаты
                        ,_Fld1079RRef	= @ВидДоговора
                        ,_Fld1078	= @ЧислоДнейРезерваБезОплаты
                        ,_Fld1080	= @УчетАгентскогоНДС
                        ,_Fld1081RRef	= @ВидАгентскогоДоговора
                        ,_Fld1083	= @РасчетыВУсловныхЕдиницах
                        ,_Fld1082	= @КонтролироватьДенежныеСредстваКомитента
                        ,_Fld1086	= @РеализацияНаЭкспорт
                        ,_Fld1084	= @Дата
                        ,_Fld1085	= @Номер
                        ,_Fld1064RRef	= @ВидВзаиморасчетов
                        ,_Fld1087	= @ВестиПоДокументамРасчетовСКонтрагентом
                        ,_Fld1090RRef	= @ОсновнаяСтатьяДвиженияДенежныхСредств
                        ,_Fld1091	= @СрокДействия
                        ,_Fld26523RRef	= @НаименованиеДляСчетаФактурыНаАванс
                        ,_Fld26524RRef	= @ПорядокРегистрацииСчетовФактурНаАвансПоДоговору
                        ,_Fld26525	= @НалоговыйАгентПоОплате
                        ,_Fld26526	= @УстановленСрокОплатыДляРезервовПоСомнительнымДолгам
                        ,_Fld26527	= @СрокОплатыДляРезервовПоСомнительнымДолгам
                        Where _IDRRef = @Ссылка";
                    }
                    Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
                    /*Команда.Parameters.AddWithValue("Версия", Версия);*/
                    Команда.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("ЧислоДнейРезерваБезОплаты", ЧислоДнейРезерваБезОплаты);
                    Команда.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();
                }
            }
        }