|
Загрузить внешнюю компоненту НаКлиенте в управляемом приложении | ☑ | ||
---|---|---|---|---|
0
web_profiler
13.03.15
✎
12:19
|
Был такой код в обычном приложении
Попытка App = Новый COMОбъект("MEDOC.ZApplication"); ИмяПлагина = ПутьКФайлуМедка + "\medoc1c.dll"; ЗагрузитьВнешнююКомпоненту(ИмяПлагина); Параметры.МедКомпонент = Новый("AddIn.Medoc1C"); в управляемом на строке ЗагрузитьВнешнююКомпоненту уходит в исключение помогите, пожалуйста |
|||
1
web_profiler
13.03.15
✎
12:24
|
неужели, никто не сталкивался с такой проблемкой?
|
|||
2
Repey
13.03.15
✎
12:41
|
И кто же первый задаст сакраментальный вопрос?
|
|||
3
web_profiler
13.03.15
✎
12:44
|
(2) в смысле?
|
|||
4
Repey
13.03.15
✎
12:46
|
Клиент какой? Толстый, тонкий?
|
|||
5
Страждущий
13.03.15
✎
12:47
|
СообщитьОбОшибке()
|
|||
6
Страждущий
13.03.15
✎
12:50
|
(5) Метод ОписаниеОшибки()
|
|||
7
web_profiler
13.03.15
✎
12:51
|
минуту - вывожу
|
|||
8
web_profiler
13.03.15
✎
12:55
|
Тонкий клиент, ОписаниеОшибки() пусто
|
|||
9
Repey
13.03.15
✎
12:56
|
СП уже продавали? Доступность глядел?
|
|||
10
web_profiler
13.03.15
✎
12:59
|
да хватит тролить, подскажите как выйти с ситуации
видел, что в замен использовать? |
|||
11
web_profiler
13.03.15
✎
13:02
|
плиз, помогите
|
|||
12
sFAQer
13.03.15
✎
13:08
|
(11) сервер не предлагать?
|
|||
13
yavasya
13.03.15
✎
13:10
|
(12) + сделай процедуру на сервере
|
|||
14
SleepyHead
гуру
13.03.15
✎
13:10
|
(11) Ну помогут тебе создать, а потом ты спросишь, куда делся объект после того, как сервер отработал.
|
|||
15
web_profiler
13.03.15
✎
13:11
|
понял, гуглю
|
|||
16
sFAQer
13.03.15
✎
13:11
|
и вообще разве загрузить ВК есть? вроде установить и подключить есть, загрузить не помню..
|
|||
17
fisher
13.03.15
✎
13:21
|
Можно и на клиенте. Только с твоей компонентой выгодней на сервере, если сервер виндовый. Чтобы компонента жила между серверными вызовами надо юзать через общий модуль с повторным использованием возвращаемых значений на время сеанса.
|
|||
18
web_profiler
13.03.15
✎
13:28
|
(17) с повторным использованием возвращаемых значений на время сеанса
Разъясни пожалуйста |
|||
19
SleepyHead
гуру
13.03.15
✎
13:30
|
(18) Это значит, есть шанс, что между двумя серверными вызовами твоя компонента будет доступна :)
|
|||
20
fisher
13.03.15
✎
13:32
|
(18) Курим свойство общего модуля "Повторное использование возвращаемых значений"
|
|||
21
fisher
13.03.15
✎
13:39
|
Фишка в том, что нет человеческих способов сохранять серверный контекст сеанса между серверными вызовами. Официально только параметры сеанса для этого есть. А вот (20) - таки позволяет извратиться. Хотя изначально оно как бы не совсем для этого.
|
|||
22
web_profiler
13.03.15
✎
13:41
|
(21) f tckb vjvtyn ,tp cyznbz c gjllth;rb&
|
|||
23
web_profiler
13.03.15
✎
13:41
|
(21) а если момент без снятия с поддержки?
|
|||
24
fisher
13.03.15
✎
13:43
|
(23) Если твоя задача нормально решается за один серверный вызов или не критично создавать каждый раз заново - тогда пляски с бубном не нужны.
|
|||
25
fisher
13.03.15
✎
13:44
|
Ну или таки на клиенте придется.
|
|||
26
web_profiler
13.03.15
✎
13:44
|
моя процедура отрабатывает через обработчик ожидания
надо на клиенте |
|||
27
web_profiler
13.03.15
✎
13:45
|
что сделать, чтоб dll подгружалась?
|
|||
28
SleepyHead
гуру
13.03.15
✎
13:46
|
(26) Прлцедура отрабатывает через обработку на клиенте. А какие-то данные между вызовами нужно сохранятиь? Или было бы достаточно, если бы компонента создалась, отработала и выгрузилась из памяти, и так до следующего вызова?
|
|||
29
SleepyHead
гуру
13.03.15
✎
13:47
|
(27) Нужно из клиентского метода сделать вызов серверного метода и в нем реализовать весь алгоритм обработки (создание компоненты, какие-то действия через нее). И см. вопрос (28)
|
|||
30
web_profiler
13.03.15
✎
13:48
|
надо чтоб компонента сохнранялась
пробывал через параметры с признаком ключевой |
|||
31
fisher
13.03.15
✎
13:53
|
(27) На тонком клиенте компоненту православно зиповать вместе с манифестом (читай описание технологии ВК) и пихать в двоичный макет. А загружать из макета методом УстановитьВнешнююКомпоненту()
|
|||
32
web_profiler
13.03.15
✎
13:54
|
(31) где-то читал, сейчас буду разбираться
|
|||
33
fisher
13.03.15
✎
14:01
|
Хотя, конечно, можно и тупо как в (0) через ПодключитьВнешнююКомпоненту(). Но через макеты гораздо удобнее поддерживать и распространять.
|
|||
34
web_profiler
13.03.15
✎
14:03
|
(33) ничего у меня не выходит
|
|||
35
web_profiler
13.03.15
✎
14:04
|
При установке ВК вылетает по ошибке
|
|||
36
vde69
13.03.15
✎
14:04
|
вот тут есть пример http://code.google.com/p/restoration-base-1c8/downloads/detail?name=1Cv8_0.2.3.zip&can=2&q=
но грузит все равно не всегда.... |
|||
37
fisher
13.03.15
✎
14:05
|
(34) Странно. Показывай код, ошибки.
|
|||
38
web_profiler
13.03.15
✎
14:06
|
Установка внешней компоненты не выполнена!
в процессе установки произошла ошибка |
|||
39
fisher
13.03.15
✎
14:06
|
Еще раз. Не ЗагрузитьВнешнююКомпоненту, а ПодключитьВнешнююКомпоненту
|
|||
40
web_profiler
13.03.15
✎
14:07
|
&НаКлиенте
Процедура Подключение1СМедок() Если НЕ Параметры.МедКомпонент = Неопределено Тогда Параметры.МедКомпонент.CloseAddin(); КонецЕсли; Попытка ИмяПлагина = ПутьКФайлуМедка + "\medoc1c.dll"; App = Новый COMОбъект("MEDOC.ZApplication"); Если Параметры.ИмяБазы = "УТ3" Тогда //отработать(ИмяПлагина); //сервер УстановитьВнешнююКомпоненту(ИмяПлагина); ПодключитьВнешнююКомпоненту(ИмяПлагина, "AddIn.Medoc1C"); //Параметры.МедКомпонент = Новый ("AddIn.Скл.Medoc1C"); //Параметры.МедКомпонент.SetConnectionInfo(СтрокаСоединенияИнформационнойБазы()); Иначе ЗагрузитьВнешнююКомпоненту(ИмяПлагина); Параметры.МедКомпонент = Новый ("AddIn.Medoc1C"); Параметры.МедКомпонент.SetConnectionInfo(СтрокаСоединенияИнформационнойБазы()); КонецЕсли; Элементы.ЭДОВозможен.Видимость = Истина; Элементы.ЭДОНевозможен.Видимость = Ложь; ОтключитьОбработчикОжидания("Подключение1СМедок"); ПроверитьНаличиеПервички(); Исключение Возврат; КонецПопытки; КонецПроцедуры |
|||
41
web_profiler
13.03.15
✎
14:07
|
Для режимов запуска "Тонкий клиент" и "Веб-клиент", компонента должна быть предварительно установлена методом УстановитьВнешнююКомпоненту
|
|||
42
fisher
13.03.15
✎
14:09
|
(40) Я типа должен догадаться по каким веткам оно у тебя ходит?
(41) Это только для zip-архива |
|||
43
web_profiler
13.03.15
✎
14:11
|
ок, упростим
просто отработать в этой процедуре |
|||
44
vde69
13.03.15
✎
14:12
|
&НаКлиенте
Процедура ОбновитьКомпоненту(Команда) ПоддержкаКомпонентыКлиент.ОбновитьКомпоненту(Истина); КонецПроцедуры Процедура ОбновитьКомпоненту(ОчищатьСтаруюВерсию = Ложь) Экспорт Если ОчищатьСтаруюВерсию Тогда // -------------------------------------------------------------- // // решение временное (для отлатки ВК) !!!!!!!!!!!!!!!!!!!! // не работает на web клиенте и могут быть проблеммы при изменении версии 1с // ну и очищает вообще все файлы ВК скопом (в том числе и чужие) // // -------------------------------------------------------------- мКаталог = ПолучитьИмяВременногоФайла("1"); мКаталог = Лев(мКаталог, Найти(мКаталог, "\Local\Temp\")); мКаталог = мКаталог + "Roaming\1C\1Cv82\ExtCompT\"; УдалитьФайлы(мКаталог, "."); КонецЕсли; УстановитьВнешнююКомпоненту("ОбщийМакет.Bin1CD_VK_dll"); Если не ПодключитьВнешнююКомпоненту("ОбщийМакет.Bin1CD_VK_dll", "Bin1CD", ТипВнешнейКомпоненты.Native) Тогда Предупреждение("Компонента Bin1CD_VK не подключена!"); Возврат; КонецЕсли; ВК = Новый ("AddIn.Bin1CD.TBin1CD_VK"); Попытка ВерсияВК = ВК.Версия; Исключение ВерсияВК = "1.0.0"; КонецПопытки; Сообщить("Установлена AddIn.Bin1CD.TBin1CD_VK " + ВерсияВК); КонецПроцедуры |
|||
45
fisher
13.03.15
✎
14:12
|
(43) Упрости. Юзай только ПодключитьВнешнююКомпоненту() и не забудь там указать тип компоненты третьим параметром.
|
|||
46
fisher
13.03.15
✎
14:14
|
Только через макет всё равно православнее.
|
|||
47
web_profiler
13.03.15
✎
14:14
|
(45) спс, огромное
|
|||
48
vde69
13.03.15
✎
14:15
|
файл MANIFEST.XML
<?xml version="1.0" encoding="UTF-8"?> -<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle"> <component arch="i386" type="native" path="Bin1CD_VK.dll" os="Windows"/> <component arch="x86_64" type="native" path="Bin1CD_VK.dll" os="Windows"/> </bundle> |
|||
49
fisher
13.03.15
✎
14:17
|
1С просто супер-молодцы с Native, макетами и манифестами. Теоретически можно в конфу пихать кросс-платформенные дрова и они будут универсально везде работать. Только их никто не делает :( 1С только для сканера штрих-кодов что-то такое попыталось родить и то кривовато.
|
|||
50
web_profiler
13.03.15
✎
14:22
|
Процедура Отработать(ИмяПлагина)
App = Новый COMОбъект("MEDOC.ZApplication"); Если не ПодключитьВнешнююКомпоненту(ИмяПлагина, "Medoc1C", ТипВнешнейКомпоненты.COM) Тогда Возврат; КонецЕсли; ВК = Новый ("AddIn.Medoc1C"); ВК.SetConnectionInfo(СтрокаСоединенияИнформационнойБазы()); КонецПроцедуры Падает на ВК = Новый ("AddIn.Medoc1C") |
|||
51
web_profiler
13.03.15
✎
14:30
|
ВК = Новый COMОбъект("AddIn.Medoc1C");
и заработало |
|||
52
H A D G E H O G s
13.03.15
✎
14:40
|
(49) А ты пробовал писать плагины к firefox? Тотоже.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |