Скажу сразу: метод недокументированный и ранее в публикациях мной не встречался.
Метод протестирован на файловом варианте 7.70.27 в режиме терминального сервера. Для остальных вариантов не тестировался.
«Лирика»
Как обычно это и бывает, потребовалось у клиента провести ряд модернизаций конфигурации в режимах «срочно», «еще вот это» и «ещё вот это забыли». При этом был разгар рабочего времени, люди трудятся, да и выгнать всех из базы задачка нетривиальная. Да ещё и несколько раз подряд.
И тут подумалось мне, а как и когда загружается файл 1cv7.md в память процесса? И провел эксперимент (естественно на копии рабочей базы: «тест база»). Загрузил 1С в режиме «Предприятие», через Process Explorer (спасибо sysinternals) нашел Handler файла 1cv7.md и сделал «close handler». 1С продолжила работу. Все, проверенные мной, обработки, отчёты, документы, справочники открывались без проблем.
Следующим шагом стало создание «тест 2 база» — копии «тест база».
«тест 2 база» — открыта Конфигуратором
«тест база» — отрыта Предприятием
В Конфигураторе делаем изменения (которые не затрагивают структуру базы данных — по этому же методу возможно динамическое обновление и в v8). Сохраняем конфигурацию.
Закрываем handler 1cv7.md базы Предприятия и копируем 1cv7.md «тест 2 база» в каталог базы «тест база» с перезаписью.
Предприятие работает как будто ничего не произошло. А при повторном заходе «подхватывает» новую конфигурацию.
«Проза»
Метод был протестирован на рабочей базе с одновременным подключением 15-ти пользователей в файловом режиме в терминальном сервере сначала в периферийной, а затем в центральной БД.
Были отключены handler-ы файла 1cv7.md рабочей базы.
Все пользователи продолжили работать без изменений.
На место рабочей конфигурации копировался модифицированный файл 1cv7.md (без изменения структуры рабочей базы данных).
Новый файл 1cv7.md подхватывался при очередном заходе пользователя в 1С.
P.S. Автор не несёт ни какой моральной и/или материальной ответственности за использование данного метода. Все Ваши действия Вы осуществляете на свой страх и риск.
P.P.S. Если подобный метод уже был кем-то описан, пожалуйста, проинформируйте меня об этом (желательно со ссылкой на источник)
есть же TurboMD
Очередное открытие Америки и изобретение велосипеда…
Вот однажды подменят мд с изменением метаданных и аля-улю.
Лучше уж турбомд.
(1)
Это надстройка к штатным средствам 1С.
1. Описанный же метод позволяет обойтись без внешних компонент.
2. На момент «надо прямо сейчас» в конфигурации может и не быть загруженного TurboMD (как в моём случае)
(0)
http://www.forum.mista.ru/topic.php?id=175124&page=1
Есть решение от Romix. Когда я его пользовал, помнится, путь к мд прописывался в файлике.
Там используется перехват и перенаправление открытия файла мд по новому пути.
Вот что нашел на скорую руку
(2) DenisCh,
А кто-то уже предлагал такой метод? Не ясно, кого именно повторяю.
Лучше уж турбомд.
Так это метод не на каждый день.
«Знал бы где упаду — соломки бы подстелил» (с) Народная мудрость
(3) MarSeN,
Так же, как и с TurboMD нужно заранее иметь данный инструмент.
Я не смогу ни MD_CHANGER, ни TurboMD подцепить «на горячую»
Лучше уж #ЗагрузитьИзФайла использовать, если не хочется с ВК связываться, чем такое извращение (и это в активно используемой базе, на минуточку, в которой пользователи работают).
(5) dime2,
Я таким 5 лет подряд пользовался, пока с 77 не ушёл 🙂 Только я анлокером пользовался.
(7) Ta_Da,
Как уже писалось выше, вставить #ЗагрузитьИзФайла нужно тоже заранее.
(6)Вообще-то, TurboMD можно (и нужно) загружать именно что «на-горячую», простым открытием обработки и для этого не нужно закрывать сеанс пользователя, достаточно переоткрыть измененную форму. Единственное, что там не получится — это правка глобального модуля.
(10) panda-34,
Если я правильно понял из документации, (http://openconf.1cpp.ru/vk/turbomd/)
То
ЗагрузитьВнешнююКомпоненту(ПутьКдлл);
MD-шник пользователей уже должен был загрузить эту компоненту.
А значит метод с TurboMD НЕ подходит для конфигураций БЕЗ загруженного TurboMD.
Как вариант, (и метод избежать проблем, описанных (2) DenisCh) в перую очередь добавить в MD-файл поддержку TurboMD, а сам MD файл загрузить описанным мной (или через Unlocker — спасибо (8) DenisCh) методом.
(11) dime2, турбу можно загрузить во внешней обработке. Так что даже конфу менять не надо, о чём и говорится в (10)
(12) DenisCh,
Так загружу-то я её себе в свой сеанс, а не каждому пользователю. А ГМ TurboMD менять не умеет. А значит пользователи будут продолжать пользоваться старым MD, без поддержки TurboMD
Ну и самый главный (оставшийся) «гвоздь»: TurboMD меняет текст модулей и формы, но не меняет Права и пользовательские Интерфейсы. А это тоже надо было сделать.
Автору плюс за идею! Молодец!
Мне, например, в голову такое не приходило…