gifts2017

"Динамическое обновление" в 1С Предприятие 7.7

Опубликовал Дмитрий Юрасов (dime2) в раздел Администрирование - Распределенная БД (УРИБ, УРБД)

Всем известен механизм динамического обновления в 1С Предприятие 8.х. Однако есть недокументированная возможность сделать тоже самое (естественно с некоторыми особенностями) в 1С Предприятие 7.7

Скажу сразу: метод недокументированный и ранее в публикациях мной не встречался.

Метод протестирован на файловом варианте 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. Если подобный метод уже был кем-то описан, пожалуйста, проинформируйте меня об этом (желательно со ссылкой на источник)

 

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. andrewks 10.04.13 12:42
2. DenisCh Гейтс (DenisCh) 10.04.13 12:51
Очередное открытие Америки и изобретение велосипеда...
Вот однажды подменят мд с изменением метаданных и аля-улю.
Лучше уж турбомд.
3. Сергей Марченко (MarSeN) 10.04.13 12:57
(0)
Есть решение от Romix. Когда я его пользовал, помнится, путь к мд прописывался в файлике.
Там используется перехват и перенаправление открытия файла мд по новому пути.
Вот что нашел на скорую руку http://www.forum.mista.ru/topic.php?id=175124&page=1
4. Дмитрий Юрасов (dime2) 10.04.13 12:57
(1) andrewks,
Это надстройка к штатным средствам 1С.
1. Описанный же метод позволяет обойтись без внешних компонент.
2. На момент "надо прямо сейчас" в конфигурации может и не быть загруженного TurboMD (как в моём случае)
5. Дмитрий Юрасов (dime2) 10.04.13 13:01
(2) DenisCh,
Очередное открытие Америки и изобретение велосипеда...

А кто-то уже предлагал такой метод? Не ясно, кого именно повторяю.

Вот однажды подменят мд с изменением метаданных и аля-улю.
Лучше уж турбомд.


Так это метод не на каждый день.
"Знал бы где упаду - соломки бы подстелил" (с) Народная мудрость
6. Дмитрий Юрасов (dime2) 10.04.13 13:03
(3) MarSeN,
Так же, как и с TurboMD нужно заранее иметь данный инструмент.
Я не смогу ни MD_CHANGER, ни TurboMD подцепить "на горячую"
7. Александр Шаров (Ta_Da) 10.04.13 13:19
Лучше уж #ЗагрузитьИзФайла использовать, если не хочется с ВК связываться, чем такое извращение (и это в активно используемой базе, на минуточку, в которой пользователи работают).
8. DenisCh Гейтс (DenisCh) 10.04.13 13:24
(5) dime2,
А кто-то уже предлагал такой метод?

Я таким 5 лет подряд пользовался, пока с 77 не ушёл :-) Только я анлокером пользовался.
9. Дмитрий Юрасов (dime2) 10.04.13 13:27
(7) Ta_Da,
Как уже писалось выше, вставить #ЗагрузитьИзФайла нужно тоже заранее.
10. Dmitry Anikin (panda-34) 11.04.13 11:32
(6)Вообще-то, TurboMD можно (и нужно) загружать именно что "на-горячую", простым открытием обработки и для этого не нужно закрывать сеанс пользователя, достаточно переоткрыть измененную форму. Единственное, что там не получится - это правка глобального модуля.
11. Дмитрий Юрасов (dime2) 11.04.13 11:51
(10) panda-34,

Если я правильно понял из документации, (http://openconf.1cpp.ru/vk/turbomd/)
То
Компонента загружается в 1С с помощью метода
ЗагрузитьВнешнююКомпоненту(ПутьКдлл);


MD-шник пользователей уже должен был загрузить эту компоненту.
А значит метод с TurboMD НЕ подходит для конфигураций БЕЗ загруженного TurboMD.

Как вариант, (и метод избежать проблем, описанных (2) DenisCh) в перую очередь добавить в MD-файл поддержку TurboMD, а сам MD файл загрузить описанным мной (или через Unlocker - спасибо (8) DenisCh) методом.
12. DenisCh Гейтс (DenisCh) 11.04.13 11:57
(11) dime2, турбу можно загрузить во внешней обработке. Так что даже конфу менять не надо, о чём и говорится в (10)
13. Дмитрий Юрасов (dime2) 11.04.13 12:03
(12) DenisCh,
Так загружу-то я её себе в свой сеанс, а не каждому пользователю. А ГМ TurboMD менять не умеет. А значит пользователи будут продолжать пользоваться старым MD, без поддержки TurboMD
14. Дмитрий Юрасов (dime2) 11.04.13 12:05
Ну и самый главный (оставшийся) "гвоздь": TurboMD меняет текст модулей и формы, но не меняет Права и пользовательские Интерфейсы. А это тоже надо было сделать.
15. INSh Шамриков (INSh) 18.04.13 09:30
Автору плюс за идею! Молодец!
Мне, например, в голову такое не приходило...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа