Имя: Пароль:
1C
1C 7.7
v7: Реиндексация после ОЛЕ. Почему после подключения к 7,7 через OLE она отрабатывает, но
0 sysadminlk
 
12.10.19
18:39
Почему после подключения к 7,7 через OLE она отрабатывает, но при повторной авторизации требует переиндексацию?
Или почему при выходе слетают индексы?

Функция УстановитьПодключение(ПутьКБазе,ЮзерВБазе,ПарольВБазе)  
    Состояние("Подключение...");
    БазаОле=CreateObject("V77.Application");        
    Если БазаОле.Initialize(БазаОле.RMTrade,"/d"+СокрЛП(ПутьКБазе)+" /n"+СокрЛП(ЮзерВБазе)+" /p"+СокрЛП(ПарольВБазе), "NO_SPLASH_SHOW") = 0 тогда
        Сообщить("Ошибка открытия информационной базы!","!");
        Возврат 0;
    Иначе        
        //Сообщить("Подключена база "+ПутьКБазе+"");
        Возврат БазаОле;        
    КонецЕсли;          
КонецФункции
1 sysadminlk
 
12.10.19
18:40
Можно как-то залогиниваться монопольно не индексируя базу? или как починить чтоб индексы не слетали при выходе?
2 Pit0n_08
 
12.10.19
19:20
А в конце обработки есть отключение от ИБ БазаОле=""; ?
3 Chameleon1980
 
12.10.19
19:24
Аварийное завершение. Глушите переменную подключения?
4 sysadminlk
 
12.10.19
19:37
Я глушу при закрытии формы, но объект закрывается сам после того как войдет что-то сделает и всё.
Я выполняю на оле глобальную функцию получаю результат и все объект сам закрывается.
может потому что я глобальную функцию юзаю поэтому?
5 Chameleon1980
 
12.10.19
21:24
Хз. В резальтате то что прилетает?
6 Смотрящий
 
12.10.19
21:28
(0) реиндекс клюшки просят, если:
- нет активных полльзоввателей в базе.
- таблица _1SUSERS непустая

Краткое описание: таблица предназначена для хранения информации о подключенных пользователях. В таблице всегда одна строка. Именно по наличию строки в этой таблице 1С судит об аварийном завершении программы и предлагает переиндексировать ИБ в случае dbf-версии.
7 victuan1
 
14.10.19
13:51
Если ПустоеЗначение(ОЛЕБаза) = 0 Тогда
        Попытка
            ОЛЕБаза.ExecuteBatch("ЗавершитьРаботуСистемы(0)");
        Исключение
        КонецПопытки;
        ОЛЕБаза= 0;
КонецЕсли;
Ошибка? Это не ошибка, это системная функция.