Перехват API-вызовов и альтернативные плагины для 1С:Предприятие Адрес для скачивания:
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 (в данном примере) мс.
См. также:
Книга знаний: Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки
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.
plugin_mxl_doctor
Плагин лечит проблему с длительным сохранением длинных MXL-файлов в XLS.
Также позволяет очистить HTML и поюзать CSS при сохранении MXL->HTML.
Плагин протестирован только для 25 релиза 1С:Предприятие (на других релизах плагин, скорее всего, выдаст предупреждение и откажется работать,
т.к. я использую фиксированный адрес для патчинга ошибки). Велика вероятность, что ошибку с длительным сохранением исправит сама фирма 1С в
следующих релизах.
Параметры в файле INI:
ПатчитьДлительноеСохранение=1
ИспользоватьCSS=1
Эти параметры могут принимать значения 1 (включено) или 0 (выключено).
Для тестирования плагина запустите обработку Test_MXL.
Она создает большой файл MXL (65000 строк) и сохраняет его сначала в XLS, а потом - в HTML.
При включенном использовании CSS я вычищаю из HTML следующие подстроки:
' BORDERCOLOR=#ffffff'
' ALIGN=LEFT'
' SIZE=2'
'<FONT>...'
Сам файл CSS лежит рядом с плагином и называется plugin_mxl_doctor.css.
Те же действия выполняет внешняя компонента по ссылке
Книга знаний: Исправление ошибки при экспорте в Excel (патчинг Moxel.dll)
Balloon
Заменяет диалоговые окна предупреждения "Недостаточно прав доступа!" и
"Реорганизация информации закончена!" на сообщения (tooltips) в трее.
Плагин являеется, скорее, примером для реализации плагинов подобного рода.
Test, TestThread
Простые (нексколько строк кода) плагины для тестирования работоспособности перехвата.
TestThread показывает возможность многопоточной работы. Для демонстрации, что поток работает, издает периодический звуковой сигнал
|