Пример скрипта на VBS для входа пользователя в базу, в случае, если она требует реиндексации.
Вопрос возник, когда пользователю, который входит в 1С с командной строки, стало выпадать сообщение о том, что необходимо переиндексировать базу. Зайти монопольно он не мог, потому сидел и доставал меня 🙂
В качестве решения — при запуске, проверяю нужна ли реиндексация, и если нужна — провожу ее, а потом уже пускаю в базу пользователя. Естественно можно сюда же добавить еще что-то, например создание копии базы, записи в логи, и т.п.
А как это работает? Не могли бы поподробнее
Ну скрипт я тут просто «с мясом» выложил 🙂
Принцип работы такой — 1С определяет необходимость реиндексации по параметрам в таблице 1SUSERS — елси там стоит значение USRSCNT отличное от нуля — значит необходима реиндексация (т.е. пользователь вышел и базы некорректно). ПРичем по опытам — даже если тупо удалить файлы индексов, но оставить 1SUSERS в нормальном виде, 1С не требует реиндексации (что странно).
Собственно на этом и «играю» — проверяю наличие и заблокирванность файла 1Cv77.LCK (есть ли кто-то в базе — если есть — то просто запускаю 1С, поскольку все равно реиндексировать нельзя), а потом проверяю таблицу 1SUSERS, и при необходимости реиндексирую базу (только сначала удаляю файл 1SUSERS)
А файл udl — просто файл настроек подключения в БД в формате dbf, чтобы не прописывать все параметры в скрипте.