} //Дата входящего документа электронного обмена 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 _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(); } } }