} //Краткий состав документа public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document23160( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld24752RRef ,_Fld24753 ,_Fld24754RRef ,_Fld24755 ,_Fld24756 ,_Fld24757 ,_Fld24758 ,_Fld24759 ,_Fld24760RRef ,_Fld24761 ,_Fld24762) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@Организация ,@Комментарий ,@Ответственный ,@ДатаПлатежа ,@МесяцНалоговогоПериода ,@Сумма ,@ПлатежноеПоручениеНомер ,@ПлатежноеПоручениеДата ,@Ставка ,@ОКАТО_КПП ,@КраткийСоставДокумента)" ; } else { Команда.CommandText = @" Update _Document23160 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld24752RRef = @Организация ,_Fld24753 = @Комментарий ,_Fld24754RRef = @Ответственный ,_Fld24755 = @ДатаПлатежа ,_Fld24756 = @МесяцНалоговогоПериода ,_Fld24757 = @Сумма ,_Fld24758 = @ПлатежноеПоручениеНомер ,_Fld24759 = @ПлатежноеПоручениеДата ,_Fld24760RRef = @Ставка ,_Fld24761 = @ОКАТО_КПП ,_Fld24762 = @КраткийСоставДокумента 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("КраткийСоставДокумента", КраткийСоставДокумента); Команда.ExecuteNonQuery(); } } }
} //Код ИФНС public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document23175( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld25523RRef ,_Fld25524 ,_Fld25525 ,_Fld25526RRef ,_Fld25527 ,_Fld25528RRef ,_Fld25529 ,_Fld25530RRef ,_Fld25531RRef ,_Fld25532RRef ,_Fld25533RRef ,_Fld25534 ,_Fld25535 ,_Fld25536 ,_Fld25537 ,_Fld25538RRef ,_Fld25539 ,_Fld25540 ,_Fld25541 ,_Fld25542 ,_Fld25543 ,_Fld25544 ,_Fld25545 ,_Fld25546 ,_Fld25547 ,_Fld25548 ,_Fld25549 ,_Fld25550 ,_Fld25551RRef ,_Fld25552RRef ,_Fld25553 ,_Fld25554 ,_Fld25555 ,_Fld25556 ,_Fld25557) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@Ответственный ,@Комментарий ,@НалоговыйПериод ,@Организация ,@ОКАТО_КПП ,@СпособФормирования ,@Телефон ,@СправкуПодписал ,@ДолжностьПодписавшегоЛица ,@Сотрудник ,@Ставка ,@Фамилия ,@Имя ,@Отчество ,@АдресРФ ,@ВидДокумента ,@СерияДокумента ,@НомерДокумента ,@ОбщаяСуммаДохода ,@ОблагаемаяСуммаДохода ,@Исчислено ,@Задолженность ,@ИзлишнеУдержано ,@Удержано ,@Перечислено ,@АдресЗарубежом ,@ДатаРождения ,@ИНН ,@Гражданство ,@СтатусНалогоплательщика ,@ДатаУведомления ,@НомерУведомления ,@КодНалоговогоОрганаУведомления ,@СпециальныйДокумент2011года ,@КодИФНС)" ; } else { Команда.CommandText = @" Update _Document23175 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld25523RRef = @Ответственный ,_Fld25524 = @Комментарий ,_Fld25525 = @НалоговыйПериод ,_Fld25526RRef = @Организация ,_Fld25527 = @ОКАТО_КПП ,_Fld25528RRef = @СпособФормирования ,_Fld25529 = @Телефон ,_Fld25530RRef = @СправкуПодписал ,_Fld25531RRef = @ДолжностьПодписавшегоЛица ,_Fld25532RRef = @Сотрудник ,_Fld25533RRef = @Ставка ,_Fld25534 = @Фамилия ,_Fld25535 = @Имя ,_Fld25536 = @Отчество ,_Fld25537 = @АдресРФ ,_Fld25538RRef = @ВидДокумента ,_Fld25539 = @СерияДокумента ,_Fld25540 = @НомерДокумента ,_Fld25541 = @ОбщаяСуммаДохода ,_Fld25542 = @ОблагаемаяСуммаДохода ,_Fld25543 = @Исчислено ,_Fld25544 = @Задолженность ,_Fld25545 = @ИзлишнеУдержано ,_Fld25546 = @Удержано ,_Fld25547 = @Перечислено ,_Fld25548 = @АдресЗарубежом ,_Fld25549 = @ДатаРождения ,_Fld25550 = @ИНН ,_Fld25551RRef = @Гражданство ,_Fld25552RRef = @СтатусНалогоплательщика ,_Fld25553 = @ДатаУведомления ,_Fld25554 = @НомерУведомления ,_Fld25555 = @КодНалоговогоОрганаУведомления ,_Fld25556 = @СпециальныйДокумент2011года ,_Fld25557 = @КодИФНС 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("НомерДокумента", НомерДокумента); Команда.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("СпециальныйДокумент2011года", СпециальныйДокумент2011года); Команда.Parameters.AddWithValue("КодИФНС", КодИФНС); Команда.ExecuteNonQuery(); } } }