Пример #1
0
        }                                                 //Перенесен из 7.7
        public void Записать()
        {
            //Установка блокировки элемента на горизантально масштабированный кластер.
            //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
            //Выделение сервиса для блокировки элемента и генерации кода
            //Выполнение операций контроля без обращений к sql-серверу.
            //Контроль конфликта блокировок.
            //Контроль загрузки булкинсертом гетерогенной коллекции.
            //Контроль уникальности кода для Документов.
            //Контроль уникальности номера для документов, в границах префикса.
            //Контроль владельца, он не может быть группой.
            //Контроль владельца он должен быть задан.
            //Контроль родителя он должен быть группой.
            //Контроль количества уровней, должен соотвествовать метаданным.
            //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
            //Контроль уникальности ссылки
            //Контроль зацикливания
            //Опционально контроль битых ссылок.
            //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
            using (var Подключение = new SqlConnection(СтрокаСоединения))
            {
                Подключение.Open();
                using (var Команда = Подключение.CreateCommand())
                {
                    if (_ЭтоНовый)
                    {
                        Команда.CommandText = @"
						Insert Into _Document251(
						_IDRRef
						/*,_Version*/
						,_Marked
						,_IsMetadata
						,_Number
						,_Fld4174RRef
						,_Fld4175
						,_Fld4176RRef
						,_Fld4177
						,_Fld4178
						,_Fld4179
						,_Fld4180RRef
						,_Fld4181
						,_Fld4182
						,_Fld4183
						,_Fld4184
						,_Fld4185RRef
						,_Fld4186
						,_Fld4193RRef
						,_Fld4187RRef
						,_Fld4188
						,_Fld4189RRef
						,_Fld4190RRef
						,_Fld4191RRef
						,_Fld4192RRef
						,_Fld26723)
						Values(
						@Ссылка
						/*,@Версия*/
						,@ПометкаУдаления
						,@Номер
						,@ФизЛицо
						,@СуммаЗайма
						,@ВалютаДокумента
						,@КурсДокумента
						,@КратностьДокумента
						,@ПроцентЗаПользованиеЗаймом
						,@ПорядокПогашенияЗайма
						,@СрокПогашения
						,@НачалоПогашения
						,@ОтражатьВУправленческомУчете
						,@ОтражатьВБухгалтерскомУчете
						,@Организация
						,@НачислятьМатериальнуюВыгоду
						,@СтавкаНалогообложенияРезидента
						,@СчетУчетаПроцентовПоЗайму
						,@Комментарий
						,@Ответственный
						,@Субконто1
						,@Субконто2
						,@Субконто3
						,@ДанныеПрошлойВерсии)"                        ;
                    }
                    else
                    {
                        Команда.CommandText = @"
						Update _Document251
						Set
						/*_IDRRef	= @Ссылка*/
						/*,_Version	= @Версия*/
						_Marked	= @ПометкаУдаления
						,_Number	= @Номер
						,_Fld4174RRef	= @ФизЛицо
						,_Fld4175	= @СуммаЗайма
						,_Fld4176RRef	= @ВалютаДокумента
						,_Fld4177	= @КурсДокумента
						,_Fld4178	= @КратностьДокумента
						,_Fld4179	= @ПроцентЗаПользованиеЗаймом
						,_Fld4180RRef	= @ПорядокПогашенияЗайма
						,_Fld4181	= @СрокПогашения
						,_Fld4182	= @НачалоПогашения
						,_Fld4183	= @ОтражатьВУправленческомУчете
						,_Fld4184	= @ОтражатьВБухгалтерскомУчете
						,_Fld4185RRef	= @Организация
						,_Fld4186	= @НачислятьМатериальнуюВыгоду
						,_Fld4193RRef	= @СтавкаНалогообложенияРезидента
						,_Fld4187RRef	= @СчетУчетаПроцентовПоЗайму
						,_Fld4188	= @Комментарий
						,_Fld4189RRef	= @Ответственный
						,_Fld4190RRef	= @Субконто1
						,_Fld4191RRef	= @Субконто2
						,_Fld4192RRef	= @Субконто3
						,_Fld26723	= @ДанныеПрошлойВерсии
						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("Комментарий", Комментарий);
                    Команда.Parameters.AddWithValue("Субконто1", Guid.Empty);
                    Команда.Parameters.AddWithValue("Субконто2", Guid.Empty);
                    Команда.Parameters.AddWithValue("Субконто3", Guid.Empty);
                    Команда.Parameters.AddWithValue("ДанныеПрошлойВерсии", ДанныеПрошлойВерсии);
                    Команда.ExecuteNonQuery();
                }
            }
        }
Пример #2
0
        }                                                        //Учитывать по периоду действия
        public void Записать()
        {
            //Установка блокировки элемента на горизантально масштабированный кластер.
            //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
            //Выделение сервиса для блокировки элемента и генерации кода
            //Выполнение операций контроля без обращений к sql-серверу.
            //Контроль конфликта блокировок.
            //Контроль загрузки булкинсертом гетерогенной коллекции.
            //Контроль уникальности кода для справочников.
            //Контроль уникальности номера для документов, в границах префикса.
            //Контроль владельца, он не может быть группой.
            //Контроль владельца он должен быть задан.
            //Контроль родителя он должен быть группой.
            //Контроль количества уровней, должен соотвествовать метаданным.
            //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
            //Контроль уникальности ссылки
            //Контроль зацикливания
            //Опционально контроль битых ссылок.
            //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
            using (var Подключение = new SqlConnection(СтрокаСоединения))
            {
                Подключение.Open();
                using (var Команда = Подключение.CreateCommand())
                {
                    if (_ЭтоНовый)
                    {
                        Команда.CommandText = @"
						Insert Into _Reference54(
						_IDRRef
						/*,_Version*/
						,_Marked
						,_IsMetadata
						,_Code
						,_Description
						,_Fld1131RRef
						,_Fld1132
						,_Fld26532
						,_Fld26533
						,_Fld26534)
						Values(
						@Ссылка
						/*,@Версия*/
						,@ПометкаУдаления
						,@Предопределенный
						,@Код
						,@Наименование
						,@СтавкаНалогообложенияРезидента
						,@КодДляОтчетности
						,@НеОблагаетсяУНалоговогоАгента
						,@НеОтражаетсяВОтчетности2010
						,@УчитыватьПоПериодуДействия)"                        ;
                    }
                    else
                    {
                        Команда.CommandText = @"
						Update _Reference54
						Set
						/*_IDRRef	= @Ссылка*/
						/*,_Version	= @Версия*/
						_Marked	= @ПометкаУдаления
						,_IsMetadata	= @Предопределенный
						,_Code	= @Код
						,_Description	= @Наименование
						,_Fld1131RRef	= @СтавкаНалогообложенияРезидента
						,_Fld1132	= @КодДляОтчетности
						,_Fld26532	= @НеОблагаетсяУНалоговогоАгента
						,_Fld26533	= @НеОтражаетсяВОтчетности2010
						,_Fld26534	= @УчитыватьПоПериодуДействия
						Where _IDRRef = @Ссылка"                        ;
                    }
                    Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
                    /*Команда.Parameters.AddWithValue("Версия", Версия);*/
                    Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления);
                    Команда.Parameters.AddWithValue("Предопределенный", Предопределенный);
                    Команда.Parameters.AddWithValue("Код", Код);
                    Команда.Parameters.AddWithValue("Наименование", Наименование);
                    Команда.Parameters.AddWithValue("СтавкаНалогообложенияРезидента", СтавкаНалогообложенияРезидента.Ключ());
                    Команда.Parameters.AddWithValue("КодДляОтчетности", КодДляОтчетности);
                    Команда.Parameters.AddWithValue("НеОблагаетсяУНалоговогоАгента", НеОблагаетсяУНалоговогоАгента);
                    Команда.Parameters.AddWithValue("НеОтражаетсяВОтчетности2010", НеОтражаетсяВОтчетности2010);
                    Команда.Parameters.AddWithValue("УчитыватьПоПериодуДействия", УчитыватьПоПериодуДействия);
                    Команда.ExecuteNonQuery();
                }
            }
        }