}                                                                          //Дата входящего документа электронного обмена
        public void Записать()
        {
            //Установка блокировки элемента на горизантально масштабированный кластер.
            //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
            //Выделение сервиса для блокировки элемента и генерации кода
            //Выполнение операций контроля без обращений к sql-серверу.
            //Контроль конфликта блокировок.
            //Контроль загрузки булкинсертом гетерогенной коллекции.
            //Контроль уникальности кода для Документов.
            //Контроль уникальности номера для документов, в границах префикса.
            //Контроль владельца, он не может быть группой.
            //Контроль владельца он должен быть задан.
            //Контроль родителя он должен быть группой.
            //Контроль количества уровней, должен соотвествовать метаданным.
            //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
            //Контроль уникальности ссылки
            //Контроль зацикливания
            //Опционально контроль битых ссылок.
            //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
            using (var Подключение = new SqlConnection(СтрокаСоединения))
            {
                Подключение.Open();
                using (var Команда = Подключение.CreateCommand())
                {
                    if (_ЭтоНовый)
                    {
                        Команда.CommandText = @"
						Insert Into _Document354(
						_IDRRef
						/*,_Version*/
						,_Marked
						,_IsMetadata
						,_Number
						,_Fld7199RRef
						,_Fld7200
						,_Fld7201RRef
						,_Fld7202
						,_Fld7203RRef
						,_Fld7204
						,_Fld7205
						,_Fld7206RRef
						,_Fld7207
						,_Fld7208RRef
						,_Fld7209RRef
						,_Fld7210
						,_Fld7211
						,_Fld7212
						,_Fld7213RRef
						,_Fld7214RRef
						,_Fld7215
						,_Fld7217RRef
						,_Fld7218RRef
						,_Fld7219RRef
						,_Fld7220RRef
						,_Fld7221RRef
						,_Fld7222RRef
						,_Fld7223RRef
						,_Fld7224RRef
						,_Fld7225RRef
						,_Fld7226
						,_Fld7227
						,_Fld7228
						,_Fld7229
						,_Fld7230RRef
						,_Fld7231RRef
						,_Fld7232RRef
						,_Fld7233RRef
						,_Fld7234RRef
						,_Fld7235RRef
						,_Fld7236RRef
						,_Fld7237RRef
						,_Fld7238
						,_Fld7240
						,_Fld7241RRef
						,_Fld7242RRef
						,_Fld18992
						,_Fld21798
						,_Fld21799)
						Values(
						@Ссылка
						/*,@Версия*/
						,@ПометкаУдаления
						,@Номер
						,@ВалютаДокумента
						,@ДатаВходящегоДокумента
						,@ДоговорКонтрагента
						,@Комментарий
						,@Контрагент
						,@КратностьВзаиморасчетов
						,@КурсВзаиморасчетов
						,@НоменклатурнаяГруппа
						,@НомерВходящегоДокумента
						,@Организация
						,@Ответственный
						,@ОтражатьВБухгалтерскомУчете
						,@ОтражатьВНалоговомУчете
						,@ОтражатьВУправленческомУчете
						,@Подразделение
						,@ПодразделениеОрганизации
						,@ПроцентКомиссионногоВознаграждения
						,@СпособРасчетаКомиссионногоВознаграждения
						,@СтавкаНДСВознаграждения
						,@СтатьяЗатрат
						,@СубконтоНУ1
						,@СубконтоНУ2
						,@СубконтоНУ3
						,@Субконто1
						,@Субконто2
						,@Субконто3
						,@СуммаВключаетНДС
						,@СуммаВознаграждения
						,@СуммаНДСВознаграждения
						,@СуммаДокумента
						,@СчетУчетаЗатрат
						,@СчетУчетаЗатратНУ
						,@СчетУчетаНДС
						,@СчетУчетаРасчетовЗаПосредническиеУслуги
						,@СчетУчетаРасчетовПоАвансамВыданным
						,@СчетУчетаРасчетовПоАвансамПолученным
						,@СчетУчетаРасчетовСКонтрагентом
						,@ТипЦен
						,@УчитыватьНДС
						,@УдержатьКомиссионноеВознаграждение
						,@Грузоотправитель
						,@Грузополучатель
						,@НДСВключенВСтоимость
						,@НомерВходящегоДокументаЭлектронногоОбмена
						,@ДатаВходящегоДокументаЭлектронногоОбмена)"                        ;
                    }
                    else
                    {
                        Команда.CommandText = @"
						Update _Document354
						Set
						/*_IDRRef	= @Ссылка*/
						/*,_Version	= @Версия*/
						_Marked	= @ПометкаУдаления
						,_Number	= @Номер
						,_Fld7199RRef	= @ВалютаДокумента
						,_Fld7200	= @ДатаВходящегоДокумента
						,_Fld7201RRef	= @ДоговорКонтрагента
						,_Fld7202	= @Комментарий
						,_Fld7203RRef	= @Контрагент
						,_Fld7204	= @КратностьВзаиморасчетов
						,_Fld7205	= @КурсВзаиморасчетов
						,_Fld7206RRef	= @НоменклатурнаяГруппа
						,_Fld7207	= @НомерВходящегоДокумента
						,_Fld7208RRef	= @Организация
						,_Fld7209RRef	= @Ответственный
						,_Fld7210	= @ОтражатьВБухгалтерскомУчете
						,_Fld7211	= @ОтражатьВНалоговомУчете
						,_Fld7212	= @ОтражатьВУправленческомУчете
						,_Fld7213RRef	= @Подразделение
						,_Fld7214RRef	= @ПодразделениеОрганизации
						,_Fld7215	= @ПроцентКомиссионногоВознаграждения
						,_Fld7217RRef	= @СпособРасчетаКомиссионногоВознаграждения
						,_Fld7218RRef	= @СтавкаНДСВознаграждения
						,_Fld7219RRef	= @СтатьяЗатрат
						,_Fld7220RRef	= @СубконтоНУ1
						,_Fld7221RRef	= @СубконтоНУ2
						,_Fld7222RRef	= @СубконтоНУ3
						,_Fld7223RRef	= @Субконто1
						,_Fld7224RRef	= @Субконто2
						,_Fld7225RRef	= @Субконто3
						,_Fld7226	= @СуммаВключаетНДС
						,_Fld7227	= @СуммаВознаграждения
						,_Fld7228	= @СуммаНДСВознаграждения
						,_Fld7229	= @СуммаДокумента
						,_Fld7230RRef	= @СчетУчетаЗатрат
						,_Fld7231RRef	= @СчетУчетаЗатратНУ
						,_Fld7232RRef	= @СчетУчетаНДС
						,_Fld7233RRef	= @СчетУчетаРасчетовЗаПосредническиеУслуги
						,_Fld7234RRef	= @СчетУчетаРасчетовПоАвансамВыданным
						,_Fld7235RRef	= @СчетУчетаРасчетовПоАвансамПолученным
						,_Fld7236RRef	= @СчетУчетаРасчетовСКонтрагентом
						,_Fld7237RRef	= @ТипЦен
						,_Fld7238	= @УчитыватьНДС
						,_Fld7240	= @УдержатьКомиссионноеВознаграждение
						,_Fld7241RRef	= @Грузоотправитель
						,_Fld7242RRef	= @Грузополучатель
						,_Fld18992	= @НДСВключенВСтоимость
						,_Fld21798	= @НомерВходящегоДокументаЭлектронногоОбмена
						,_Fld21799	= @ДатаВходящегоДокументаЭлектронногоОбмена
						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("СубконтоНУ1", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоНУ2", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоНУ3", Guid.Empty);
                    Команда.Parameters.AddWithValue("Субконто1", Guid.Empty);
                    Команда.Parameters.AddWithValue("Субконто2", Guid.Empty);
                    Команда.Parameters.AddWithValue("Субконто3", Guid.Empty);
                    Команда.Parameters.AddWithValue("СуммаВключаетНДС", СуммаВключаетНДС);
                    Команда.Parameters.AddWithValue("СуммаВознаграждения", СуммаВознаграждения);
                    Команда.Parameters.AddWithValue("СуммаНДСВознаграждения", СуммаНДСВознаграждения);
                    Команда.Parameters.AddWithValue("СуммаДокумента", СуммаДокумента);
                    Команда.Parameters.AddWithValue("СчетУчетаЗатрат", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетУчетаЗатратНУ", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетУчетаНДС", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетУчетаРасчетовЗаПосредническиеУслуги", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетУчетаРасчетовПоАвансамВыданным", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетУчетаРасчетовПоАвансамПолученным", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетУчетаРасчетовСКонтрагентом", Guid.Empty);
                    Команда.Parameters.AddWithValue("УчитыватьНДС", УчитыватьНДС);
                    Команда.Parameters.AddWithValue("УдержатьКомиссионноеВознаграждение", УдержатьКомиссионноеВознаграждение);
                    Команда.Parameters.AddWithValue("НДСВключенВСтоимость", НДСВключенВСтоимость);
                    Команда.Parameters.AddWithValue("НомерВходящегоДокументаЭлектронногоОбмена", НомерВходящегоДокументаЭлектронногоОбмена);
                    Команда.Parameters.AddWithValue("ДатаВходящегоДокументаЭлектронногоОбмена", ДатаВходящегоДокументаЭлектронногоОбмена);
                    Команда.ExecuteNonQuery();
                }
            }
        }
        }                                                                                 //Срок оплаты для резервов по сомнительным долгам
        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();
                }
            }
        }
Ejemplo n.º 3
0
        public void Записать()
        {
            //Установка блокировки элемента на горизантально масштабированный кластер.
            //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
            //Выделение сервиса для блокировки элемента и генерации кода
            //Выполнение операций контроля без обращений к sql-серверу.
            //Контроль конфликта блокировок.
            //Контроль загрузки булкинсертом гетерогенной коллекции.
            //Контроль уникальности кода для Документов.
            //Контроль уникальности номера для документов, в границах префикса.
            //Контроль владельца, он не может быть группой.
            //Контроль владельца он должен быть задан.
            //Контроль родителя он должен быть группой.
            //Контроль количества уровней, должен соотвествовать метаданным.
            //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
            //Контроль уникальности ссылки
            //Контроль зацикливания
            //Опционально контроль битых ссылок.
            //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
            using (var Подключение = new SqlConnection(СтрокаСоединения))
            {
                Подключение.Open();
                using (var Команда = Подключение.CreateCommand())
                {
                    if (_ЭтоНовый)
                    {
                        Команда.CommandText = @"
						Insert Into _Document355(
						_IDRRef
						/*,_Version*/
						,_Marked
						,_IsMetadata
						,_Number
						,_Fld7295
						,_Fld7296
						,_Fld7297
						,_Fld7298RRef
						,_Fld7299RRef
						,_Fld7300
						,_Fld7301RRef
						,_Fld7302
						,_Fld7303RRef
						,_Fld7304RRef
						,_Fld7305RRef
						,_Fld7307
						,_Fld7308RRef
						,_Fld7309
						,_Fld7310
						,_Fld7311
						,_Fld7312RRef
						,_Fld7313RRef
						,_Fld7314RRef
						,_Fld7315RRef
						,_Fld7317
						,_Fld7318RRef
						,_Fld7319RRef
						,_Fld7320RRef
						,_Fld7321RRef
						,_Fld7322RRef
						,_Fld7323RRef)
						Values(
						@Ссылка
						/*,@Версия*/
						,@ПометкаУдаления
						,@Номер
						,@ОтражатьВУправленческомУчете
						,@ОтражатьВБухгалтерскомУчете
						,@ОтражатьВНалоговомУчете
						,@Организация
						,@ВалютаДокумента
						,@СуммаДокумента
						,@СпособРасчетаКомиссионногоВознаграждения
						,@СуммаВознаграждения
						,@СтавкаНДСВознаграждения
						,@Контрагент
						,@ДоговорКонтрагента
						,@КурсВзаиморасчетов
						,@Подразделение
						,@Комментарий
						,@ПроцентКомиссионногоВознаграждения
						,@КратностьВзаиморасчетов
						,@ТипЦен
						,@Ответственный
						,@СчетУчетаРасчетовСКонтрагентом
						,@СчетУчетаРасчетовПоАвансам
						,@УдержатьКомиссионноеВознаграждение
						,@УслугаПоВознаграждению
						,@СчетДоходовБУ
						,@СчетДоходовНУ
						,@СубконтоБУ
						,@СубконтоНУ
						,@СчетУчетаНДСПоРеализации)"                        ;
                    }
                    else
                    {
                        Команда.CommandText = @"
						Update _Document355
						Set
						/*_IDRRef	= @Ссылка*/
						/*,_Version	= @Версия*/
						_Marked	= @ПометкаУдаления
						,_Number	= @Номер
						,_Fld7295	= @ОтражатьВУправленческомУчете
						,_Fld7296	= @ОтражатьВБухгалтерскомУчете
						,_Fld7297	= @ОтражатьВНалоговомУчете
						,_Fld7298RRef	= @Организация
						,_Fld7299RRef	= @ВалютаДокумента
						,_Fld7300	= @СуммаДокумента
						,_Fld7301RRef	= @СпособРасчетаКомиссионногоВознаграждения
						,_Fld7302	= @СуммаВознаграждения
						,_Fld7303RRef	= @СтавкаНДСВознаграждения
						,_Fld7304RRef	= @Контрагент
						,_Fld7305RRef	= @ДоговорКонтрагента
						,_Fld7307	= @КурсВзаиморасчетов
						,_Fld7308RRef	= @Подразделение
						,_Fld7309	= @Комментарий
						,_Fld7310	= @ПроцентКомиссионногоВознаграждения
						,_Fld7311	= @КратностьВзаиморасчетов
						,_Fld7312RRef	= @ТипЦен
						,_Fld7313RRef	= @Ответственный
						,_Fld7314RRef	= @СчетУчетаРасчетовСКонтрагентом
						,_Fld7315RRef	= @СчетУчетаРасчетовПоАвансам
						,_Fld7317	= @УдержатьКомиссионноеВознаграждение
						,_Fld7318RRef	= @УслугаПоВознаграждению
						,_Fld7319RRef	= @СчетДоходовБУ
						,_Fld7320RRef	= @СчетДоходовНУ
						,_Fld7321RRef	= @СубконтоБУ
						,_Fld7322RRef	= @СубконтоНУ
						,_Fld7323RRef	= @СчетУчетаНДСПоРеализации
						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("СчетУчетаРасчетовСКонтрагентом", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетУчетаРасчетовПоАвансам", Guid.Empty);
                    Команда.Parameters.AddWithValue("УдержатьКомиссионноеВознаграждение", УдержатьКомиссионноеВознаграждение);
                    Команда.Parameters.AddWithValue("СчетДоходовБУ", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетДоходовНУ", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоБУ", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоНУ", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетУчетаНДСПоРеализации", Guid.Empty);
                    Команда.ExecuteNonQuery();
                }
            }
        }