![]() |
![]() |
![]() |
|
Горячая замена конфигурации 7.7: md_chng.dll | ☑ | ||
---|---|---|---|---|
0
romix
модератор
21.04.06
✎
02:51
|
Продолжим тему с перехватом WinAPI и функций DLL.
Файл для скачивания: http://x-romix.narod.ru/MD_CHANGER.rar (52К, ссылка доступна для скачивания левой кнопкой мыши). Программа для "горячей" замены конфигурации без необходимости завершать работу всех пользователей. Достаточно скопировать в папку с конфигурацией файл 1cv7_1.md, 1cv7_2.md и т.д., чтобы вновь входящие пользователи "видели" новый (последний по номеру) MD в качестве файла конфигурации. Пользователь, который хочет увидеть изменения, должен будет выйти и заново войти в 1С. Таким способом можно заменить, например, глобальный модуль, общие таблицы, картинки, интерфейсы (меню и т.д.), перечисления, отчеты и обработки. Другие пользователи при этом могут продолжать свою работу в 1С. Дополнительная функция: если в папке с конфигурацией есть файл 1cv7.stop, то вход пользователей задерживается, пока существует этот файл. И пользователь видит сообщение из содержимого этого файла. Например, "База 1С обновляется. Пожалуйста, подождите до 13:00". Если ни одного из вышеуказанных файлов (1cv7_*.md, 1cv7.stop) в папке с конфигурацией нет, то программа работает в "прозрачном" режиме, не выполняя никаких действий. Установка: 1) Сделать резервную копию папки 1Cv7\BIN 2) Скопировать в нее файл md_chng.dll 3) Скопировать в нее файл patch_seven.exe и запустить его (выполнить патч). Предыдущие разработки, сделанные по похожей технологии: Решение проблемы 100% загрузки процессора при ожидании транзакции (ВК+перехват DLL) Запрет запуска ert на низком уровне (статья+ВК) |
|||
8
Морозов Александр
21.04.06
✎
06:05
|
(6) Так всеравно чтоб изменения вступили в силу надо перезагружать 1С...
|
|||
9
skunk
21.04.06
✎
06:06
|
что больше всего забавило в горячей замене
|
|||
12
Слоняра
21.04.06
✎
06:14
|
(11)а таблица или форма?
|
|||
13
Obed
21.04.06
✎
06:15
|
(12) Модуль
|
|||
14
skunk
21.04.06
✎
06:16
|
(12)таблицы храни во внешних файлах... а форму... тебе так часто приходится менять форму
|
|||
15
Слоняра
21.04.06
✎
06:18
|
(14)не часто конечно.. хз, говорю же накрайняк..
|
|||
22
skunk
21.04.06
✎
06:49
|
(21)а не проще ли тогда всех выгнать... и дира в том числе
|
|||
23
skunk
21.04.06
✎
06:49
|
у меня ни когда с этим проблем не было... пинал даже генерала... если надо то надо...
|
|||
25
skunk
21.04.06
✎
07:18
|
аха... той же жопой
|
|||
26
Слоняра
21.04.06
✎
07:30
|
(23)ты думаешь я стесняюсь дира выгнать? ее просто нет и кабинет закрыт..
|
|||
27
Слоняра
21.04.06
✎
07:31
|
+26 и это.. модальное окошко висит у нее.
|
|||
28
skunk
21.04.06
✎
07:32
|
(26)пачткорд...
ну не повезло... нех забывать |
|||
30
skunk
21.04.06
✎
07:37
|
убьет меня Рома... если нелегкая в москву занесет
|
|||
33
GrayT
21.04.06
✎
08:53
|
(0)А что за GenerateProxyDLL?
|
|||
35
romix
модератор
21.04.06
✎
12:08
|
(11) #ЗагрузитьИзФайла
Это тоже никто не отменял. Проблема только в том, что эти директивы надо сначала вписать в конфигурацию, и только потом их можно будет юзать. Кроме того, они дают ряд ограничений (например, не работает должным образом Intellisence). |
|||
36
romix
модератор
21.04.06
✎
12:08
|
(16) Skunk, а ты пробовал это сделать прежде чем писать? Как результаты?
|
|||
38
romix
модератор
21.04.06
✎
12:17
|
(33) В данном случае оно не используется - осталось от других разработок.
Позволяет сделать "подставную" DLL, чтобы попасть в адресное пространство процесса. На входе даешь имя DLL и список функций, а на выходе она дает файл проекта DPR для Delphi (при компиляции образуется "подставная" DLL). |
|||
40
romix
модератор
21.04.06
✎
12:23
|
(37) Это не ВК, а OpenConf. Там тоже подменой функций DLL вставлены полезные вещи.
И ты многое теряешь. Книга знаний: OpenConf: пишем скрипты для конфигуратора 1С 7.7 (статья) (37-2) "На ходу" заменять можно только метаданные (интерфейсы, перечисления, общие таблицы, картинки, права, ГМ и т.д) но не структуру данных. Структура данных заменена, естественно, не будет - для этого надо выгонять юзеров. |
|||
41
romix
модератор
21.04.06
✎
12:24
|
(39-2) Смотри также книгу Джеффрри Рихтера "Windows для профессионалов" - там описаны несколько способов внедрения DLL и замены функций API.
|
|||
42
GrayT
21.04.06
✎
12:25
|
(41)спасибо, спасибо - ты мне ее уже рекомендовал, а я ее уже нашел - но вот руки до нее пока не дошли :(
|
|||
43
romix
модератор
21.04.06
✎
12:32
|
(31) Да, в каких-то случаях TurboMD практичнее. Сам его использую - очень удобно.
Но иногда юзер звонит "Не могу войти в журнал - пишет "недостаточно прав доступа"". Или надо добавить в перечисление новый пункт. Или заменить что-то в таблице (которые все не повыкидываешь в файлы, да и запутаться потом в них легко). Или отредактировать меню и панели инструментов, не выгоняя всех из базы. То есть, вот такого рода правки - чтобы не останавливать работу всех пользователей, когда нужно что-то незначительное и не затрагивающее структуру данных поправить одному из них. |
|||
45
Круто
21.04.06
✎
12:42
|
Роман, а что потом-то делать с МД? В конфигураторе какой будет? Я так думаю, что при подмене надо по окончании работы просто объединить новый МД со старым. Так?
|
|||
46
romix
модератор
21.04.06
✎
12:58
|
(45) Да, надо объединить или (если правились перечисления) загрузить измененную конфу. Перед объединением конечно надо сделать бэкап и грохнуть (переместить в другую папку) все новые версии MD.
|
|||
48
romix
модератор
21.04.06
✎
13:01
|
(47) Удали все "горячие добавления" - там будет виден старый MD.
|
|||
52
Круто
21.04.06
✎
13:15
|
ОК, попробуем посмотреть :) Спасибо за труды!
|
|||
59
Mosson
28.04.06
✎
13:07
|
Пасиба БОЛЬШОЕ.
очень полезная штучка. уже поставил, тестирую... плюсы уже описаны почти все - исправления не касающиеся данных вносить крайне приятственно. я например не рисковал переделывать структуру регистра из-за боязни вылезания кучи багов, а 50 юзеров выгнать быстрее чем за 15 мин нерватрепки не получиться. теперь вот сижу. что не выловлю сразу можно будет "на лету подправить" |
|||
68
Mosson
30.04.06
✎
15:07
|
(67) ты как с руководством разговариваешь?
по кому-то депремирование плачет ]:-> |
|||
73
romix
модератор
30.04.06
✎
18:25
|
Поставил отладочную печать: короче, 1С-ка при открытии открывает файл с полным путем:
E:\MD_CHANGER\v77\1Cv7.MD А при выгрузке или сохранении - 1Cv7.MD (без пути) |
|||
78
ildus
01.05.06
✎
12:41
|
romix, а ты можеш сделать перехват с подменой пути к *.dbf и *.cdx ? хочется разделить их по разным дискам, например индексы на RAM-диск закинуть.
|
|||
79
romix
модератор
01.05.06
✎
13:40
|
(78) Уже сделал - http://x-romix.narod.ru/CDX_MOVER.rar
Если будет хотя бы минимально положительный результат - прошу об этом сказать. Мои раскопки в этом направлении также привели к программе SuperCache, которая, по идее, должна решить проблему отсутствующего кеша в NT/2000 при подключении второго пользователя. Проверь также ее. |
|||
80
romix
модератор
01.05.06
✎
13:45
|
SuperCache должна (возможно) ускорить "в десятки раз" работу файл-серверной 8-ки или 7.7, за счет кеширования на уровне блоков жесткого диска.
|
|||
81
DGorgoN
01.05.06
✎
13:57
|
(69) Так и делаю. Я выгрузку/загрузку для укорения делаю..
|
|||
82
DGorgoN
01.05.06
✎
14:00
|
(80) Извени, я так и не понял. Баг с выгрузкой/загрузкой вылечен?
(79) За эту фифку тоже большое спасибо. Жалко что вчера не увидел, а то бы уже поюзал. Теперь только через неделю :( - когда на сервере никого не будет :). |
|||
83
romix
модератор
01.05.06
✎
14:17
|
(82) Да, вылечен (полным отрубанием доступа в конфигуратор).
|
|||
84
romix
модератор
01.05.06
✎
14:19
|
Т.е. когда нет "горячих" замен MD, 1С работает как обычно, без изменений.
А если они есть, то а) доступ в конфигуратор запрещен б) 1С в режиме "предприятие" юзает замещающий MD с последним номером. |
|||
85
romix
модератор
01.05.06
✎
14:20
|
Скачать можно по ссылке (0)
|
|||
86
DGorgoN
01.05.06
✎
14:20
|
(82) испр. фифку = фишку..
|
|||
87
DGorgoN
01.05.06
✎
14:21
|
(85) Огроменное спасибо :)..
|
|||
91
romix
модератор
02.05.06
✎
09:06
|
(90) Не работала наверное загрузка (т.к. при выгрузке был выгружен не тот MD). Теперь проблема не должна проявляться, т.к. вообще не пустит в конфигуратор при наличии горячих замен md.
|
|||
94
jbond
02.05.06
✎
13:42
|
А где можно официально скачать траял SuperCache?
Этот поиск фактически ничего не дает, как-будто развитие прекратилось. Кто-нибудь сравнивал его с O&O CleverCache V6 Professional? http://www.oo-software.com/en/products/ooclevercache/pro/ |
|||
99
romix
модератор
02.05.06
✎
16:13
|
(98) Поправил. Ссылка прежняя.
md_chng.dll от 02.05.06, 16:08, 47104 байт |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |