Книга знаний

1С:Предприятие / Приемы программирования / Внешние компоненты

Перехват API-вызовов и альтернативные плагины для 1С:Предприятие

Автор статьи: romix | Редакторы:
Последняя редакция №2 от 05.10.06 | История
URL: http://kb.mista.ru/article.php?id=277

Адрес для скачивания:
http://x-romix.narod.ru/MD_CHANGER.rar
(86К, скачивать левой кнопкой мыши)

Приведен исходный код (компилятор - Delphi 6).


Установка




1) Скопировать в папку 1cv7\Bin файл Hook_1C.dll, файл patch_Hook_1C.exe и папку Plugins.

2) Запустить программу-патчер patch_Hook_1C.exe

3) В файле Hook_1C.ini указать, какие плагины требуется загружать.
Ненужные плагины можно закомментировать символом ';'

Описание плагинов содержится в файлах readme.txt.

Тестовая конфигурация для демонстрации их использования находится в папке v77.


MD_CHANGER


Плагин позволяет заменять конфигурацию без выхода всех пользователей из 1С.
Выйти и войти должны будут только те пользователи, которым нужны изменения.


В каталоге информационной базы, где вы хотите заменить конфигурацию, создайте папку MD_CHANGER.

В ней создайте файл md_changer.ini

Его структура:


[Настройки]
НоваяКонфигурация=New2
;ЗапретЗагрузки=Производится обновление конфигурации 1С. Пожалуйста, подождите до 14:00



Параметр НоваяКонфигурация - задает папку (относительно MD_CHANGER), где лежит обновленный 1cv7.md

Параметр ЗапретЗагрузки - это дополнительная (необязательная) возможность - позволяет установить запрет пользователям на вход в 1С.



Не рекомендуется держать каталог MD_CHANGER открытым на всеобщую запись.


Информационная база с "замененной" конфигурацией недоступна для входа в нее конфигуратором
(программа выдаст соответствующее предупреждение). Необходимо отключить замену в файле ini.

MD_FREE


Плагин предназначен для принудительного завершения работы пользователей в 1С.
Чтобы завершить работу пользователей, необходимо создать в подпапке MD_FREE каталога информационной базы файл stop.txt
(содержимое этого файла не имеет значение - плагин проверяет только его наличие).
Завершение работы происходит "жестко" - если в это время велась какая-то работа, то она будет аварийно прекращена.

Sleep_DBF


Плагин предназначен для снижения нагрузки на сервер при ожидании блокировки.
25 релиз 1С:Предприятие для DBF.

Плагин перехватывает неудачную попытку заблокировать файл и вставляет паузу sleep.
Это позволяет разгрузить сервер (особенно терминальный) и дать пользователям возможность
нормально работать.

Плагин перехватывает блокировку файла 1SJOURN.DBF - блокировка других файлов не отслеживается.

Параметры в файле plugin_sleep_dbf.ini (его надо положить в ту же папку, что и DLL):


Пауза=1024
Сообщения=1
Зацикливание=1
СигнальныйФайл=c:\romix.sig


Пауза - это значение паузы в миллисекундах. Фактически пауза будет нарастать от 1 до 1024 (в данном примере)
миллисекунд с множителем 2: 1,2,4,8,...1024.


Сообщения - показывать сообщения в трее (1=да). Сообщение появится только при наличии паузы более 250 мс.

Зацикливание - зациклить ожидание (чтобы не получать ошибок про превышенное ожидание блокировки).
С другой стороны, пользователь не сможет прервать процесс ожидания, иначе как сняв задачу.

СигнальныйФайл - если указать файл, то плагин будет его создавать. Цель этого файла -
дать различным "роботам" (которые, например, восстанавливают последовательность документов) знать,
что кто-то пытается провести документ. Это позволяет остановить массовую обработку (может быть, даже на
середине большого документа) и подождать, пока пользователь не выполнит свою задачу.

Робот должен сам удалить сигнальный файл.

Сигнальный файл появится только при достижении паузой значения 1024 (в данном примере) мс.

LOG_ERT


Плагин ведет журнал обращений к файлам ert (помогает выявить неиспользуемые или редко используемые внешние отчеты и обработки).
В файле ini необходимо указать каталог, где будет вестись журнал, например:
Каталог=c:\log_ert


После этого в данном каталоге будут появляться записи наподобие следующих:
05.10.2006 19:15:15; user=romix; comp=ROMIX; E:\MD_CHANGER\Hook_1C\Plugins\v77\ExtForms\test_log_ert.er


Каждая запись находится в файле с именем файл.ert.log, который соответствует ert.
Все записи выровнены на длину 200 символов, поэтому по длине файла можно судить о количестве обращений к файлу ert.

Balloon


Заменяет диалоговые окна предупреждения "Недостаточно прав доступа!" и
"Реорганизация информации закончена!" на сообщения (tooltips) в трее.
Плагин являеется, скорее, примером для реализации плагинов подобного рода.

Test, TestThread


Простые (нексколько строк кода) плагины для тестирования работоспособности перехвата.
TestThread показывает возможность многопоточной работы. Для демонстрации, что поток работает, издает периодический звуковой сигнал


Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика