Имя: Пароль:
1C
1C 7.7
v7: Запретить кнопку нет в диалоге переиндексировать
0 Zoeh
 
05.09.11
12:52
Программа была завершена аварийно...

Да / Нет
Дак вот кнопку нет хочется запретить
Господа кто нибудь увлекался этой задачей, слишком часто страдаю от шаловливых рук пользователей. Т.к. на больших многопользовательских базах это критично.
1 Ахиллес
 
05.09.11
12:53
Можно ресурс эдитором каким нибудь поковырять. Но это нарушение лицензии будет.
2 Попытка1С
 
05.09.11
12:54
Запретить монопольный вход?
3 1Сергей
 
05.09.11
12:55
(2) они тогда вообще переиндексировать не смогут
4 FN
 
05.09.11
12:56
можно всем 1с-пользователям запретить вход монопольно, кроме одного.
пароль этого пользователя никому не говорить, но сделать батник с дел *.цдх и монопольным запуском.
если совсем панацея, то батник тоже нужно как-то закрыть...
5 Zoeh
 
05.09.11
12:57
(4) хорошая идея.
6 Fragster
 
гуру
05.09.11
12:58
перейти на SQL
7 Mikeware
 
05.09.11
12:58
Нефиг дозволять завершать программу аварийно. И опять же, на мелких базенках реиндексация пройдет быстро. А на крупных - такого вопроса уже не задается..
8 andrewks
 
05.09.11
12:59
(6) реже, но круче.
9 Fragster
 
гуру
05.09.11
13:00
(7) обрыв терминальной сессии - и кирдык
10 Fragster
 
гуру
05.09.11
13:00
(8) это что значит? там индексы исключительно в профилактических целях обслуживаются...
11 andrewks
 
05.09.11
13:01
(10) я об этом и говорю.
12 Zoeh
 
05.09.11
13:05
а какая дллка отвечает за диалоги?
13 andrewks
 
05.09.11
13:09
resource editor
14 21stas
 
05.09.11
13:10
Была ломалка, которая этот параметр настраивала и кучу других (в частности, обход паролей). Как называется - не помню.
15 povar
 
05.09.11
13:11
(14) лучше не вспоминай
16 Zoeh
 
05.09.11
13:26
Нет такого диалога
17 Zoeh
 
05.09.11
13:26
Все есть,  а именно переиндексации нету
18 Fragster
 
гуру
05.09.11
13:28
можно всякие приблуды типа AutoIt заставить сразу же нажимать на ок при появлении соответствующего окна
19 Mikeware
 
05.09.11
13:31
(9) И что, "переподключаться..." не спасет, нужен обязательно "обрыв" ?
20 andrewks
 
05.09.11
13:32
запретить всем, кроме робота, монопольный вход, на раб.столе ярлык  -Переиндексация, в нём - дел *.цдх, запуск монопольно, выход
21 smaharbA
 
05.09.11
13:35
убить все сдх не предлагали еще ?
22 Fragster
 
гуру
05.09.11
13:35
(19) при некоторых обстоятельствах - не спасает.
23 Zoeh
 
05.09.11
13:37
Запретить то можно, но вот проблема юзеры иногда делают перепроведение.
24 Mikeware
 
05.09.11
13:39
(23) Вот когда наведешь у себя порядок - тогда и вопросов таких не будет...
25 ЧеловекДуши
 
05.09.11
13:43
(23)Оставь, как есть, напиши бумажку.
"При переиндексации нажимать 'ДА'!" и опиши, то что будет, если он нажмет "НЕТ".
И если пользователь не нажмет "ДА", то это будет его личная проблема.
...Или не ленись и делай все сам...
26 Zoeh
 
05.09.11
13:45
(25) у них уже этих бумажек
27 Соло
 
05.09.11
13:48
(4),(20)  и прочим любителей батников: У 1С есть режим пакетного запуска, который полностью решает поставленную проблему. Монопольный вход нужно запретить + ярлык пакетного запуска индексации. Для этого заводится пользователь с правом монопольного доступа, но без прочих прав, и он прописывается в ярлыке...
Делов на пять минут. По такой схеме работали почти пять лет.
28 andrewks
 
05.09.11
13:50
(27) ... и прочим любителям: дел *.цдх и монопол круче ваших пакетных переиндексаций.  так то вот...
29 Torquader
 
05.09.11
18:39
Проблема, на самом деле, глубже.
Если 1С "упала" или её "закрыли" или "завалили" каким-то образом, то она узнаёт об этом по счётчику открытых объектов, который живёт в файлах базы.
Но, узнаёт она только тогда, когда завершены все сеансы, так как освобождаются блокировки 1Cv7.LCK и система узнаёт, что в базе никого не было, а что-то было открыто.
Если же кто-то из базы не вышел, то даже если индексы пришли в негодность, то никто об этом не узнает.
Поэтому, на файловой базе желательно делать переиндексацию как можно чаще (каждый день вечером, когда все из базы вышли).
Ещё можно сделать альтернативный механизм, который будет подсчитывать число ссылок и число открытых сеансов, чтобы более гибко обнаруживать момент "нарушения целостности", но это всё равно не спасёт от задвоенных внутренних идентификаторов.
Поэтому, целостность базы обеспечивает только применение SQL-версии, так как на его плечи ложится вся ответственность за отслеживание связей между таблицами базы.
Однако, при выключении питания машины с SQL-сервером база умирает ещё быстрее.
P.S. а диалог прекрасно ищется по текстовым строкам и вызову MessageBox в 1cv7.exe и правится на свой страх и риск (в данном случае никакая защита программы не нарушается, а выполняется внесение изменений в программу с целью улучшения её функционирования на оборудовании заказчика - также можно написать внешнюю компоненту, которая будет выполнять подмену системного вызова MessageBox и определять, что нужно делать.)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший