Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как отключить запрос переиндексации? (число прочтений - 6014 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Как отключить запрос переиндексации?
28. Февраля 2011 :: 03:55
Печать  
Есть ночная регламентная переиндексация, перед которой выполняется изгнание юзверей установкой значения константы (после переиндексации сбрасывается).
Обычно все проходит идеально, но если вдруг случилось так, что в момент начала операции в базе никого нет и кто-то неудачно вылетел, то при попытке зайти в 1С для установки константы получается зависание с предложением начать переиндексацию...
Вопрос состоит в следующем:
  • Реально ли сделать так, чтобы этот вопрос не выскакивал для определенного юзверя?
  • Или же есть способ определить, что в базе нет никого и требуется переиндексация без запуска 1С?
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Как отключить запрос переиндексации?
Ответ #1 - 28. Февраля 2011 :: 04:45
Печать  
Обычно перед выполнением каких-либо регламентных операций (полагаю что это 7.7 dbf), делаю принудительную полную переиндексацию. Для этого просто удаляем все cdx, и запускаем базу монопольно.
Правда в этом случае надо быть уверенным что в данный момент в базе никто не сидит Улыбка
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Как отключить запрос переиндексации?
Ответ #2 - 28. Февраля 2011 :: 06:26
Печать  
О том и говорю: я исходил из того, что в базе кто-то может сидеть (производство круглосуточное). В этом случае все идеально отрабатывает, как и тогда, когда не было вылетов, а вот если случился вылет и все вышли (правда, не понимаю, чего это они все вышли), - то зависон  Плачущий

Кстати, для принудительного переиндексирования удалять индексы не требуется - достаточно дать команду 1С-ке:
[General]
Quit=Y
CheckAndRepair=Y
[CheckAndRepair]
Reindex=Y

У меня там еще куча всего делается, включая пересчеты, упаковку и сохранение, но это в данном случае не важно.
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как отключить запрос переиндексации?
Ответ #3 - 28. Февраля 2011 :: 07:48
Печать  
Dmitry The Wing писал(а) 28. Февраля 2011 :: 06:26:
а вот если случился вылет и все вышли (правда, не понимаю, чего это они все вышли), - то зависон  Плачущий

Кстати, для принудительного переиндексирования удалять индексы не требуется - достаточно дать команду 1С-ке:
[General]
Quit=Y
CheckAndRepair=Y
[CheckAndRepair]
Reindex=Y


1. Если при монопольном запуске в базе нет ни одного CDX, то они просто молча восстанавливаются.
2. Если есть хоть один CDX и был кривой выход из базы (определяется ненулевым значением в поле USRSCNT файла 1SUSERS.DBF), то сначала восстанавливаются недостающие файлы а потом задается вопрос... (вариант с "[General]..." не рассматриваем)
3. Кто мешает попробовать грохнуть все CDX? Если в базе кто-то есть - файлы не удалятся (использование спецсредств не рассматриваем, ага?)

И ещё, не понимаю -- ты включаешь констану "Все на выход", все выходят... и тут же пишешь
Dmitry The Wing писал(а) 28. Февраля 2011 :: 06:26:
а вот если случился вылет и все вышли (правда, не понимаю, чего это они все вышли),

Это как? Сам же выгнал?

А вылететь-то чел может в любое время, и 1С это приметит при первом входе в свободную от юзеров базу (монопольно или нет - всё равно, просто результат разный).
  
Наверх
ICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Как отключить запрос переиндексации?
Ответ #4 - 28. Февраля 2011 :: 09:02
Печать  
dnp писал(а) 28. Февраля 2011 :: 07:48:
3. Кто мешает попробовать грохнуть все CDX? Если в базе кто-то есть - файлы не удалятся

Часть чайлов при разделенном доступе может и удалиться...

dnp писал(а) 28. Февраля 2011 :: 07:48:
И ещё, не понимаю -- ты включаешь констану "Все на выход", все выходят... и тут же пишешь
Dmitry The Wing писал(а) 28. Февраля 2011 :: 06:26:
а вот если случился вылет и все вышли (правда, не понимаю, чего это они все вышли),

Это как? Сам же выгнал?

В том то и проблема, что я не могу включить константу, не зайдя в 1С... а зайти нельзя потому что она при входе предлагает переиндексацию...
  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Как отключить запрос переиндексации?
Ответ #5 - 28. Февраля 2011 :: 17:24
Печать  
На чем угодно (делфи/бейсик/си) напиши "update 1sconst where set" и т. д.
Если база в терминале - то файлик cmd с командой гарантированно выгонит всех
Код
Выбрать все
taskkill /im 1cv7s.exe /f /t
 


  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как отключить запрос переиндексации?
Ответ #6 - 01. Марта 2011 :: 05:00
Печать  
Я давным-давно делал файл 1S.StatusIB.wsc
Цитата:
     Определение статуса информационной базы 1С.
     Используются следующие варианты:
     1)      "В базе никого нет"
     2)      "База работает или в монопольном режиме или один пользователь работает в разделенном режиме"
     3)      "Выполнен некорректный выход из 1С, нужна переиндексация"
     4)      "1С работает в разделенном режиме"
     
     Примечание.
     1) скриплет работает только для DBF-баз
     2) пока не удается разделить монопольный режим или работу одного пользователя в разделенном режиме 'все работает
     
   Copyright (c) Артур Аюханов aka artbear, 2004

файл включен в поставку скриптов для Опенконфа
ЗЫ Можешь по имени файла поискать на форуме, подобные темы уже обсуждались.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Как отключить запрос переиндексации?
Ответ #7 - 01. Марта 2011 :: 05:05
Печать  
classic писал(а) 28. Февраля 2011 :: 17:24:
На чем угодно (делфи/бейсик/си) напиши "update 1sconst where set" и т. д.
Если база в терминале - то файлик cmd с командой гарантированно выгонит всех
Код
Выбрать все
taskkill /im 1cv7s.exe /f /t 


В принципе, можно вынести код установки константы и формирования файла параметров пакетного файла во внешний JScript... а вот убиение процессов не поможет, т.к. убивать нужно не все процессы, а только те, что работают с конкретной конфой... остальные конфы трогать не надо...
Осталось вывести код для обновления конкретной константы. Есть пример?

Код sql-запроса прост: UPDATE 1SCONST.DBF SET value = :value WHERE id = :id
А как его выполнить не из 1С? Есть пример?

artbear писал(а) 01. Марта 2011 :: 05:00:
Я давным-давно делал файл 1S.StatusIB.wsc

Скрипт у себя в оперконфе нашел, но как-то непонятно, как его заюзать не из 1С... Поясни?

P.S.: Поиск по форуму по имени скрипта кажет только эту ветку  Плачущий
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как отключить запрос переиндексации?
Ответ #8 - 01. Марта 2011 :: 06:08
Печать  
Dmitry The Wing писал(а) 01. Марта 2011 :: 05:05:
artbear писал(а) 01. Марта 2011 :: 05:00:
Я давным-давно делал файл 1S.StatusIB.wsc

Скрипт у себя в оперконфе нашел, но как-то непонятно, как его заюзать не из 1С... Поясни?

P.S.: Поиск по форуму по имени скрипта кажет только эту ветку  Плачущий

1. Загугли строку поиска site:1cpp.ru 1S.StatusIB.wsc
и все получится Улыбка
например,
http://www.1cpp.ru/forum/YaBB.pl?num=1187687024
http://www.1cpp.ru/forum/YaBB.pl?num=1286541784/8

2. Использование скриптлета
Цитата:
объект = СоздатьОбъект("1S.IBState");
состояниеБазы = объект.IBState(нужныйКаталогИБ);

если не получиться, нужно скрипт зарегить через regsvr32
ЗЫ ну и посмотри код самого скрипта и комменты в коде - там еще несколько публичных методов
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Как отключить запрос переиндексации?
Ответ #9 - 01. Марта 2011 :: 08:16
Печать  
Вроде бы все предусмотрел. Полночь покажет.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать