Перехват и подмена запросов от 1С к MS SQL Server #204787


#0 by Dave Owen OWL
Собственно сабж, может кто подскажет с чего начать и какие есть альтернативы для решения такой задачки? Может кто ссылок накидает?
#1 by avmlvm
без понимания сути проблем - сложно посоветовать чЁ-нибудь путное :-) Короче.. А нафига????
#2 by AeDen
Бухов попугать хатит...
#3 by папа
Тема поднималась полгода-год назад... При этом человек вообще не ориентировался в SQL
#4 by Лефмихалыч
есть ВК такая rainbow называицца. она простая в использовании и результат ее работы внешне выглядит, как то, что ты хочешь. Пользуй ее
#5 by avmlvm
если это от 7-ки, то тут к сиквелу такой изврат идёт, что проблема не сколько "перехватить", а разобраться "что к чему" :-))))
#6 by папа
Для тебя проблема прехватить и ПОДМЕНИТЬ запрос отправленный из 1С ?
#7 by avmlvm
(задумчиво) хм-м-м.. "перехватить"??? Перехватить - легко.. Но разбираться "что, зачем, и как"??? Хм-м-м.. там такая "катавасия"... 7-ка работает с сиквилом очень топорно... Да и 8-ка тоже "не идеал" т.к. используемый 1С сиквел это "расширение" стандарта...
#8 by Dave Owen OWL
Есть задачка по доп фильтрам для форм справочников и журналов, какой запрос отправляет 1С (платформа, а не языком) я знаю, мнеб в него добавтвить одну строчку WHERE ... и пропустить дальше до SQL Типа того :) Собственно с T-SQL проблем за собой не замечал, возможно со стороны видней
#9 by Лефмихалыч
а не проще в таком случе заменить объект "Запрос" на AdoConnection и слать тот запрос, который надо?
#10 by папа
Делай на прямых запросах фильтры - внизу по кнопочке.
#11 by Dave Owen OWL
Rainbow (она же Радуга) это запросы из языка, мне же надо перехватывать и подменять запросы платформы Мнеб перехватить что-нить и подменить что-нить, а уж отладить чтоб всё работало как надо это для меня не проблема
#12 by Dave Owen OWL
Хочеться чтоб штатные кнопочки создать новый, удалить остались на месте. По подробней по кнопочке это как? Ставить галочку в конфигураторе "отбор"?
#13 by Neco
Toy SQL:
#14 by Dave Owen OWL
(all) Собственно пути хочеться перебрать возможные, ну например: 1) Перелопатить BkEnd.dll в стрингах "from %s" подменить на "from %s_XX" и для каждой таблицы прописать views_ХХ 2) Настряпать собственную dll и в ней "волшебной" API функцией ловить конект 3) Сделать TCP/IP прокси и анализировать трафик SQL (собственно тоже вариант:)
#15 by AeDen
А как файеры ловят попытку различных приложений выползти в сеть?
#16 by Dave Owen OWL
Именно установкой ловушек на API функции у romix есть хорошие наработки по этому делу
#17 by AeDen
Ну дык за чем дело стало? Или тебе надо сам запрос проанализировать??? Тогда - ж...
#18 by Лефмихалыч
какие штатные кнопочки? ты о чем?
#19 by Dave Owen OWL
Оптимизировать алгоритм проведения документа или формирование отчета через T-SQL это совсем другая задача я обычно для этого пользуюсь 1cpp. Мнебы платформенные механизмы перехватывать...
#20 by Dave Owen OWL
Панель инструментов формы справочников
#21 by Dave Owen OWL
Не механизмы а запросы
#22 by Лефмихалыч
третий вариант - это большой такой ручной тормоз, почти реверс 9это тоже тормоз,  только быстрый)
#23 by Лефмихалыч
вместо 9 должна быть скобка - шифт, скотина умирать начал...
#24 by Dave Owen OWL
Короче можно этот тормоз вставить между 1C и ODBCC или нет?! в другие места, а именно в саму 1С не очень хотца.
#25 by Лефмихалыч
уж лучше первый или второй вариант, поскольку в третьем твой прокси будет удлиннять время ожидания и будут частые обломы с проведением докуентов и прочие чудеса с транзакциями - анализировать-то он будет весь трафик, а не только нужные данные рихтовать
#26 by Dave Owen OWL
Вот нашел ссылку от SoftPoint "...внешняя компонента, которая подменяет вызовы 1С на более эффективные..." Но технология, не раскрывается как делают :(
#27 by Dave Owen OWL
Мда, парсер не на бейсике придётся писать, это уж точно :)
#28 by Лефмихалыч
пучиму?
#29 by Dave Owen OWL
Ну можно и на бейсике, только в обучающих целях, так сказать для отладки. Все равно на Си или Asm переписывать надо будет, чтоб тормозов небыло.
#30 by Dave Owen OWL
Вот ещё нашёл решение долько для MS SQL 2005:
#31 by папа
Это ж скока платить должны и как все остальное должно быть отлажено, чтобы таким делом заниматься...
#32 by Лефмихалыч
при больших оборотах семерка сильные тормоза изза блокровок дает, в час пик работать почти не возможно, таким образом, иногда такие трудозатрахи оправданы
#33 by Dave Owen OWL
Действительно, и кушать тоже хочеться, а задачки только такие подкитывают. Я бы рад отчетики на SQL переписывать по тихоньку. Может в библиотеку устроиться каталоги на 1с80 переписывать :)
#34 by MMF
по секрету скажу, что на дельфи писано.
#35 by Dave Owen OWL
Мне код хоть на Делфи разок посмотреть, я сообразительный всё пойму, может кто поделиться если что-то похожее есть?
#36 by Dave Owen OWL
(all) Большое спасибо за помощь, проблема решена установкой ловушки между V77 и диспетчером odbc.
#37 by Лефмихалыч
тьфу, я не заметил предлог "не" в строке "не на бэйсике" 8)
#38 by toypaul
можешь объяснить как это делается?
#39 by Dave Owen OWL
Бывает... собственно, я тоже улыбнулся :)
#40 by Dave Owen OWL
Любой запрос от 1С в любом случае уходит в ODBC драйвер, его интерфейс содержиться в odbc32.dll, в моем случае достаточно перехватывать @SQLExecDirect. Методы и исходники перехвата очень хорошо описаны у romix-а.
#41 by Лефмихалыч
(+36) мне вот тоже интересно до жути. Dave Owen OWL, если не жалко, расшарь разработочку?
#42 by Dave Owen OWL
Вы чё парни я только сел писать у меня счас только есть расковыренная dll  и пару статей по этому поводу и маленькая демка, которая работает через раз :(
#43 by Лефмихалыч
да я в действительности просил поделиться ноу хау, а не готовым проектом, лично мне сказанного в хватит чтобы уталить мое любопытство 8)
#44 by Dave Owen OWL
(+40) Маленькая ошибочка вкралась спешу подправиться. @SQLExecDirect - не используется для отбора, ну т.е. он используется но немного для другого, на самом деле нужно хватать связку SQLPrepareA и SQLExecute именно их 1С использует для выборки, что показывать на экран. Но как оказалось 1C очень чувствительна к задержкам в SQLExecute причем SQLExecDirect она ждет достаточно терпеливо. Вот в чем здесь дело никак не пойму.
#45 by _r2003
Как ты думаешь что тебе это даст? Может тебе собрать статистику и понять что изменением мелких запросов ты ничего не изменишь. Платформа в общем случае работает идеально, за исключением тех случаев когда люди не понимают зачем галочки в конфигураторе ставят. Тут проскакивала мысль что v8 правильнее строит запросы, ничего не хочу сказать про себя но по работе типовых можно как раз сделать обратные выводы. Тут так же была мысль о работе с 1Сpp и Радугой, ох не понимаю я этот форум говоришь 7.7 хорошо кричат 8.0 круче всех тогда зачем вам 1С++ и Радуга. Может лучше 8.0 изучать. Я вот думал о разных оптимизациях таблицы справочников и констант в ОЗУ (PIN) фиксировать или там опять же судя по статистике параметричекие запросы для бух итогов  на порядок хуже обычных, в тоже время для типизации справочников они идеальны. Что касается индексов, 1С не спроста их указывает как раз по статистике они должны быть, а их использованием можно и конфой управлять.Я так смотрю ты парень не глупый раз такое можешь так может всё таки сделаешь что нить полезное... P.S. А вообще самое лучшее для v7.7 это оптимизация блокировок.
#46 by mx-daemon
Через триггеры и трассировку. v8 транслирует запросы безобразно.
#47 by Dave Owen OWL
Спасибо, конечно, за теплые слова в мой, 77 и 80 адрес. Но ветка поднималась про перехват, а зачем это делать это другое дело не побоюсь этого слова "личное" :) Про статейку из намекаешь? Она проплачена SP - это банальная реклама, нашли глюк хотят нажиться - это бизнес. Попробуй не покривя серцем вспомнить сколько ты делал ошибок в программах? Про 1С++ скажу, что она мной воспринимаются не как "костыли для убогого движка 77", а как "нормальная практика использования ОПП" (в хорошем смысле этого слова). А что в 1С++ есть ещё и прямые запросы так это вобще супер, одной длл получаешь большой функционал и большой респект ребятам которые всё это дело собрали в одной библиотеке. PS Блокировки это круто и этим тоже можно заниматься, только зачем их в этой ветке упоминать :)))
#48 by MMF
а этот костыльчик от SP видел?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С