public static Guid Ссылка(this ВидПриемаРозничнойВыручки Значение) { switch (Значение) { case ВидПриемаРозничнойВыручки.ИзКассы: return(ИзКассы); case ВидПриемаРозничнойВыручки.ИзНТТ: return(ИзНТТ); } return(Guid.Empty); }
public static ВидПриемаРозничнойВыручки Получить(this ВидПриемаРозничнойВыручки Значение, Guid Ссылка) { if (Ссылка == ИзКассы) { return(ВидПриемаРозничнойВыручки.ИзКассы); } else if (Ссылка == ИзНТТ) { return(ВидПриемаРозничнойВыручки.ИзНТТ); } return(ВидПриемаРозничнойВыручки.ПустаяСсылка); }
public static byte[] Ключ(this ВидПриемаРозничнойВыручки Значение) { return(Ссылка(Значение).ToByteArray()); }
public static readonly Guid ИзНТТ = new Guid("8d5d3088-81dd-ecc9-4240-0ec6c19352ac"); //из НТТ public static ВидПриемаРозничнойВыручки Получить(this ВидПриемаРозничнойВыручки Значение, byte[] Ссылка) { return(Получить(Значение, new Guid(Ссылка))); }
} //Денежный чек public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document412( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld10111RRef ,_Fld10112RRef ,_Fld10113RRef ,_Fld10114RRef ,_Fld10116RRef ,_Fld10117RRef ,_Fld10118RRef ,_Fld10119 ,_Fld10121 ,_Fld10122 ,_Fld10123 ,_Fld10126RRef ,_Fld10124 ,_Fld10125 ,_Fld10127 ,_Fld10129 ,_Fld10130 ,_Fld10137 ,_Fld10131RRef ,_Fld10132RRef ,_Fld10133RRef ,_Fld10134RRef ,_Fld10136RRef ,_Fld10135RRef ,_Fld10138RRef ,_Fld10140 ,_Fld10141 ,_Fld10142 ,_Fld10143 ,_Fld10144 ,_Fld10145 ,_Fld10146 ,_Fld10147 ,_Fld10148 ,_Fld10139 ,_Fld10149 ,_Fld10150RRef ,_Fld10151RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@Организация ,@Касса ,@Подразделение ,@ВидОперации ,@ДоговорКонтрагента ,@ВалютаВзаиморасчетовПодотчетника ,@ВалютаДокумента ,@СуммаДокумента ,@ПринятоОт ,@Основание ,@Приложение ,@Ответственный ,@ОтраженоВОперУчете ,@Оплачено ,@Комментарий ,@ОтражатьВУправленческомУчете ,@ОтражатьВБухгалтерскомУчете ,@ОтражатьВНалоговомУчете ,@СчетУчетаРасчетовСКонтрагентом ,@СубконтоКт1 ,@СубконтоКт2 ,@СубконтоКт3 ,@СчетОрганизации ,@СтатьяДвиженияДенежныхСредств ,@СтавкаНДС ,@Содержание_УСН ,@Графа4_УСН ,@Графа5_УСН ,@Графа6_УСН ,@Графа7_УСН ,@ДоходыЕНВД_УСН ,@РасходыЕНВД_УСН ,@НДС_УСН ,@РучнаяНастройка_УСН ,@ВыручкаСНТТ ,@НомерЧекаККМ ,@ВидПриемаРозничнойВыручки ,@ДенежныйЧек)" ; } else { Команда.CommandText = @" Update _Document412 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld10111RRef = @Организация ,_Fld10112RRef = @Касса ,_Fld10113RRef = @Подразделение ,_Fld10114RRef = @ВидОперации ,_Fld10116RRef = @ДоговорКонтрагента ,_Fld10117RRef = @ВалютаВзаиморасчетовПодотчетника ,_Fld10118RRef = @ВалютаДокумента ,_Fld10119 = @СуммаДокумента ,_Fld10121 = @ПринятоОт ,_Fld10122 = @Основание ,_Fld10123 = @Приложение ,_Fld10126RRef = @Ответственный ,_Fld10124 = @ОтраженоВОперУчете ,_Fld10125 = @Оплачено ,_Fld10127 = @Комментарий ,_Fld10129 = @ОтражатьВУправленческомУчете ,_Fld10130 = @ОтражатьВБухгалтерскомУчете ,_Fld10137 = @ОтражатьВНалоговомУчете ,_Fld10131RRef = @СчетУчетаРасчетовСКонтрагентом ,_Fld10132RRef = @СубконтоКт1 ,_Fld10133RRef = @СубконтоКт2 ,_Fld10134RRef = @СубконтоКт3 ,_Fld10136RRef = @СчетОрганизации ,_Fld10135RRef = @СтатьяДвиженияДенежныхСредств ,_Fld10138RRef = @СтавкаНДС ,_Fld10140 = @Содержание_УСН ,_Fld10141 = @Графа4_УСН ,_Fld10142 = @Графа5_УСН ,_Fld10143 = @Графа6_УСН ,_Fld10144 = @Графа7_УСН ,_Fld10145 = @ДоходыЕНВД_УСН ,_Fld10146 = @РасходыЕНВД_УСН ,_Fld10147 = @НДС_УСН ,_Fld10148 = @РучнаяНастройка_УСН ,_Fld10139 = @ВыручкаСНТТ ,_Fld10149 = @НомерЧекаККМ ,_Fld10150RRef = @ВидПриемаРозничнойВыручки ,_Fld10151RRef = @ДенежныйЧек 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("СубконтоКт1", Guid.Empty); Команда.Parameters.AddWithValue("СубконтоКт2", Guid.Empty); Команда.Parameters.AddWithValue("СубконтоКт3", Guid.Empty); Команда.Parameters.AddWithValue("СтавкаНДС", СтавкаНДС.Ключ()); Команда.Parameters.AddWithValue("Содержание_УСН", Содержание_УСН); Команда.Parameters.AddWithValue("Графа4_УСН", Графа4_УСН); Команда.Parameters.AddWithValue("Графа5_УСН", Графа5_УСН); Команда.Parameters.AddWithValue("Графа6_УСН", Графа6_УСН); Команда.Parameters.AddWithValue("Графа7_УСН", Графа7_УСН); Команда.Parameters.AddWithValue("ДоходыЕНВД_УСН", ДоходыЕНВД_УСН); Команда.Parameters.AddWithValue("РасходыЕНВД_УСН", асходыЕНВД_УСН); Команда.Parameters.AddWithValue("НДС_УСН", НДС_УСН); Команда.Parameters.AddWithValue("РучнаяНастройка_УСН", учнаяНастройка_УСН); Команда.Parameters.AddWithValue("ВыручкаСНТТ", ВыручкаСНТТ); Команда.Parameters.AddWithValue("НомерЧекаККМ", НомерЧекаККМ); Команда.Parameters.AddWithValue("ВидПриемаРозничнойВыручки", ВидПриемаРозничнойВыручки.Ключ()); Команда.Parameters.AddWithValue("ДенежныйЧек", ДенежныйЧек.Ссылка); Команда.ExecuteNonQuery(); } } }