Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема 1С вываливается при использовании ReconnectNative (число прочтений - 2377 )
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
1С вываливается при использовании ReconnectNative
03. Июля 2006 :: 05:14
Печать  
Нашел пример обработки с использованием ReconnectNative() для группового проведения документов, немного подправил для своего случая, но увы при проведении после второго реконнекта 1С вываливается без звука
Код
Выбрать все
Процедура Выполнить()
    База=СоздатьОбъект("ODBCDatabase");
    
    Запрос=СоздатьОбъект("ODBCRecordset");
    Запрос.УстановитьТекстовыйПараметр("НачДата",НачДата);
    Запрос.УстановитьТекстовыйПараметр("КонДата",КонДата);
    
    ТЗ=Запрос.ВыполнитьИнструкцию("
    |select
    | iddoc [Документ $Документ],
    | iddocdef Документ_вид
    |from _1sjourn j (nolock)
    |where j.date_time_iddoc between :НачДата and :КонДата~
//    | and closed = 1
    |order by j.date_time_iddoc
    |");
    
    ДоковВСеансе=5;
    Сч=ДоковВСеансе;
    ДокОбъект=СоздатьОбъект("Документ");
    
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Док=ТЗ.Документ;
        Если ((Док.Вид()="РасходнаяНакладная") Или (Док.Вид()="ПеремещениеТМЦ")
        Или (Док.Вид()="КорректировкаСклада") Или (Док.Вид()="СписаниеТМЦ")
        Или (Док.Вид()="РасходнаяНакладнаяИтог") Или (Док.Вид()="ПоступлениеТМЦ")
        Или (Док.Вид()="РезервированиеТовара") Или (Док.Вид()="КорректировкаПоступлениеТМЦ")
        Или (Док.Вид()="ОприходованиеТМЦ") Или (Док.Вид()="СчетФактураВыданный")
        Или (Док.Вид()="ТовЧек_Накладная") Или (Док.Вид()="НакладнаяУпр"))Тогда
            
            ДокОбъект.НайтиДокумент(Док);
            Сообщить(ТЗ.Документ);
            ДокОбъект.Провести();
            
            Сч=Сч-1;
            
            Если Сч=0 Тогда
                Сообщить("============================ Реконнект ================================");
                База.ReconnectNative();
                Сч=ДоковВСеансе;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;    
КонецПроцедуры
 


пробовал изменять переменную ДоковВСеансе - все равно закономерность четкая сразу после второго реконнекта 1С вываливается
1С 25sql -релиз, 1С++ 1.8.1.6

Вываливается и именно при попытке выполнить
ДокОбъект.Провести()
для первого документа проводимого после второго реконнекта

Забыл упамянуть обработка тестируется на sql2000 SP4
вернулся к оригиналу обработки, единственно заремил строку | and closed = 1, т.к. в моем случае нужно сначала делать все документы непроведенными (что и было сделано до этого другой обработкой не использующей данный метод)
Вообщем эффект вываливания 1С тотже, при почти исходном коде
Код
Выбрать все
Процедура Выполнить()
    База=СоздатьОбъект("ODBCDatabase");
    
    Запрос=СоздатьОбъект("ODBCRecordset");
    Запрос.УстановитьТекстовыйПараметр("НачДата",НачДата);
    Запрос.УстановитьТекстовыйПараметр("КонДата",КонДата);
    
    ТЗ=Запрос.ВыполнитьИнструкцию("
    |select
    | iddoc [Документ $Документ],
    | iddocdef Документ_вид
    |from _1sjourn j (nolock)
    |where j.date_time_iddoc between :НачДата and :КонДата~
//    | and closed = 1
    |order by j.date_time_iddoc
    |");
    
    ДоковВСеансе=5;
    Сч=ДоковВСеансе;
    ДокОбъект=СоздатьОбъект("Документ");
    
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        
        ДокОбъект.НайтиДокумент(ТЗ.Документ);
        Сообщить(ТЗ.Документ);
        ДокОбъект.Провести();
        
        Сч=Сч-1;
        
        Если Сч=0 Тогда
            Сообщить("============================ Реконнект ================================");
            База.ReconnectNative();
            Сч=ДоковВСеансе;
        КонецЕсли;
        
    КонецЦикла;    
КонецПроцедуры
 


Пробовал проводить в другой базе не отменяя проведение документов за выбранный период
- процесс длится немного дольше, происходит порядка 6-7 реконектов, но затем выскакивает ошибка
"Invalid Handle", а затем сообщение "Невосстановимая ошибка базы" и 1С снова вываливается


  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re:  1С вываливается при использовании Reconn
Ответ #1 - 03. Июля 2006 :: 05:26
Печать  
перед реконнектом надо удалить все открытые курсоры:
Код
Выбрать все
ДокОбъект = 0; //--- тут надо удалить все объекты, созданные методом СоздатьОбъект("Документ/Справочник/регистр/и т.д.")
База.ReconnectNative(); 

  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re:  1С вываливается при использовании Reconn
Ответ #2 - 03. Июля 2006 :: 10:26
Печать  
Огромное спасибо Класс
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re:  1С вываливается при использовании Reconn
Ответ #3 - 15. Октября 2007 :: 19:50
Печать  
Такая же фигня )
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать