|
v7: Внешняя компонента - правильная выгрузка | ☑ | ||
---|---|---|---|---|
0
ildary
26.07.13
✎
21:41
|
Уважаемые специалисты, посоветуйте пожалуйста, как правильно выгружать внешнюю компоненту. Загружается она вот так:
ЗагрузитьВнешнююКомпоненту( "StrMatch.dll" ); AddIn = СоздатьОбъект( "AddIn.StrMatchExtension" ); Выгружать пытаюсь так: (ПриЗакрытии): AddIn = 0; Win2003R2 64bit, 1С7.7 27, конфигурация ТиС, компонента strmatch.dll - при первом открытии внешней обработки (где она применяется) - дает правильный результат: если ей на входе давать строку - она с правильным коффициентом совпадения возвращает совпадения. Но если закрыть эту внешнюю обработку и снова открыть - она начинает подглюкивать (возвращает для любой строки не более 2 вариантов) и не помогает ее явная выгрузка типа AddIn = 0. Если закрыть всю 1С, то после повторного ее запуска - снова все начинает работать (ровно один раз). Есть у меня подозрение, что проблемы пошли после перехода на 64 Windows. |
|||
1
Гость2
26.07.13
✎
21:45
|
На клюшках внешние компоненты не выгружаются вовсе
|
|||
2
Гость2
26.07.13
✎
21:48
|
Попытка
AddIn = СоздатьОбъект( "AddIn.StrMatchExtension" ); Исключение ЗагрузитьВнешнююКомпоненту( "StrMatch.dll" ); AddIn = СоздатьОбъект( "AddIn.StrMatchExtension" ); КонецПопытки |
|||
3
ildary
26.07.13
✎
22:03
|
(1) спасибо, не знал. Значит правильно надо грузить как в (2)? Век живи, век учись :)
|
|||
4
ildary
26.07.13
✎
22:05
|
Вдогонку - а в восьмерке подобное требуется? Или там компонента реально выгружается с закрытием обработки?
|
|||
5
H A D G E H O G s
26.07.13
✎
22:46
|
(4) По разному.
Вот счаст наслаждаюсь с одной из них. |
|||
6
Torquader
26.07.13
✎
23:48
|
Выгрузить можно только OLE-сервер, так как выгружает его система.
Внешняя компонента при загрузке сообщает 1С, какие объекты она поддерживает - 1С запоминает эти объекты и всё - способа - заставить её забыть - нету. Если уж очень хочется что-то выгрузить для экономии памяти - сделайте компоненту-транслятор, а остальные методы засуньте в OLE-сервер, тогда компонента будет загружать по мере надобности сам сервер, ну а выгружаться он будет сам, когда не нужен. |
|||
7
H A D G E H O G s
26.07.13
✎
23:49
|
"сделайте компоненту-транслятор"
Долго и муторно. |
|||
8
H A D G E H O G s
26.07.13
✎
23:50
|
Затесть кстати.
8.1 и 8.2 ОбъектКомпоненты=Неопределено; В 8.1 Done() вызывается. в 8.2 Done() вызовется при закрытии 1С. Бида. |
|||
9
Torquader
26.07.13
✎
23:52
|
(7) Реально компонента нужна только тогда, когда хотим из неё управлять 1С - в остальных случаях OLE-сервер оказывается даже лучше.
|
|||
10
H A D G E H O G s
26.07.13
✎
23:57
|
(9) А еще в Тонком, если не сделать Addref() в Done() для ComServer-а - он, Тонкий - падет смертью глупой.
И еще там забавная фишечка с Тонким есть, открывающая неожиданные вещи на бывшие планы 1С, но об этом через недельку. |
|||
11
Злопчинский
27.07.13
✎
01:14
|
Для клюшек была/есть примочка, которая позволяет выгружать загрудженные ВК (но искать ее меня не просите).
Strmatch работает устойчиво. без глюков. по кранйей мере у меня не на 64. |
|||
12
ildary
27.07.13
✎
07:39
|
(11) он работает, но после закрыл / переоткрыл обработку - начинает возвращать 1, максимум 2 варианта для строки (при чистом запуске - 3 или 4 результата), способ запуска в (2) это вылечил, спасибо Гостю2 за идею.
Я этот глюк встретил, когда начал переносить нетленку из семерки в восьмерку - в восьмерке компонента возвращала 3 результата с одинаковым коэфицциентом совпадения. |
|||
13
Torquader
27.07.13
✎
23:19
|
(12) Ну, можно ещё попробовать VbScript.RegExp - оно OLE-сервер и должно работать везде.
(11) Там был метод в одной из VK (выгрузить), только не всегда оно работало. Просто, чтобы выгрузить компоненту, нужно сделать Done в интерфейсе, чтобы она освободила все занятые ресурсы - далее можно выгружать Dll. Но, если dll создавала какие-то дочерние потоки при загрузке - не всегда проходил фокус по выгрузке - чаще было просто падение 1С (вызов abort из dll именно к этому и приводит). |
|||
14
Злопчинский
28.07.13
✎
01:56
|
(12) нормально он работает, и возвращает как положено хоть обобзывайся туеву хучу раз.. по крайней мере у меня - работает. м.б. все зависит от размеров кеша сравнения..? ну и с номерами кешей надо аккуратно быть...
|
|||
15
ildary
28.07.13
✎
11:45
|
(14) нормально он работает в 7.7. В 8.2 - нашел глюк (может наглючил при переносе из 7.7 - надо будет поковырять). С кешами и их номерами - согласен, я их предварительно чищу перед заполнением.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |