Помыкавшись по сети и ввиду очень ограниченного времени на ожидание ответа от Romix'a (честь ему и хвала), воспользовались его исходниками для vk_hook1C и vk_TerminalSleep, и собрали новую vk_hook1C.dll, которая работает под 2008 сервер, не патчит BkEnd, не ругается на версии ODBC (не нужен ODBC33.DLL) и самое главное, при блокировке не грузит процессор :)
В общем принимайте наше с Old_Joe творчество.
В vk_hook добавлены 2 метода, позволяющие управлять блокировками и дедлоком
//глобальная переменная Перем vk_hook Экспорт; //при начале работы системы ЗагрузитьВнешнююКомпоненту(каталогИБ()+"vk_Hook1C.dll"); vk_hook=СоздатьОбъект("Addin.vk_Hook1C");
vk_hook.ПерехватSQLPrepare();
vk_hook.ПерехватSQLExecDirect(); vk_hook.МаксимальныйSleep=1024; vk_hook.ОтключитьТаймаут = 1; //по умолчанию = 0 vk_hook.ОтключитьДедлок = 0; //по умолчанию = 0
использован материал из статьи: http://www.kb.mista.ru/article.php?id=361
"Секретный релиз" 1С: //infostart.ru/public/82018/
UPD: 2.0.0.31
добавлен метод vk_hook.ВключитьПодмену = 1; // по умолчанию = 0
перед непосредственно запросом необходимо vk_hook.ВключитьПодмену = 1;
Можно конечно один раз включить и не выключать, но тут есть определенный риск. Так что все в ваших руках :)
Принципиально изменена подмена запроса.
В данной версии можно менять как весь запрос так и по части вхождения строки.
К примеру:
vk_hook.ТекстSQL = "SP3111=?";
vk_hook.НовыйSQL = "SP3111 in (' 4 ',' 7 ') and ''<>?";
vk_hook.УстановитьЗаменуSQL();
Позволит везде использовать вместо равенства список значений.
В
Остальной функционал описаный в статье не изменен.