} //Бланк строгой отчетности public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document465( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld27344 ,_Fld11952RRef ,_Fld22269RRef ,_Fld11949 ,_Fld11948 ,_Fld11953RRef ,_Fld11954 ,_Fld11955 ,_Fld11951RRef ,_Fld22267 ,_Fld22268 ,_Fld11947 ,_Fld23020 ,_Fld27345 ,_Fld27346 ,_Fld27347 ,_Fld27348 ,_Fld27349 ,_Fld27350 ,_Fld27351 ,_Fld27352 ,_Fld11956RRef ,_Fld27353 ,_Fld27354 ,_Fld27355 ,_Fld27356 ,_Fld27357 ,_Fld27358 ,_Fld27359 ,_Fld27360RRef ,_Fld27361RRef ,_Fld27362) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@ДатаИсправления ,@Контрагент ,@ДоговорКонтрагента ,@ДатаВходящегоДокумента ,@НомерВходящегоДокумента ,@ВалютаДокумента ,@СуммаДокумента ,@СформированПриВводеНачальныхОстатковНДС ,@Ответственный ,@НомерВходящегоДокументаЭлектронногоОбмена ,@ДатаВходящегоДокументаЭлектронногоОбмена ,@Комментарий ,@УдалитьНаАванс ,@ДатаИсправленияИсходногоДокумента ,@ДатаИсходногоДокумента ,@Исправление ,@КодВидаОперации ,@КодСпособаПолучения ,@НомерИсправления ,@НомерИсправленияИсходногоДокумента ,@НомерИсходногоДокумента ,@Организация ,@СуммаУвеличение ,@СуммаУменьшение ,@УчитыватьИсправлениеИсходногоДокумента ,@СчетФактураБезНДС ,@СуммаНДСУвеличение ,@СуммаНДСУменьшение ,@СуммаНДСДокумента ,@ИсправляемыйСчетФактура ,@ВидСчетаФактуры ,@БланкСтрогойОтчетности)" ; } else { Команда.CommandText = @" Update _Document465 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld27344 = @ДатаИсправления ,_Fld11952RRef = @Контрагент ,_Fld22269RRef = @ДоговорКонтрагента ,_Fld11949 = @ДатаВходящегоДокумента ,_Fld11948 = @НомерВходящегоДокумента ,_Fld11953RRef = @ВалютаДокумента ,_Fld11954 = @СуммаДокумента ,_Fld11955 = @СформированПриВводеНачальныхОстатковНДС ,_Fld11951RRef = @Ответственный ,_Fld22267 = @НомерВходящегоДокументаЭлектронногоОбмена ,_Fld22268 = @ДатаВходящегоДокументаЭлектронногоОбмена ,_Fld11947 = @Комментарий ,_Fld23020 = @УдалитьНаАванс ,_Fld27345 = @ДатаИсправленияИсходногоДокумента ,_Fld27346 = @ДатаИсходногоДокумента ,_Fld27347 = @Исправление ,_Fld27348 = @КодВидаОперации ,_Fld27349 = @КодСпособаПолучения ,_Fld27350 = @НомерИсправления ,_Fld27351 = @НомерИсправленияИсходногоДокумента ,_Fld27352 = @НомерИсходногоДокумента ,_Fld11956RRef = @Организация ,_Fld27353 = @СуммаУвеличение ,_Fld27354 = @СуммаУменьшение ,_Fld27355 = @УчитыватьИсправлениеИсходногоДокумента ,_Fld27356 = @СчетФактураБезНДС ,_Fld27357 = @СуммаНДСУвеличение ,_Fld27358 = @СуммаНДСУменьшение ,_Fld27359 = @СуммаНДСДокумента ,_Fld27360RRef = @ИсправляемыйСчетФактура ,_Fld27361RRef = @ВидСчетаФактуры ,_Fld27362 = @БланкСтрогойОтчетности 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("БланкСтрогойОтчетности", БланкСтрогойОтчетности); Команда.ExecuteNonQuery(); } } }
} //Главный бухгалтер public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document464( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld27318 ,_Fld11932RRef ,_Fld11936RRef ,_Fld22260RRef ,_Fld11928 ,_Fld11938 ,_Fld11929RRef ,_Fld11930 ,_Fld11931 ,_Fld11923 ,_Fld11922 ,_Fld11933RRef ,_Fld11934 ,_Fld11937 ,_Fld11926RRef ,_Fld11924 ,_Fld27319 ,_Fld27320 ,_Fld27321 ,_Fld27322 ,_Fld27323 ,_Fld27324 ,_Fld27325 ,_Fld27326 ,_Fld27327 ,_Fld27328 ,_Fld27329 ,_Fld27330 ,_Fld11925RRef ,_Fld27331 ,_Fld27332 ,_Fld27333 ,_Fld27334 ,_Fld27335 ,_Fld27336 ,_Fld27337 ,_Fld27338RRef ,_Fld27339RRef ,_Fld27340RRef ,_Fld27341RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@ДатаВыставления ,@Контрагент ,@ДоговорКонтрагента ,@ВидСчетаФактуры ,@Под0 ,@ВалютнаяСумма ,@СтавкаНДС ,@Сумма ,@СуммаНДС ,@ДатаПлатежноРасчетногоДокумента ,@НомерПлатежноРасчетногоДокумента ,@ВалютаДокумента ,@СуммаДокумента ,@СформированПриВводеНачальныхОстатковНДС ,@Ответственный ,@Комментарий ,@Исправление ,@КодСпособаВыставления ,@КодВидаОперации ,@Выставлен ,@НомерИсправления ,@НомерИсходногоДокумента ,@ДатаИсходногоДокумента ,@НомерИсправленияИсходногоДокумента ,@ДатаИсправленияИсходногоДокумента ,@СуммаУвеличение ,@СуммаУменьшение ,@УчитыватьИсправлениеИсходногоДокумента ,@Организация ,@НомерИсправляемогоКорректировочногоДокумента ,@ДатаИсправляемогоКорректировочногоДокумента ,@СчетФактураБезНДС ,@СчетФактураНеВыставляется ,@СуммаНДСУвеличение ,@СуммаНДСУменьшение ,@СуммаНДСДокумента ,@ИсправляемыйСчетФактура ,@Комитент ,@Руководитель ,@ГлавныйБухгалтер)" ; } else { Команда.CommandText = @" Update _Document464 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld27318 = @ДатаВыставления ,_Fld11932RRef = @Контрагент ,_Fld11936RRef = @ДоговорКонтрагента ,_Fld22260RRef = @ВидСчетаФактуры ,_Fld11928 = @Под0 ,_Fld11938 = @ВалютнаяСумма ,_Fld11929RRef = @СтавкаНДС ,_Fld11930 = @Сумма ,_Fld11931 = @СуммаНДС ,_Fld11923 = @ДатаПлатежноРасчетногоДокумента ,_Fld11922 = @НомерПлатежноРасчетногоДокумента ,_Fld11933RRef = @ВалютаДокумента ,_Fld11934 = @СуммаДокумента ,_Fld11937 = @СформированПриВводеНачальныхОстатковНДС ,_Fld11926RRef = @Ответственный ,_Fld11924 = @Комментарий ,_Fld27319 = @Исправление ,_Fld27320 = @КодСпособаВыставления ,_Fld27321 = @КодВидаОперации ,_Fld27322 = @Выставлен ,_Fld27323 = @НомерИсправления ,_Fld27324 = @НомерИсходногоДокумента ,_Fld27325 = @ДатаИсходногоДокумента ,_Fld27326 = @НомерИсправленияИсходногоДокумента ,_Fld27327 = @ДатаИсправленияИсходногоДокумента ,_Fld27328 = @СуммаУвеличение ,_Fld27329 = @СуммаУменьшение ,_Fld27330 = @УчитыватьИсправлениеИсходногоДокумента ,_Fld11925RRef = @Организация ,_Fld27331 = @НомерИсправляемогоКорректировочногоДокумента ,_Fld27332 = @ДатаИсправляемогоКорректировочногоДокумента ,_Fld27333 = @СчетФактураБезНДС ,_Fld27334 = @СчетФактураНеВыставляется ,_Fld27335 = @СуммаНДСУвеличение ,_Fld27336 = @СуммаНДСУменьшение ,_Fld27337 = @СуммаНДСДокумента ,_Fld27338RRef = @ИсправляемыйСчетФактура ,_Fld27339RRef = @Комитент ,_Fld27340RRef = @Руководитель ,_Fld27341RRef = @ГлавныйБухгалтер Where _IDRRef = @Ссылка" ; } Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray()); /*Команда.Parameters.AddWithValue("Версия", Версия);*/ Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления); Команда.Parameters.AddWithValue("Номер", Номер); Команда.Parameters.AddWithValue("ДатаВыставления", ДатаВыставления); Команда.Parameters.AddWithValue("ВидСчетаФактуры", ВидСчетаФактуры.Ключ()); Команда.Parameters.AddWithValue("Под0", Под0); Команда.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(); } } }