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 _Reference95(
                        _IDRRef
                        /*,_Version*/
                        ,_Marked
                        ,_IsMetadata
                        ,_ParentIDRRef
                        ,_Folder
                        ,_Code
                        ,_Description
                        ,_Fld1421
                        ,_Fld1437
                        ,_Fld1423
                        ,_Fld1424
                        ,_Fld1425
                        ,_Fld1426
                        ,_Fld1427
                        ,_Fld1428
                        ,_Fld1429
                        ,_Fld1430RRef
                        ,_Fld1431RRef
                        ,_Fld1432RRef
                        ,_Fld1433RRef
                        ,_Fld1422RRef
                        ,_Fld1435
                        ,_Fld1436RRef
                        ,_Fld1444RRef
                        ,_Fld1434
                        ,_Fld1439RRef
                        ,_Fld1449
                        ,_Fld1441RRef
                        ,_Fld1442RRef
                        ,_Fld1443RRef
                        ,_Fld1438RRef
                        ,_Fld1446RRef
                        ,_Fld1440RRef
                        ,_Fld1447
                        ,_Fld1448
                        ,_Fld1445RRef
                        ,_Fld1450
                        ,_Fld1451
                        ,_Fld1452RRef
                        ,_Fld1453RRef
                        ,_Fld1454RRef
                        ,_Fld1455RRef
                        ,_Fld1456RRef
                        ,_Fld18593RRef
                        ,_Fld22975
                        ,_Fld26548RRef
                        ,_Fld26549RRef)
                        Values(
                        @Ссылка
                        /*,@Версия*/
                        ,@ПометкаУдаления
                        ,@Предопределенный
                        ,@Родитель
                        ,@ЭтоГруппа
                        ,@Код
                        ,@Наименование
                        ,@Артикул
                        ,@НаименованиеПолное
                        ,@Весовой
                        ,@ВесовойКоэффициентВхождения
                        ,@ВестиОперативныйУчетОстатковНЗП
                        ,@ВестиПартионныйУчетПоСериям
                        ,@ВестиУчетПоСериям
                        ,@ВестиУчетПоСериямВНЗП
                        ,@ВестиУчетПоХарактеристикам
                        ,@ВидВоспроизводства
                        ,@ВидНоменклатуры
                        ,@ЕдиницаДляОтчетов
                        ,@ЕдиницаХраненияОстатков
                        ,@БазоваяЕдиницаИзмерения
                        ,@Набор
                        ,@НазначениеИспользования
                        ,@СтавкаНДС
                        ,@Комментарий
                        ,@НоменклатурнаяГруппаЗатрат
                        ,@Услуга
                        ,@ОсновноеИзображение
                        ,@ОсновнойПоставщик
                        ,@ОтветственныйМенеджерЗаПокупки
                        ,@НоменклатурнаяГруппа
                        ,@СтранаПроисхождения
                        ,@НомерГТД
                        ,@ТребуетсяВнешняяСертификация
                        ,@ТребуетсяВнутренняяСертификация
                        ,@СтатьяЗатрат
                        ,@ВестиСерийныеНомера
                        ,@Комплект
                        ,@НаправлениеВыпуска
                        ,@НаправлениеСписанияВыпущеннойПродукции
                        ,@ПорядокПрисвоенияСерийногоНомера
                        ,@ЦеноваяГруппа
                        ,@ОКП
                        ,@ЕдиницаИзмеренияМест
                        ,@ДополнительноеОписаниеНоменклатуры
                        ,@Производитель
                        ,@Импортер)";
                    }
                    else
                    {
                        Команда.CommandText = @"
                        Update _Reference95
                        Set
                        /*_IDRRef	= @Ссылка*/
                        /*,_Version	= @Версия*/
                        _Marked	= @ПометкаУдаления
                        ,_IsMetadata	= @Предопределенный
                        ,_ParentIDRRef	= @Родитель
                        ,_Folder	= @ЭтоГруппа
                        ,_Code	= @Код
                        ,_Description	= @Наименование
                        ,_Fld1421	= @Артикул
                        ,_Fld1437	= @НаименованиеПолное
                        ,_Fld1423	= @Весовой
                        ,_Fld1424	= @ВесовойКоэффициентВхождения
                        ,_Fld1425	= @ВестиОперативныйУчетОстатковНЗП
                        ,_Fld1426	= @ВестиПартионныйУчетПоСериям
                        ,_Fld1427	= @ВестиУчетПоСериям
                        ,_Fld1428	= @ВестиУчетПоСериямВНЗП
                        ,_Fld1429	= @ВестиУчетПоХарактеристикам
                        ,_Fld1430RRef	= @ВидВоспроизводства
                        ,_Fld1431RRef	= @ВидНоменклатуры
                        ,_Fld1432RRef	= @ЕдиницаДляОтчетов
                        ,_Fld1433RRef	= @ЕдиницаХраненияОстатков
                        ,_Fld1422RRef	= @БазоваяЕдиницаИзмерения
                        ,_Fld1435	= @Набор
                        ,_Fld1436RRef	= @НазначениеИспользования
                        ,_Fld1444RRef	= @СтавкаНДС
                        ,_Fld1434	= @Комментарий
                        ,_Fld1439RRef	= @НоменклатурнаяГруппаЗатрат
                        ,_Fld1449	= @Услуга
                        ,_Fld1441RRef	= @ОсновноеИзображение
                        ,_Fld1442RRef	= @ОсновнойПоставщик
                        ,_Fld1443RRef	= @ОтветственныйМенеджерЗаПокупки
                        ,_Fld1438RRef	= @НоменклатурнаяГруппа
                        ,_Fld1446RRef	= @СтранаПроисхождения
                        ,_Fld1440RRef	= @НомерГТД
                        ,_Fld1447	= @ТребуетсяВнешняяСертификация
                        ,_Fld1448	= @ТребуетсяВнутренняяСертификация
                        ,_Fld1445RRef	= @СтатьяЗатрат
                        ,_Fld1450	= @ВестиСерийныеНомера
                        ,_Fld1451	= @Комплект
                        ,_Fld1452RRef	= @НаправлениеВыпуска
                        ,_Fld1453RRef	= @НаправлениеСписанияВыпущеннойПродукции
                        ,_Fld1454RRef	= @ПорядокПрисвоенияСерийногоНомера
                        ,_Fld1455RRef	= @ЦеноваяГруппа
                        ,_Fld1456RRef	= @ОКП
                        ,_Fld18593RRef	= @ЕдиницаИзмеренияМест
                        ,_Fld22975	= @ДополнительноеОписаниеНоменклатуры
                        ,_Fld26548RRef	= @Производитель
                        ,_Fld26549RRef	= @Импортер
                        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("НазначениеИспользования", НазначениеИспользования.Ссылка);
                    Команда.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();
                }
            }
        }