Имя: Пароль:
1C
 
8.2 Внешняя компонента Native API
,
0 ll13
 
25.03.10
19:41
Скомпилировал ВК Native API, исходники которой идут на ИТС.
А как её в 1С юзать ?
&НаКЛиенте
Процедура ВК(Команда)
ПодключитьВнешнююКомпоненту("AddInNative.dll", "Компонента", ТипВнешнейКомпоненты.Native);
Компонента = Новый(?????); << А какой объект создавать ?
1 xReason
 
25.03.10
19:47
Кстати в доки пишут, что Native API должен и в линуксе работать. Интересно это проверить
2 ДенисЧ
 
25.03.10
19:51
Телепатирую, что AddIn.Native
Но нужно смотреть в исходники. Где она на ИТС лежит?
3 ll13
 
25.03.10
20:00
(2) Сам проект лежит \1CIts\EXE\VNCOMP82\example\NativeAPI\
заголовки к нему \1CIts\EXE\VNCOMP82\include\

Ваши телепатические способности не помогли ....
4 ДенисЧ
 
25.03.10
20:09
Предлагаю попробовать AddInNativeExtension
Других альтернатив я пока не вижу
5 ll13
 
25.03.10
20:17
(4) Уже пробовал, не помогло.
Методом "научного тыка" перепробовал уже все возможные варианты ... так не к чему и не пришел...
6 shuhard
 
25.03.10
20:20
7 ll13
 
25.03.10
20:22
(6) Уже читал ... ничего конкретного
8 H A D G E H O G s
 
25.03.10
20:23
Кто сможет подключить ВК на Web- клиенте, или на Тонком из БД, или Макета двоичного - мой респект и уважуха.
9 Ковычки
 
25.03.10
20:25
(8) а в чем там прикол ?
10 H A D G E H O G s
 
25.03.10
20:30
(9) Я просто не смог.
В web-клиенте - только из базы можно подключить.
Типа, в реестр и ФС - ни-ни, безопасность!
11 Ковычки
 
25.03.10
20:31
а в реестр усера ?
12 Ковычки
 
25.03.10
20:32
ааа, в веб клиенте - в смысле на стороне клиента использовать что ли или на стороне сервера ?
13 ll13
 
25.03.10
20:33
(8) В теории ВК написанные по технологии NATIVE API должны подключаться и к тому и к другому. И на ИТС за март идут исходники для всего этого дела. На практике - DLL NATIVE API из исходников я скомпилировал без проблем.
ПодключитьВнешнююКомпоненту("AddInNative.dll", "Компонента", ТипВнешнейКомпоненты.Native) - выполняется.
А вот дальше затык :((( я так и не понял какой объект создавать из компоненты
Компонента = Новый(?????)
14 ll13
 
25.03.10
20:35
(12) В документации написано что можно и так, и так.
15 Ковычки
 
25.03.10
20:35
(13) зарегистрируй и найди в реестре по имени библиотеки
16 H A D G E H O G s
 
25.03.10
20:35
(12) На клиенте, на сервере - никаких проблем, даже из Макета.
17 H A D G E H O G s
 
25.03.10
20:35
(15) Не факт
18 Ковычки
 
25.03.10
20:35
(14) щаз... если это веб клиент, то клиент это уже иное
19 H A D G E H O G s
 
25.03.10
20:36
Надо так:
Компонента = Новый(AddIn.Компонента.<ИмяКомпоненты>)
20 Ковычки
 
25.03.10
20:36
(16) это как ты хочешь на браузере пользовать вк ?!
21 H A D G E H O G s
 
25.03.10
20:37
(20) Просто, беру и пользую. А что?
22 Ковычки
 
25.03.10
20:38
(21) как ?! если это фф или прочие сафари ?
23 ll13
 
25.03.10
20:39
(19) Вот тут то и проблема! что я должен указать в <ИмяКомпоненты> ?
24 H A D G E H O G s
 
25.03.10
20:40
(22) Нууу, во первых читаю СП.
Там написано, что
ПодключитьВнешКомп()

доступно на web-клиенте.
25 Ковычки
 
25.03.10
20:45
(24) ну это все равно сторона сервера
26 H A D G E H O G s
 
25.03.10
20:50
(25) Тоесть? Dll - ка не подгружается в адресное пространство firefox.exe, к примеру?
27 Ковычки
 
25.03.10
20:52
да, она на сервере лежит
28 H A D G E H O G s
 
25.03.10
21:09
(27) Там все на сервере лежит. Где выполняется?
29 Ковычки
 
25.03.10
21:10
там же
30 H A D G E H O G s
 
25.03.10
21:30
(29) Завтра скачаю УТ-шку демонстрационную, и ProcessExplorer-ом посмотрю, куда подгружается.
31 ll13
 
25.03.10
22:15
Подниму тему, мой вопрос так и остался без ответа...
32 ll13
 
26.03.10
10:22
Неужели никто не юзал пример native-внешней компоненты с диска ИТС ?!
33 H A D G E H O G s
 
26.03.10
10:25
(29) Попробовал.
Итак - ВК на ВебКлиенте ставятся именно именно в ВебКлиент - устанавливается плагин для Explorera или Мозиллы.
Если интересно - смотрим демоконфу УТ и ее работу с оборудованием.
34 H A D G E H O G s
 
26.03.10
10:30
Компонента = Новый(AddIn.Компонента.AddInNative);
35 Кирпич
 
26.03.10
10:41
А Native API для семерки ещё не сделали?
36 ll13
 
26.03.10
10:47
В режиме
&НаКлиенте
Процедура ВК(Команда)
   Если ПодключитьВнешнююКомпоненту("f:\NATIVE_API\Release\AddInNative.dll", "Компонента", ТипВнешнейКомпоненты.Native) Тогда
       Попытка
           Компонента = Новый("AddIn.Компонента.AddInNative");
       Исключение
           Сообщить(ОписаниеОшибки());
       КонецПопытки;
   Иначе
       Сообщить("Не могу подключиить");
   КонецЕсли

Получаю:

КонецПроцедуры

Получаю:
{Форма.Форма.Форма(6)}: Тип не определен (AddIn.Компонента.AddInNative)

Бред какой-то уже второй день пытаюсь подключить компоненту из примера, 1С даже не удосужилась приложить к ней демо-конфу ... (
В Компонента = Новый("???") перебрал уже все что возможно .... ( не работает не в какую.
Пробовал в режиме толстого и тонкого клиентов упр. приложения.
37 ll13
 
26.03.10
11:49
Всем спасибо за участие)
После суток(!) непрекращающихся попыток разобраться в коде примера native api расположенного на мартовском ИТС, периодически скатываясь на "научный тык" аля "а вдруг повезет...", собственноручно скомпиленая компонента была подключена и заработала )))))
38 ll13
 
26.03.10
20:03
(8) Удалось подключить ВК из макета обработки(не внешней) на тонком клиенте. Если интересно, расскажу.
39 МихаилМ
 
26.03.10
20:06
(28)
В книгу знаний напишите про получение этого опыта.
или здесь
40 C-Noptik
 
26.03.10
20:22
(38) интересно
41 H A D G E H O G s
 
26.03.10
22:05
Интересно
42 ll13
 
26.03.10
22:44
Пишу вкратце, потом если руки дойдут статейку напишу про то как я воевал с ВК 8.2
1). Компилируем и собираем RELEASE компоненты NATIVE API c мартовского ИТС (только её, остальную лабуду не компилируем), получаем AddInNative.dll
2). Создаем файл MANIFEST.XML следующего содержания:
<?xml version="1.0" encoding="utf-8"?>
<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle">
 <component os="Windows" path="AddInNative.dll" type="native" arch="i386" />
</bundle>
3). Эти два файла запаковывает в NATIVE.ZIP
4). Создаем обработку ТестВнешнейКомпоненты (Интегрированную, НЕ ВНЕШНЮЮ !!!), в ней макет типа двоичные данные - МакетВК, закачиваем в него наш NATIVE.ZIP
5). На форме 4-е кнопки, их обработчики (простите за корявость кода)

&НаКлиенте
Перем Компонента;

&НаКлиенте
Процедура УстановитьВК(Команда)
   УстановитьВнешнююКомпоненту("Обработка.ТестВнешнейКомпоненты.Макет.МакетВК");
КонецПроцедуры // нужно выполнять ТОЛЬКО ОДИН РАЗ, либо при изменении ВК в макете

&НаКлиенте
Процедура ПодключитьВК(Команда)
   Если
ПодключитьВнешнююКомпоненту("Обработка.ТестВнешнейКомпоненты.Макет.МакетВК", "Компонента", ТипВнешнейКомпоненты.Native) Тогда
       Попытка
           Компонента = Новый("AddIn.Компонента.AddInNativeExtension");
           Сообщить("Всё ОК");
       Исключение
           Сообщить("Не могу создать объект из компоненты");
           Сообщить(ОписаниеОшибки());
           Возврат;
       КонецПопытки;
       Компонента.Включен = Истина;        
   Иначе
       Сообщить("ВК не установлена");
   КонецЕсли
КонецПроцедуры

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
   Сообщить("Источник = "+ Источник + ", Событие = " + Событие + ", Данные = " + Данные);
КонецПроцедуры

&НаКлиенте
Процедура ВключитьТаймер(Команда)
   Если НЕ Компонента = Неопределено Тогда
       Компонента.СтартТаймер();
   Иначе
       Сообщить("Компонента не подключена");
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВыключитьТаймер(Команда)
   Если НЕ Компонента = Неопределено Тогда
       Компонента.СтопТаймер();
   Иначе
       Сообщить("Компонента не подключена");
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии()
   Если НЕ Компонента = Неопределено Тогда
       Компонента.СтопТаймер();
       Компонента.Включен = Ложь;
       Компонента = Неопределено;
   КонецЕсли;
КонецПроцедуры

Сначала Устанавливаем, затем подключаем, и можно играться с таймером компоненты.
Ну вод собственно и всё ...
43 ll13
 
26.03.10
22:50
(42) + Разумеется компонента будет работать только под тонким и толстым клиентом уравляемого приложения архитектуры i386, для других платформ(и браузеров) надо писать другие варианты компоненты и описывать их в MANIFEST.XML
44 ll13
 
27.03.10
02:03
(42)+ Небольшое дополнение:
Метод УстановитьВнешнююКомпоненту("Обработка.ТестВнешнейКомпоненты.Макет.МакетВК");
Извлекает компоненту(ы) из макета из закидывает на клиентскую машину в c:\Documents and Settings\Администратор\Application Data\1C\1Cv82\ExtCompT\ и создает файл registry.xml где они оба постоянно и находяться.
Повторно требуется выполнить УстановитьВнешнююКомпоненту() тогда, когда эти файлы удалены/повреждены или необходимо их обновление из макетаВК.