lustin писал(а) 23. Августа 2007 :: 12:23:если подытожить то получается на знание
1С о реиндексации могут повлиять
1. Наличие файлов *.lck в каталогеИБ(), и во всех каталогах пользователя
2. запись в таблице 1SUSERS в поле USRSCNT >0
3. наличие записей в syslog\links.tmp
То есть если проверить на ОТСУТСТВИЕ процессов 1cv7.exe в памяти и "поубивать" вышеозначенные линки можно запускать reindex средствами Fox
Осталось проверить корректно ли реиндексирует Fox по сравнению с родным 1С-овским движком - а это можно сделать выполнив UPDATE на смену родителя в каком нибудь справочнике, чем сегодня вечерком и займусь.
Не согласен.
Наличие 1cv7.lck для 1С ни о чем не говорит (только что проверил).
Наличие записей в syslog\links.tmp (или просто его существование) - тоже (ибо выход пользователя лишь снимает блокировку с определенного байта, находящегося за пределами файла) (только что проверил).
Лишь ненулевой счетчик или отсутствие индексного файла - причина. Хотя при отсутствии CDX вопрос не задается.
Проверять наличие процесса 1cv7.exe не требуется (да и как узнать, относится ли он к нашей базе?), достаточно проверить отсутствие 1cv7.lck в каталоге базы, а в случае наличия - попытаться его удалить (5 лет работает батник, архивирующий базу ночью, утром могу проверить, не сообщил ли он о неудаче).
А вот переиндексация средствами Фокса - это хорошо бы. И не ради 20% экономии времени.
Мало ли чего конфигуратору в пакетном режиме икнется ночью. Потом, с утра по раньше, лети на редко посещаемую работу, ищи его, снимай... Выслушивай жалобы, что "нам же работать нужно!.. а нельзя так сделать, чтобы такого не повторялось?".
Так что предлагаю такую редакцию :
1. База свободна, если КаталогИБ()+"1cv7.lck" отсутствует или стирабелен.
2. Переиндексация нужна, если база свободна, а в USRSCNT не ноль.