Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Подмена запросов через vk_hook (число прочтений - 11044 )
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #15 - 23. Января 2013 :: 06:22
Печать  
leshik писал(а) 23. Января 2013 :: 04:41:
to MaxPiter.
Добрый день! Напишу еще сюда вопрос - не сможете ли доработать vk_hook для работы с секретным релизом без понижения уровня совместимости? Если нужна оплата - пишите в icq 201216890.

Добрый день. Я в личку, еще в тот же день ответил Улыбка
Почему то с форума не приходят письма о личных сообщениях.
Отвечу сюда еще тогда. Что именно нужно? Если все что описано в http://technet.microsoft.com/ru-ru/library/bb510680(v=sql.100).aspx то даже не возьмусь, если только некоторые, то нужно посмотреть.
  
Наверх
www  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #16 - 23. Января 2013 :: 07:13
Печать  
Нет - не все конечно - только SQLDirect или что там используется для sleep?
  
Наверх
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #17 - 23. Января 2013 :: 07:28
Печать  
leshik писал(а) 23. Января 2013 :: 07:13:
Нет - не все конечно - только SQLDirect или что там используется для sleep?

Не понимаю что вы хотите.
vk_hook можно цеплять к 1С на SQL с любым уровнем совместимости.
vk_hook перехватывает SQLPrepare, SQLExecDirect, содержит метод sleep, который в цикле ждет когда SQL_STILL_EXECUTING вернет значение <> 2 (запрос выполняется)
Если в режиме совместимости (90) и выше SQL_STILL_EXECUTING при завершении запроса возвращает именно 2, то тогда vk_hook действительно нужно переписывать, но как-то это маловероятно.

У вас сейчас vk_hook не работает с SQL (90) ? или что происходит?
  
Наверх
www  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #18 - 23. Января 2013 :: 08:33
Печать  
Именно так - сейчас vk_hook для секретного релиза не работает с 9.0 при выполнении метода
     vk_hook.ПерехватSQLExecDirect();
сваливается с ошибкой.
  
Наверх
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #19 - 23. Января 2013 :: 08:39
Печать  
leshik писал(а) 23. Января 2013 :: 08:33:
Именно так - сейчас vk_hook для секретного релиза не работает с 9.0 при выполнении метода
     vk_hook.ПерехватSQLExecDirect();
сваливается с ошибкой.

Ясно, но это не связано с 9.0, это в самой компоненте ошибка.
Я ее у себя уже поправил (но на 9.0 не тестил). Вот прямо сейчас с ней еще кое какие действия ваяю. Надеюсь сегодня закончу и вышлю для теста.
  
Наверх
www  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #20 - 23. Января 2013 :: 08:42
Печать  
Огромное спасибо.
почта: a.kamenets@portal-z.ru
  
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Подмена запросов через vk_hook
Ответ #21 - 23. Января 2013 :: 10:06
Печать  
Лучше уж тут прикрепите, для истории
  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #22 - 23. Января 2013 :: 12:48
Печать  
Eprst писал(а) 23. Января 2013 :: 10:06:
Лучше уж тут прикрепите, для истории

Вот как-то так.
Добавлен метод:
vk_hook.ВключитьПодмену = 1 или 0;

Основное отличие от подмены от Romix, это подмена не всего запроса, а по вхождению.
т.е. вставлю пример из конфигурации

Код
Выбрать все
		vk_hook.ВключитьПодмену = 1;
		vk_hook.ТекстSQL = глПолеРазделительУчетаВИБ+"=?";

		ИДОбъектов = "";
		Для й=1 По глСписокФирмДляРазделителяУчета.РазмерСписка() Цикл
			ИДОбъектов = ачение(й))+"'";
			Если й<>глСписокФирмДляРазделителяУчета.РазмерСписка() Тогда
				ИДОбъектов = ИДОбъектов + ",";
			КонецЕсли;
		КонецЦикла;
		vk_hook.НовыйSQL = ""+глПолеРазделительУчетаВИБ+" in ("+ИДОбъектов+") and ''<>?";
		vk_hook.УстановитьЗаменуSQL(); 



данный код сообщает библиотеке, что нужно в запросах искать "SP3111=?" и заменять на "SP3111 in ('1','5','10') and ''<>?"

если не нужно больше подменять, выполняем
Код
Выбрать все
vk_hook.ВключитьПодмену = 0; 

  

vk_Hook1C.zip ( 70 KB | Загрузки )
Наверх
www  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #23 - 23. Января 2013 :: 13:21
Печать  
А с понижением уровня получилось исправить?
  
Наверх
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #24 - 23. Января 2013 :: 13:22
Печать  
leshik писал(а) 23. Января 2013 :: 13:21:
А с понижением уровня получилось исправить?

Можете скрин ошибки выслать?
  
Наверх
www  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #25 - 23. Января 2013 :: 14:38
Печать  
Вот скрин
  

____________.png ( 7 KB | Загрузки )
____________.png
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #26 - 23. Января 2013 :: 14:38
Печать  
А вот текстовое описание скрина:
  

_____________.txt ( 0 KB | Загрузки )
Наверх
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #27 - 24. Января 2013 :: 21:18
Печать  
leshik писал(а) 23. Января 2013 :: 14:38:
А вот текстовое описание скрина:

К сожалению даже не представляю от чего может сыпаться такая ошибка Улыбка
Ошибка вываливается сразу после метода vk_hook.ПерехватSQLExecDirect(); ?
  
Наверх
www  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #28 - 24. Января 2013 :: 22:14
Печать  
Да, сразу после вызова данного метода.
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Подмена запросов через vk_hook
Ответ #29 - 24. Января 2013 :: 22:17
Печать  
Напомню Ваш же комментарий на ИС
Цитата:
(51) без "секретного релиза" 1С не запустится на 7ке и 2008 винде без изменения 1С'ных библиотек.
(52)
по идее нужно найти как называется функция перехвата для 2005 и 2008 sql.
для 2000 она называется SQLExecDirectA и SQLPrepareA.
----
хотя не факт, что получится, т.к. нужно разбирать эту самую функцию придется.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать