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();
}
}
}