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