Горячая замена конфигурации 7.7: md_chng.dll #175124


#0 by romix
Продолжим тему с перехватом WinAPI и функций DLL. Файл для скачивания: (52К, ссылка доступна для скачивания левой кнопкой мыши). Программа для "горячей" замены конфигурации без необходимости завершать работу всех пользователей. Достаточно скопировать в папку с конфигурацией файл 1cv7_1.md, 1cv7_2.md и т.д., чтобы вновь входящие пользователи "видели" новый (последний по номеру) MD в качестве файла конфигурации. Пользователь, который хочет увидеть изменения, должен будет выйти и заново войти в 1С. Таким способом можно заменить, например, глобальный модуль, общие таблицы, картинки, интерфейсы (меню и т.д.), перечисления, отчеты и обработки. Другие пользователи при этом могут продолжать свою работу в 1С. Дополнительная функция: если в папке с конфигурацией есть файл 1cv7.stop, то вход пользователей задерживается, пока существует этот файл. И пользователь видит сообщение из содержимого этого файла. Например, "База 1С обновляется. Пожалуйста, подождите до 13:00". Если ни одного из вышеуказанных файлов (1cv7_*.md, 1cv7.stop) в папке с конфигурацией нет, то программа работает в "прозрачном" режиме, не выполняя никаких действий. Установка: 1) Сделать резервную копию папки 1Cv7BIN 2) Скопировать в нее файл md_chng.dll 3) Скопировать в нее файл patch_seven.exe и запустить его (выполнить патч). Предыдущие разработки, сделанные по похожей технологии:
#0 by romix
Продолжим тему с перехватом WinAPI и функций DLL. Файл для скачивания: (52К, ссылка доступна для скачивания левой кнопкой мыши). Программа для "горячей" замены конфигурации без необходимости завершать работу всех пользователей. Достаточно скопировать в папку с конфигурацией файл 1cv7_1.md, 1cv7_2.md и т.д., чтобы вновь входящие пользователи "видели" новый (последний по номеру) MD в качестве файла конфигурации. Пользователь, который хочет увидеть изменения, должен будет выйти и заново войти в 1С. Таким способом можно заменить, например, глобальный модуль, общие таблицы, картинки, интерфейсы (меню и т.д.), перечисления, отчеты и обработки. Другие пользователи при этом могут продолжать свою работу в 1С. Дополнительная функция: если в папке с конфигурацией есть файл 1cv7.stop, то вход пользователей задерживается, пока существует этот файл. И пользователь видит сообщение из содержимого этого файла. Например, "База 1С обновляется. Пожалуйста, подождите до 13:00". Если ни одного из вышеуказанных файлов (1cv7_*.md, 1cv7.stop) в папке с конфигурацией нет, то программа работает в "прозрачном" режиме, не выполняя никаких действий. Установка: 1) Сделать резервную копию папки 1Cv7BIN 2) Скопировать в нее файл md_chng.dll 3) Скопировать в нее файл patch_seven.exe и запустить его (выполнить патч). Предыдущие разработки, сделанные по похожей технологии:
#8 by Морозов Александр
Так всеравно чтоб изменения вступили в силу надо перезагружать 1С...
#9 by skunk
что больше всего забавило в горячей замене
#12 by Слоняра
а таблица или форма?
#13 by Obed
Модуль
#14 by skunk
таблицы храни во внешних файлах... а форму... тебе так часто приходится менять форму
#15 by Слоняра
не часто конечно.. хз, говорю же накрайняк..
#22 by skunk
а не проще ли тогда всех выгнать... и дира в том числе
#23 by skunk
у меня ни когда с этим проблем не было... пинал даже генерала... если надо то надо...
#25 by skunk
аха... той же жопой
#26 by Слоняра
ты думаешь я стесняюсь дира выгнать? ее просто нет и кабинет закрыт..
#27 by Слоняра
+26 и это.. модальное окошко висит у нее.
#28 by skunk
пачткорд... ну не повезло... нех забывать
#30 by skunk
убьет меня Рома... если нелегкая в москву занесет
#33 by GrayT
А что за GenerateProxyDLL?
#35 by romix
#ЗагрузитьИзФайла Это тоже никто не отменял. Проблема только в том, что эти директивы надо сначала вписать в конфигурацию, и только потом их можно будет юзать. Кроме того, они дают ряд ограничений (например, не работает должным образом Intellisence).
#36 by romix
Skunk, а ты пробовал это сделать прежде чем писать? Как результаты?
#38 by romix
В данном случае оно не используется - осталось от других разработок. Позволяет сделать "подставную" DLL, чтобы попасть в адресное пространство процесса. На входе даешь имя DLL и список функций, а на выходе она дает файл проекта DPR для Delphi (при компиляции образуется "подставная" DLL).
#40 by romix
Это не ВК, а OpenConf. Там тоже подменой функций DLL вставлены полезные вещи. И ты многое теряешь. (37-2) "На ходу" заменять можно только метаданные (интерфейсы, перечисления, общие таблицы, картинки, права, ГМ и т.д) но не структуру данных. Структура данных заменена, естественно, не будет - для этого надо выгонять юзеров.
#41 by romix
(39-2) Смотри также книгу Джеффрри Рихтера "Windows для профессионалов" - там описаны несколько способов внедрения DLL и замены функций API.
#42 by GrayT
спасибо, спасибо - ты мне ее уже рекомендовал, а я ее уже нашел - но вот руки до нее пока не дошли :(
#43 by romix
Да, в каких-то случаях TurboMD практичнее. Сам его использую - очень удобно. Но иногда юзер звонит "Не могу войти в журнал - пишет "недостаточно прав доступа"". Или надо добавить в перечисление новый пункт. Или заменить что-то в таблице (которые все не повыкидываешь в файлы, да и запутаться потом в них легко). Или отредактировать меню и панели инструментов, не выгоняя всех из базы. То есть, вот такого рода правки - чтобы не останавливать работу всех пользователей, когда нужно что-то незначительное и не затрагивающее структуру данных поправить одному из них.
#45 by Круто
Роман, а что потом-то делать с МД? В конфигураторе какой будет? Я так думаю, что при подмене надо по окончании работы просто объединить новый МД со старым. Так?
#46 by romix
Да, надо объединить или (если правились перечисления) загрузить измененную конфу. Перед объединением конечно надо сделать бэкап и грохнуть (переместить в другую папку) все новые версии MD.
#48 by romix
Удали все "горячие добавления" - там будет виден старый MD.
#52 by Круто
ОК, попробуем посмотреть :) Спасибо за труды!
#59 by Mosson
Пасиба БОЛЬШОЕ. очень полезная штучка. уже поставил, тестирую... плюсы уже описаны почти все - исправления не касающиеся данных вносить крайне приятственно. я например не рисковал переделывать структуру регистра из-за боязни вылезания кучи багов, а 50 юзеров выгнать быстрее чем за 15 мин нерватрепки не получиться. теперь вот сижу. что не выловлю сразу можно будет "на лету подправить"
#68 by Mosson
ты как с руководством разговариваешь? по кому-то депремирование плачет ]:->
#73 by romix
Поставил отладочную печать: короче, 1С-ка при открытии открывает файл с полным путем: E:MD_CHANGERv771Cv7.MD А при выгрузке или сохранении - 1Cv7.MD (без пути)
#78 by ildus
romix, а ты можеш сделать перехват с подменой пути к *.dbf и *.cdx ? хочется разделить их по разным дискам, например индексы на RAM-диск закинуть.
#79 by romix
Уже сделал - Если будет хотя бы минимально положительный результат - прошу об этом сказать. Мои раскопки в этом направлении также привели к программе SuperCache, которая, по идее, должна решить проблему отсутствующего кеша в NT/2000 при подключении второго пользователя. Проверь также ее.
#80 by romix
SuperCache должна (возможно) ускорить "в десятки раз" работу файл-серверной 8-ки или 7.7, за счет кеширования на уровне блоков жесткого диска.
#81 by DGorgoN
Так и делаю. Я выгрузку/загрузку для укорения делаю..
#82 by DGorgoN
Извени, я так и не понял. Баг с выгрузкой/загрузкой вылечен? За эту фифку тоже большое спасибо. Жалко что вчера не увидел, а то бы уже поюзал. Теперь только через неделю :( - когда на сервере никого не будет :).
#83 by romix
Да, вылечен (полным отрубанием доступа в конфигуратор).
#84 by romix
Т.е. когда нет "горячих" замен MD, 1С работает как обычно, без изменений. А если они есть, то а) доступ в конфигуратор запрещен б) 1С в режиме "предприятие" юзает замещающий MD с последним номером.
#85 by romix
Скачать можно по ссылке
#86 by DGorgoN
испр. фифку = фишку..
#87 by DGorgoN
Огроменное спасибо :)..
#91 by romix
Не работала наверное загрузка (т.к. при выгрузке был выгружен не тот MD). Теперь проблема не должна проявляться, т.к. вообще не пустит в конфигуратор при наличии горячих замен md.
#94 by jbond
А где можно официально скачать траял SuperCache? Этот поиск фактически ничего не дает, как-будто развитие прекратилось. Кто-нибудь сравнивал его с O&O CleverCache V6 Professional?
#99 by romix
Поправил. Ссылка прежняя. md_chng.dll от 02.05.06, 16:08, 47104 байт
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С