v7: Внешняя компонента - правильная выгрузка #674668


#0 by ildary
Уважаемые специалисты, посоветуйте пожалуйста, как правильно выгружать внешнюю компоненту. Загружается она вот так: Выгружать пытаюсь так: (ПриЗакрытии): AddIn = 0; Win2003R2 64bit, 1С7.7 27, конфигурация ТиС, компонента strmatch.dll - при первом открытии внешней обработки (где она применяется) - дает правильный результат: если ей на входе давать строку - она с правильным коффициентом совпадения возвращает совпадения. Но если закрыть эту внешнюю обработку и снова открыть - она начинает подглюкивать (возвращает для любой строки не более 2 вариантов) и не помогает ее явная выгрузка типа AddIn = 0. Если закрыть всю 1С, то после повторного ее запуска - снова все начинает работать (ровно один раз). Есть у меня подозрение, что проблемы пошли после перехода на 64 Windows.
#1 by Гость2
На клюшках внешние компоненты не выгружаются вовсе
#2 by Гость2
#3 by ildary
спасибо, не знал. Значит правильно надо грузить как в ? Век живи, век учись :)
#4 by ildary
Вдогонку - а в восьмерке подобное требуется? Или там компонента реально выгружается с закрытием обработки?
#5 by H A D G E H O G s
По разному. Вот счаст наслаждаюсь с одной из них.
#6 by Torquader
Выгрузить можно только OLE-сервер, так как выгружает его система. Внешняя компонента при загрузке сообщает 1С, какие объекты она поддерживает - 1С запоминает эти объекты и всё - способа - заставить её забыть - нету. Если уж очень хочется что-то выгрузить для экономии памяти - сделайте компоненту-транслятор, а остальные методы засуньте в OLE-сервер, тогда компонента будет загружать по мере надобности сам сервер, ну а выгружаться он будет сам, когда не нужен.
#7 by H A D G E H O G s
#8 by H A D G E H O G s
Затесть кстати. 8.1 и 8.2 ОбъектКомпоненты=Неопределено; В 8.1 Done вызывается. в 8.2 Done вызовется при закрытии 1С. Бида.
#9 by Torquader
Реально компонента нужна только тогда, когда хотим из неё управлять 1С - в остальных случаях OLE-сервер оказывается даже лучше.
#10 by H A D G E H O G s
А еще в Тонком, если не сделать Addref в Done для ComServer-а - он, Тонкий - падет смертью глупой. И еще там забавная фишечка с Тонким есть, открывающая неожиданные вещи на бывшие планы 1С, но об этом через недельку.
#11 by Злопчинский
Для клюшек была/есть примочка, которая позволяет выгружать загрудженные ВК (но искать ее меня не просите). Strmatch работает устойчиво. без глюков. по кранйей мере у меня не на 64.
#12 by ildary
он работает, но после закрыл / переоткрыл обработку - начинает возвращать 1, максимум 2 варианта для строки (при чистом запуске - 3 или 4 результата), способ запуска в это вылечил, спасибо Гостю2 за идею. Я этот глюк встретил, когда начал переносить нетленку из семерки в восьмерку - в восьмерке компонента возвращала 3 результата с одинаковым коэфицциентом совпадения.
#13 by Torquader
Ну, можно ещё попробовать VbScript.RegExp - оно OLE-сервер и должно работать везде. Там был метод в одной из VK (выгрузить), только не всегда оно работало. Просто, чтобы выгрузить компоненту, нужно сделать Done в интерфейсе, чтобы она освободила все занятые ресурсы - далее можно выгружать Dll. Но, если dll создавала какие-то дочерние потоки при загрузке - не всегда проходил фокус по выгрузке - чаще было просто падение 1С (вызов abort из dll именно к этому и приводит).
#14 by Злопчинский
нормально он работает, и возвращает как положено хоть обобзывайся туеву хучу раз.. по крайней мере у меня - работает. м.б. все зависит от размеров кеша сравнения..? ну и с номерами кешей надо аккуратно быть...
#15 by ildary
нормально он работает в 7.7. В 8.2 - нашел глюк (может наглючил при переносе из 7.7 - надо будет поковырять). С кешами   и их номерами - согласен, я их предварительно чищу перед заполнением.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

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