Beispiel #1
0
        }                                                        //Сумма передачи
        public void Записать()
        {
            //Установка блокировки элемента на горизантально масштабированный кластер.
            //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
            //Выделение сервиса для блокировки элемента и генерации кода
            //Выполнение операций контроля без обращений к sql-серверу.
            //Контроль конфликта блокировок.
            //Контроль загрузки булкинсертом гетерогенной коллекции.
            //Контроль уникальности кода для Документов.
            //Контроль уникальности номера для документов, в границах префикса.
            //Контроль владельца, он не может быть группой.
            //Контроль владельца он должен быть задан.
            //Контроль родителя он должен быть группой.
            //Контроль количества уровней, должен соотвествовать метаданным.
            //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
            //Контроль уникальности ссылки
            //Контроль зацикливания
            //Опционально контроль битых ссылок.
            //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
            using (var Подключение = new SqlConnection(СтрокаСоединения))
            {
                Подключение.Open();
                using (var Команда = Подключение.CreateCommand())
                {
                    if (_ЭтоНовый)
                    {
                        Команда.CommandText = @"
						Insert Into _Document299(
						_IDRRef
						/*,_Version*/
						,_Marked
						,_IsMetadata
						,_Number
						,_Fld18967RRef
						,_Fld5498RRef
						,_Fld5499RRef
						,_Fld5501
						,_Fld5502
						,_Fld5503
						,_Fld5504RRef
						,_Fld5505RRef
						,_Fld18406RRef
						,_Fld5506RRef
						,_Fld5507RRef
						,_Fld5508
						,_Fld5509
						,_Fld5510
						,_Fld5511RRef
						,_Fld18408RRef
						,_Fld5512RRef
						,_Fld5513RRef
						,_Fld18969RRef
						,_Fld5514RRef
						,_Fld5515RRef
						,_Fld18407RRef
						,_Fld5517RRef
						,_Fld5518RRef
						,_Fld18398RRef
						,_Fld18399RRef
						,_Fld18400RRef
						,_Fld18401RRef
						,_Fld18402RRef
						,_Fld18403RRef
						,_Fld18404RRef
						,_Fld18405RRef
						,_Fld5519RRef
						,_Fld18970RRef
						,_Fld18971RRef
						,_Fld18972RRef
						,_Fld18973RRef
						,_Fld18974RRef
						,_Fld18976
						,_Fld18977)
						Values(
						@Ссылка
						/*,@Версия*/
						,@ПометкаУдаления
						,@Номер
						,@ВидКомплектации
						,@ВидОперации
						,@ЕдиницаИзмерения
						,@Количество
						,@Комментарий
						,@Коэффициент
						,@НДСвСтоимостиТоваров
						,@Номенклатура
						,@НоменклатурнаяГруппа
						,@Организация
						,@Ответственный
						,@ОтражатьВБухгалтерскомУчете
						,@ОтражатьВНалоговомУчете
						,@ОтражатьВУправленческомУчете
						,@Подразделение
						,@ПодразделениеОрганизации
						,@СерияНоменклатуры
						,@Склад
						,@Спецификация
						,@СпособСписанияОстаткаТоваров
						,@СтатусПартии
						,@СтатьяЗатратСписанияНДС
						,@СчетУчетаБУ
						,@СчетУчетаНУ
						,@СчетСписанияНДС
						,@СубконтоСписанияНДС1
						,@СубконтоСписанияНДС2
						,@СубконтоСписанияНДС3
						,@СчетСписанияНДСНУ
						,@СубконтоСписанияНДСНУ1
						,@СубконтоСписанияНДСНУ2
						,@СубконтоСписанияНДСНУ3
						,@ХарактеристикаНоменклатуры
						,@Контрагент
						,@ДоговорКонтрагента
						,@СчетЗатрат
						,@СчетЗатратНУ
						,@СтатьяЗатрат
						,@ЦенаПередачи
						,@СуммаПередачи)"                        ;
                    }
                    else
                    {
                        Команда.CommandText = @"
						Update _Document299
						Set
						/*_IDRRef	= @Ссылка*/
						/*,_Version	= @Версия*/
						_Marked	= @ПометкаУдаления
						,_Number	= @Номер
						,_Fld18967RRef	= @ВидКомплектации
						,_Fld5498RRef	= @ВидОперации
						,_Fld5499RRef	= @ЕдиницаИзмерения
						,_Fld5501	= @Количество
						,_Fld5502	= @Комментарий
						,_Fld5503	= @Коэффициент
						,_Fld5504RRef	= @НДСвСтоимостиТоваров
						,_Fld5505RRef	= @Номенклатура
						,_Fld18406RRef	= @НоменклатурнаяГруппа
						,_Fld5506RRef	= @Организация
						,_Fld5507RRef	= @Ответственный
						,_Fld5508	= @ОтражатьВБухгалтерскомУчете
						,_Fld5509	= @ОтражатьВНалоговомУчете
						,_Fld5510	= @ОтражатьВУправленческомУчете
						,_Fld5511RRef	= @Подразделение
						,_Fld18408RRef	= @ПодразделениеОрганизации
						,_Fld5512RRef	= @СерияНоменклатуры
						,_Fld5513RRef	= @Склад
						,_Fld18969RRef	= @Спецификация
						,_Fld5514RRef	= @СпособСписанияОстаткаТоваров
						,_Fld5515RRef	= @СтатусПартии
						,_Fld18407RRef	= @СтатьяЗатратСписанияНДС
						,_Fld5517RRef	= @СчетУчетаБУ
						,_Fld5518RRef	= @СчетУчетаНУ
						,_Fld18398RRef	= @СчетСписанияНДС
						,_Fld18399RRef	= @СубконтоСписанияНДС1
						,_Fld18400RRef	= @СубконтоСписанияНДС2
						,_Fld18401RRef	= @СубконтоСписанияНДС3
						,_Fld18402RRef	= @СчетСписанияНДСНУ
						,_Fld18403RRef	= @СубконтоСписанияНДСНУ1
						,_Fld18404RRef	= @СубконтоСписанияНДСНУ2
						,_Fld18405RRef	= @СубконтоСписанияНДСНУ3
						,_Fld5519RRef	= @ХарактеристикаНоменклатуры
						,_Fld18970RRef	= @Контрагент
						,_Fld18971RRef	= @ДоговорКонтрагента
						,_Fld18972RRef	= @СчетЗатрат
						,_Fld18973RRef	= @СчетЗатратНУ
						,_Fld18974RRef	= @СтатьяЗатрат
						,_Fld18976	= @ЦенаПередачи
						,_Fld18977	= @СуммаПередачи
						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("СчетСписанияНДС", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДС1", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДС2", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДС3", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетСписанияНДСНУ", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДСНУ1", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДСНУ2", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДСНУ3", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетЗатрат", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетЗатратНУ", Guid.Empty);
                    Команда.Parameters.AddWithValue("ЦенаПередачи", ЦенаПередачи);
                    Команда.Parameters.AddWithValue("СуммаПередачи", СуммаПередачи);
                    Команда.ExecuteNonQuery();
                }
            }
        }
        public void Записать()
        {
            //Установка блокировки элемента на горизантально масштабированный кластер.
            //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
            //Выделение сервиса для блокировки элемента и генерации кода
            //Выполнение операций контроля без обращений к sql-серверу.
            //Контроль конфликта блокировок.
            //Контроль загрузки булкинсертом гетерогенной коллекции.
            //Контроль уникальности кода для Документов.
            //Контроль уникальности номера для документов, в границах префикса.
            //Контроль владельца, он не может быть группой.
            //Контроль владельца он должен быть задан.
            //Контроль родителя он должен быть группой.
            //Контроль количества уровней, должен соотвествовать метаданным.
            //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
            //Контроль уникальности ссылки
            //Контроль зацикливания
            //Опционально контроль битых ссылок.
            //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
            using (var Подключение = new SqlConnection(СтрокаСоединения))
            {
                Подключение.Open();
                using (var Команда = Подключение.CreateCommand())
                {
                    if (_ЭтоНовый)
                    {
                        Команда.CommandText = @"
						Insert Into _Document467(
						_IDRRef
						/*,_Version*/
						,_Marked
						,_IsMetadata
						,_Number
						,_Fld11982
						,_Fld11983
						,_Fld11984
						,_Fld11985RRef
						,_Fld11986RRef
						,_Fld11987RRef
						,_Fld11988RRef
						,_Fld11989
						,_Fld11992RRef
						,_Fld11993RRef
						,_Fld11994RRef
						,_Fld11995RRef
						,_Fld11996RRef
						,_Fld11997RRef
						,_Fld11998RRef
						,_Fld11999RRef
						,_Fld12000RRef
						,_Fld12003
						,_Fld12001RRef
						,_Fld12002RRef
						,_Fld11990RRef
						,_Fld12004)
						Values(
						@Ссылка
						/*,@Версия*/
						,@ПометкаУдаления
						,@Номер
						,@ОтражатьВУправленческомУчете
						,@ОтражатьВБухгалтерскомУчете
						,@ОтражатьВНалоговомУчете
						,@Организация
						,@Склад
						,@Подразделение
						,@Ответственный
						,@Комментарий
						,@НДСвСтоимостиТоваров
						,@СчетСписанияНДС
						,@СубконтоСписанияНДС1
						,@СубконтоСписанияНДС2
						,@СубконтоСписанияНДС3
						,@СчетСписанияНДСНУ
						,@СубконтоСписанияНДСНУ1
						,@СубконтоСписанияНДСНУ2
						,@СубконтоСписанияНДСНУ3
						,@ДляСписанияНДСиспользоватьСчетИАналитикуУчетаЗатрат
						,@НоменклатурнаяГруппа
						,@СтатьяЗатратСписанияНДС
						,@ПодразделениеОрганизации
						,@РазрешитьПревышениеЛимита)"                        ;
                    }
                    else
                    {
                        Команда.CommandText = @"
						Update _Document467
						Set
						/*_IDRRef	= @Ссылка*/
						/*,_Version	= @Версия*/
						_Marked	= @ПометкаУдаления
						,_Number	= @Номер
						,_Fld11982	= @ОтражатьВУправленческомУчете
						,_Fld11983	= @ОтражатьВБухгалтерскомУчете
						,_Fld11984	= @ОтражатьВНалоговомУчете
						,_Fld11985RRef	= @Организация
						,_Fld11986RRef	= @Склад
						,_Fld11987RRef	= @Подразделение
						,_Fld11988RRef	= @Ответственный
						,_Fld11989	= @Комментарий
						,_Fld11992RRef	= @НДСвСтоимостиТоваров
						,_Fld11993RRef	= @СчетСписанияНДС
						,_Fld11994RRef	= @СубконтоСписанияНДС1
						,_Fld11995RRef	= @СубконтоСписанияНДС2
						,_Fld11996RRef	= @СубконтоСписанияНДС3
						,_Fld11997RRef	= @СчетСписанияНДСНУ
						,_Fld11998RRef	= @СубконтоСписанияНДСНУ1
						,_Fld11999RRef	= @СубконтоСписанияНДСНУ2
						,_Fld12000RRef	= @СубконтоСписанияНДСНУ3
						,_Fld12003	= @ДляСписанияНДСиспользоватьСчетИАналитикуУчетаЗатрат
						,_Fld12001RRef	= @НоменклатурнаяГруппа
						,_Fld12002RRef	= @СтатьяЗатратСписанияНДС
						,_Fld11990RRef	= @ПодразделениеОрганизации
						,_Fld12004	= @РазрешитьПревышениеЛимита
						Where _IDRRef = @Ссылка"                        ;
                    }
                    Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
                    /*Команда.Parameters.AddWithValue("Версия", Версия);*/
                    Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления);
                    Команда.Parameters.AddWithValue("Номер", Номер);
                    Команда.Parameters.AddWithValue("ОтражатьВУправленческомУчете", ОтражатьВУправленческомУчете);
                    Команда.Parameters.AddWithValue("ОтражатьВБухгалтерскомУчете", ОтражатьВБухгалтерскомУчете);
                    Команда.Parameters.AddWithValue("ОтражатьВНалоговомУчете", ОтражатьВНалоговомУчете);
                    Команда.Parameters.AddWithValue("Комментарий", Комментарий);
                    Команда.Parameters.AddWithValue("НДСвСтоимостиТоваров", НДСвСтоимостиТоваров.Ключ());
                    Команда.Parameters.AddWithValue("СчетСписанияНДС", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДС1", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДС2", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДС3", Guid.Empty);
                    Команда.Parameters.AddWithValue("СчетСписанияНДСНУ", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДСНУ1", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДСНУ2", Guid.Empty);
                    Команда.Parameters.AddWithValue("СубконтоСписанияНДСНУ3", Guid.Empty);
                    Команда.Parameters.AddWithValue("ДляСписанияНДСиспользоватьСчетИАналитикуУчетаЗатрат", ДляСписанияНДСиспользоватьСчетИАналитикуУчетаЗатрат);
                    Команда.Parameters.AddWithValue("РазрешитьПревышениеЛимита", азрешитьПревышениеЛимита);
                    Команда.ExecuteNonQuery();
                }
            }
        }