Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Пропажа записей после вставки (число прочтений - 4293 )
ScareCrow
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 32
Зарегистрирован: 10. Июля 2006
Пропажа записей после вставки
24. Октября 2006 :: 07:42
Печать  
     Попытка
                 
                       
                       Запрос.ВыполнитьИнструкцию("begin tran");
                       Сообщить("Новая Партия "+СОКРП(ИЛТЗ.Наименование) +" для товара "+ИЛТЗ.Владелец   );
                       ТекстЗапроса = "
                       |SET NOCOUNT ON
                       |INSERT INTO $Справочник.farmПартии
                       |(
                       |ID,
                       |DESCR,
                       |$Справочник.farmПартии.ДатаПартии,
                       |$Справочник.farmПартии.НомерПартии,
                       |$Справочник.farmПартии.Серия,
                       |$Справочник.farmПартии.Комитент,
                       |$Справочник.farmПартии.Комментарий,
                       |$Справочник.farmПартии.Цена,                        
                       |$Справочник.farmПартии.ДатаЦены,
                       |VERSTAMP,
                       |ISMARK,
                       |PARENTEXT,
                       |CODE
                       |)
                       |
                       |SELECT :ID,:Наименование,:ДатаПартии,:НомерПартии,
                       |(SELECT Спр.ID AS Серия FROM $Справочник.farmСерии AS Спр
                       |WHERE Спр.PARENTEXT = :Владелец AND Спр.DESCR = :ВыбСерия),:Комитент,:Комментарий,0,
                       | :ДатаЦены,1,0,:ВыбНоменклатура,:Код  
                       |IF @@ROWCOUNT = 0 raiserror('пипец',16, 1)
                       |
                       |";
                       //*****************************************************
                       Запрос.УстановитьТекстовыйПараметр("ID",Лок.НовыйИД());
                       Запрос.УстановитьТекстовыйПараметр("Наименование", farmСтр2SQL(ИЛТЗ.Наименование));
                       Запрос.УстановитьТекстовыйПараметр("ДатаПартии",ИЛТЗ.ДатаПартии);
                       Запрос.УстановитьТекстовыйПараметр("НомерПартии",ИЛТЗ.НомерПартии);
                       Запрос.УстановитьТекстовыйПараметр("ДатаПартии",ИЛТЗ.ДатаПартии);
                       Запрос.УстановитьТекстовыйПараметр("Владелец",Владелец);
                       ));
                       Если  СокрЛП(Строка(ИЛТЗ.Комитент)) = "Атван" Тогда
                             .ЗначениеПоНомеру(1));
                       Иначе
                             Запрос.УстановитьТекстовыйПараметр("Комитент",ИЛТЗ.Комитент);
                       КонецЕсли;      
                       
                       
                       Запрос.УстановитьТекстовыйПараметр("ДатаЦены", "Jan  1 1753 12:00:00:000AM");
                       Запрос.УстановитьТекстовыйПараметр("ВыбНоменклатура",Владелец);  
                       Запрос.УстановитьТекстовыйПараметр("Код",ИЛТЗ.Код);
                       
                       Запрос.Отладка(0);
                       
                       Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
                       
                       Запрос.ВыполнитьИнструкцию("if @@trancount > 0 commit tran");
                       ТекстЗапроса="";
                 Исключение

                        Сообщить("Откат транзакции");
                       Запрос.ВыполнитьИнструкцию("if @@trancount > 0 rollback tran");
                 
                 КонецПопытки;

делается вставка элементов в справочник. вставляется.  select count(id) из QA эти элементы видит. если прервать обработку, только что вставленные записи могут пропасть. а могут и не пропасть. 50/50. сиквел при этом жрет процентов 30 ресурсов. похоже на откат транзакций на вставку - но непонятно, каждая вставка фиксируется. почему они могут исчезать?
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Пропажа записей после вставки
Ответ #1 - 24. Октября 2006 :: 07:49
Печать  
Вообще-то 1С очень не любит когда в ее базе кто-то пальцами пытается что-то записать.
Может все же лучше Нечто типа Новый(); Записать();
а потом через update ...
                      |DESCR,
                      |$Справочник.farmПартии.ДатаПартии,
                      |$Справочник.farmПартии.НомерПартии,
                      |$Справочник.farmПартии.Серия,
                      |$Справочник.farmПартии.Комитент,
                      |$Справочник.farmПартии.Комментарий,
                      |$Справочник.farmПартии.Цена,                          
                      |$Справочник.farmПартии.ДатаЦены,  

Это как-то безболезненно проходит.

А, ну и конечно, ВыполнитьИнструкцию - это криво. Правильнее через Выполнить()
  
Наверх
 
IP записан
 
ScareCrow
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 32
Зарегистрирован: 10. Июля 2006
Re: Пропажа записей после вставки
Ответ #2 - 24. Октября 2006 :: 07:52
Печать  
если не выясню что сейчас происходит так и сделаю. пока же моя вставка на 1.5- 2 раза быстрее.
Новый()
Записать()
Элементов 96 тысяч. это существенно.
p.s. Кто нибудь еще сталкивался с проблемами при прямом инсерте?
  
Наверх
 
IP записан
 
ScareCrow
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 32
Зарегистрирован: 10. Июля 2006
Re: Пропажа записей после вставки
Ответ #3 - 24. Октября 2006 :: 07:56
Печать  
Цитата:
А, ну и конечно, ВыполнитьИнструкцию - это криво. Правильнее через Выполнить()


ВыполнитьИнструкцию использую потому что она формирует исключение. чем это хуже Выполнить()?
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пропажа записей после вставки
Ответ #4 - 24. Октября 2006 :: 08:11
Печать  
ScareCrow писал(а) 24. Октября 2006 :: 07:52:
если не выясню что сейчас происходит так и сделаю. пока же моя вставка на 1.5- 2 раза быстрее.
Новый()
Записать()
Элементов 96 тысяч. это существенно.
p.s. Кто нибудь еще сталкивался с проблемами при прямом инсерте?

а ты в 1С просто записсываешь, или делаешь это в 1С-ной транзакции?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
ScareCrow
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 32
Зарегистрирован: 10. Июля 2006
Re: Пропажа записей после вставки
Ответ #5 - 24. Октября 2006 :: 08:12
Печать  
просто вставляю.. в первом посте весь код на вставку. транзакциями тоже управляю сам..
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пропажа записей после вставки
Ответ #6 - 24. Октября 2006 :: 08:13
Печать  
ScareCrow писал(а) 24. Октября 2006 :: 08:12:
просто вставляю.. в первом посте весь код на вставку. транзакциями тоже управляю сам..

а ты попробуй это сделать в "их" транзакции и приятно удивишься, шо ты изобретаешь лисапед  Подмигивание
кроме того получишь прирост, гораздо больше, нежели 2 раза...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
U_zer
Экс-Участник


Re: Пропажа записей после вставки
Ответ #7 - 24. Октября 2006 :: 08:41
Печать  
Выполнить() тоже формирует исключение.
ВыполнитьИнструкцию() обычно для получения выборок используют.
  
Наверх
 
IP записан
 
ScareCrow
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 32
Зарегистрирован: 10. Июля 2006
Re: Пропажа записей после вставки
Ответ #8 - 24. Октября 2006 :: 10:16
Печать  
Цитата:
Выполнить() тоже формирует исключение.
ВыполнитьИнструкцию() обычно для получения выборок используют.


у меня не формирует.. покажите пожалуйста, как вы делали..
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Пропажа записей после вставки
Ответ #9 - 24. Октября 2006 :: 10:33
Печать  
Из доки:

Синтаксис: Выполнить(ТекстSQL)

Параметры:

ТекстSQL - тип: Строка. SQL запрос не возвращающий результат набор данных.
Возвращает: тип: Число. 1 - запрос выполнился успешно, 0 - безуспешно, описание ошибки можно получить, вызвав метод ПолучитьОписаниеОшибки.

Описание: позволяет выполнить SQL запрос, без возврата результата выборки. Метод в основном предназначен для выполнения запросов вставки, обновления, вызова процедур.

Ну и соответственно Если Запрос.Выполнить(ТЗ) = 0 Тогда ...
  
Наверх
 
IP записан
 
ScareCrow
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 32
Зарегистрирован: 10. Июля 2006
Re: Пропажа записей после вставки
Ответ #10 - 24. Октября 2006 :: 14:12
Печать  
после ряда экспериментов выяснилось - если снять процесс 1С из таск манагера сиквел откатит все что так вставилось...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать