}                                                    //Бланк строгой отчетности
        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();
                }
            }
        }
Example #2
0
        }                                                                              //Главный бухгалтер
        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();
                }
            }
        }