Тема
Подмена объектов метаданных (Документ,Справочник)(
http://www.1cpp.ru/forum/YaBB.pl?num=1175586636/32)
очень нужная, правильная и востребованная
и это позволит решить ОЧЕНЬ много вопросов в рамках 7.7....
Но в ней остается БОЛЬШАЯ загвоздка с перехватом вызовов глобальных процедур/функций......
Например таких как
ТипЗначенияСтр
ОткрытьФорму
ОткрытьФормуМодально
другие....
где в качестве параметров есть агрегатные объекты...
Предложенное на сегодняшний день решение (
http://www.1cpp.ru/forum/YaBB.pl?num=1175586636/1#1)
не слишком универсальное (
http://www.1cpp.ru/forum/YaBB.pl?num=1175586636/8#8)
и тяжело реализуемое (
http://www.1cpp.ru/forum/YaBB.pl?num=1175586636/10#10)
ПРЕДЛАГАЮ АЛЬТЕРНАТИВНОЕ РЕШЕНИЕ:
(по аналогии с известным подходом при замене вызовов SQL для 2005+ скуля, когда есть прокси для BkEnd.DLL:
- BkEnd.dll = прокси-перехватчик
- BkEnd0.dll = переименованный оригинальный файл 1С
- BkEndUtls.dll = аналог ГлобальныйМодуль)
а именно:
в папке BIN вместо 1crcrus.dll должно быть 3 файла:
1crcrusOrig.dll - переименованный оригинальный файл
1crcrus.dll - файл "прокси" для замены "на ходу"
1crcrus.ini - файл настроек прокси
Внутри файла 1crcrus.ini должны быть строки типа
ТипЗначенияСтр = глТипЗначенияСтр
ValueTypeStr = глТипЗначенияСтр
ОткрытьФорму = глОткрытьФорму
ОткрытьФормуМодально = глОткрытьФормуМодально
и т.д.....
Поведение прокси должно быть следующим:
при вызове нативной глобальной процедуры/функции 1С
прокси перехватывает этот вызов
и если есть переопределение вызова в файле INI
вызывает соотвествующую процедуру/функцию глобального модуля
иначе вызывает процедуру/функцию из библиотеки 1crcrusOrig.dll
ПЫ.СЫ: в принципе, механизм "прокси" можно поручить самой 1CPP.DLL, а в файл OXY.INI добавить секцию [GLOBAL_SYNONIMS] или как-то так....
Тогда и переименовывать оригинальный файл не нужно.....
Как Вам такая идея?
Я не программист С++, но понимаю что всё это реализуемо....
МНОГОУВАЖАЕМЫЕ АВТОРЫ, ПОЖАЛУСТА, НЕ ПРОХОДИТЕ МИМО.
Сделайте такой финт.....
ПОЖАЛУЙСТА.