Использование визуальных (ActiveX) компонент в тонком клиенте 1С 8.2

Опубликовал Василий Демидов (Душелов) в раздел Программирование - Внешние компоненты

В данной статье рассматривается вопрос использования визуальных компонент (ActiveX) на форме тонкого клиента 1С 8.2 и веб-клиента на базе MS Internet Explorer.

Возможности новой платформы 1С 8.2 все продолжают радовать, многие начали переводить свои конфигурации с 8.1 (а может и 7.7) на управляемые формы для использования в тонком и веб-клиентах, но уже существует множество визуальных компонент для 1С, которые используются в промышленной эксплуатации.

И так...

Как известно, MS Internet Explorer прекрасно работает с ActiveX-объектами, чем мы и воспользуемся.

Публикация компоненты.

 1. На веб-сервере выкладываем файлы компоненты и html-страницу для инициализации объекта компоненты. (примеры файлов приложены к статье)

<object id="vk"
classid="http://s0740/components/Dushelov.VectorDrawing1C.dll#Душелов.VectorDrawing"
width="100%" height="100%">
</object>

Где id - имя элемента, по которому потом будет получен объект компоненты,

и classid - идентификатор класса компоненты в формате "<полный путь к файлу компоненты на веб-сервере>#<имя класса компоненты>

2.  На клиентских машинах данный веб-сервер добавляем в список "надежных узлов"

(В IE - меню "Сервис" - "Свойства обозревателя" - закладка "Безопасность" - зона "Надежные узлы")

и проверяем уровень безопасности для этой зоны (должно быть разрешено использование ActiveX)

+ для компонент на .Net Framework'е выставляем нужные разрешения:

Жмем mmc, выбираем оснастку .NET 2.0 Framework Configuration - C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorcfg.msc (если ее нет, то скачиваем из файлов статьи), выбираем в дереве "Runtime security policy", жмем Adjust Zone Security и дальше выбираем Full Trust (возможно и с меньшим доверием будет работать) для зоны, в которую внесен сайт с нашим ActiveX.

3. После проделанных действий на клиентской машине можно открыть страницу инициализации компоненты и на ней должен появиться объект компоненты.

Использование на форме тонкого клиента

Контейнером для компоненты будем использовать элемент формы с типом "Поле HTML-документа", в котором открываем страницу инициализации компоненты

Пример:

Элементы.ВК.Документ.URL = "http://s0740/components/vector.html";

После загрузки страницы ищем элемент по идентифиатору, написанному выше, получаем объект и подписываем нужные события компоненты.

(вот с событиями только 1 нюанс - русские названия событий IE не видит, как побороть - пока не знаю)

Пример:

ЭлементВК = Элементы.ВК.Документ.getElementById("vk");
Если
ЭлементВК = Неопределено Тогда
   
Сообщить("Не найден объект компоненты!");
    Возврат;
КонецЕсли;

Элементы.ВК.ТолькоПросмотр = Ложь;
ОбъектВК = ЭлементВК.contentDocument;
ДобавитьОбработчик ОбъектВК.OnShapeMouseDoubleClick, ПриДвойномЩелчкеМышкойПоФигуре;

После этого можно работать с объектом компоненты, как с обычным ком-объектом.

Пример использования визуальной компоненты 

К статье приложен пример использования компоненты "VectorDrawing"

Соответственно, для работы компоненты на клиентских машинах должен быть установлен .Net Framework 2.0

 

Скачать файлы

Наименование Файл Версия Размер
Файлы примера использования компоненты VectorDrawing
.zip 91,88Kb
19.11.09
365
.zip 91,88Kb 365 Бесплатно
.NET 2.0 Framework Configuration Tools
.zip 443,15Kb
23.03.10
85
.zip 443,15Kb 85 Бесплатно

См. также

PowerTools от 1 000
Комментарии
1. dushelov (Душелов) 19.11.09 12:48 Сейчас в теме
Слушаю идеи и предложения ;)
2. Alexandr_P (Русский) 20.11.09 04:50 Сейчас в теме
(1) А реально будет: редактирование mxl средствами Excel?
3. dushelov (Душелов) 20.11.09 07:37 Сейчас в теме
4. Alexandr_P (Русский) 20.11.09 08:29 Сейчас в теме
(3) Можно ли сделать редактирование табличных документов 1С при помощи Excel? Ну, скажем, макетов для отчетов?
5. dushelov (Душелов) 20.11.09 10:29 Сейчас в теме
(4) К теме данной статьи это не относится, но конверторы mxl2xls и обратно существуют.
6. kadr (kadr) 36 20.11.09 11:06 Сейчас в теме
В статье рассмотрен вопрос об управлении ВК из 1С.
А есть ли наработки по управлению приложением из ВК на базе ActiveX?

Ну к примеру получить Контрагентов текущей БД и вывести их в форму html.
7. Кирилл Коновалов (akkvamarin) 114 20.11.09 11:35 Сейчас в теме
8. dushelov (Душелов) 20.11.09 15:48 Сейчас в теме
(6) А что там сложного? Обычное ком-соединение.
9. kadr (kadr) 36 20.11.09 16:00 Сейчас в теме
Можно испросить пример как получить контекст приложения, загрузившего ВК из ВК?
10. dushelov (Душелов) 20.11.09 16:56 Сейчас в теме
(9) В шаблонах 1С реализовано через указатель на интерфейс 1С: http://www.asd-dnepr.com/v82vkomponent.html#_cpp_intf_comp

В ActiveX-ах только новым com-соединением к базе.
11. kadr (kadr) 36 20.11.09 17:17 Сейчас в теме
Спасибо.
Реально помогли.
12. Dmitry Afanasyev (afanasko) 35 23.11.09 11:27 Сейчас в теме
Интересно.
А что насчет файрфокса? Слышал что у 1С новый метод реализации внешних компонент: не АктивИкс, а NativeAPI. Не ковырял еще?
13. Олег Никоноров (nikolega) 142 23.11.09 12:43 Сейчас в теме
Обратите внимание как автор себя любит :)
Dushelov.VectorDrawing1C.dll#Душелов.VectorDrawing
14. vip (vip) 23.11.09 12:51 Сейчас в теме
(13) Обращаем.
Любит себя вполне заслуженно.
Абсолютно нормально. Ненормально #nikolega.ОчереднойПеренумератор
cleaner_it; +1 Ответить 1
15. dushelov (Душелов) 23.11.09 13:09 Сейчас в теме
(12) >не АктивИкс, а NativeAPI
Не верно сказано ;), правильнее не COM, а NativeAPI.
Это всего лишь технология подключения ВК к 1С, не визуальная (пример - формирование штрихкода, на макете в 8.2 уже нет объекта компоненты, как было в 8.1, а ВК формирует картинку и вставляется на форму).

А визуально - только ActiveX

(13) А в чем проблема?
16. larissa builova (larisab) 157 23.11.09 13:09 Сейчас в теме
(14) Ха, любить себя можно и незаслуженно, как и вообще любить ;)
(13) Мало того, мы его тоже любим :)
17. vip (vip) 23.11.09 13:22 Сейчас в теме
(14+) Программеру добиться признания в среде программеров (я не об адынэснегах) практически невозможно. Каждый считает себя творцом, единственным и неповторимым.
В данном случае г-н Душелов этого заслуженно добился.
Чего и вам искренне желаем.
18. Аркадий Кучер (Abadonna) 3659 25.11.09 06:48 Сейчас в теме
(0)
русские называния событий IE не видит, как побороть - пока не знаю

А я знаю! :D У меня ни в одной ВК нет русского названия
19. dushelov (Душелов) 25.11.09 18:09 Сейчас в теме
(18) Я делал русскими, чтобы на форме в конфигураторе были "нормальные" (привычные) названия свойств и событий ;) Видимо, придется дублировать...
Abadonna; +1 Ответить
20. Дмитрий Богданов (eiffil) 25.12.09 22:57 Сейчас в теме
1. На веб-сервере выкладываем файлы компоненты и html-страницу для инициализации объекта компоненты. (примеры файлов приложены к статье)


А без вэб-сервера нельзя обойтись??? Это IIS???
21. dushelov (Душелов) 25.12.09 23:17 Сейчас в теме
А какой смысл в тонком клиенте без вебсервера?
22. Дмитрий Богданов (eiffil) 28.12.09 19:17 Сейчас в теме
может смысла и не много, хотя где-то прочитал в 1С-ной литературе, что предпочтительней выбирать тонкий клиент. Но вся проблема в том, что в управляемом приложении (хоть даже толстый клиент) так просто не кинешь элемент управления ActiveX на форму...

М.б. пойти другим путем, и сделать контрол, который будет программно выводиться на форму без оболочки IE, но пока что я не знаю, как такое сделать.... Если есть мысли или ссылки по поводу последнего предложения, то их очень интересно было бы увидеть
23. dushelov (Душелов) 28.12.09 20:59 Сейчас в теме
(22) Такого сделать не возможно.
24. dushelov (Душелов) 28.12.09 21:07 Сейчас в теме
+(23)

А в чем проблема настроить вебсервер или расшарить папку в сети и грузить html вида \\192.168.0.1\components.html ?
25. Дмитрий Богданов (eiffil) 28.12.09 21:08 Сейчас в теме
какая-то запара с вэб-сервером, не хочет страница показывать компонент. Вместо него как-будто в страницу вставлен фрейм с двумя полосами прокрутки...

Не похоже, что это так и должно быть :| . В чем может быть косяк?
26. dushelov (Душелов) 28.12.09 21:13 Сейчас в теме
(25) Не хватает прав. Эксплорер блокирует активикс.

"На клиентских машинах данный веб-сервер добавляем в список "надежных узлов"

(В IE - меню "Сервис" - "Свойства обозревателя" - закладка "Безопасность" - зона "Надежные узлы")

и проверяем уровень безопасности для этой зоны (должно быть разрешено использование ActiveX)."
27. Дмитрий Богданов (eiffil) 28.12.09 21:30 Сейчас в теме
не помогло... м.б. что-то в настройках веб-сервера надо сделать???
28. dushelov (Душелов) 28.12.09 21:41 Сейчас в теме
(27) Если есть возможность скачать dll по ссылке, то с веб-сервером все нормально. А у эксплорера стот еще указать разрешение на выполнение .Net кода. вообщем, ради эксперимента стоит вообще поставить все в "разрешено" и поиграться настройками.
29. Дмитрий Богданов (eiffil) 28.12.09 21:49 Сейчас в теме
В эксплорере уже выставил се по максимуму. При попытке сохранить с сервера файл Dushelov.VectorDrawing1C.dll он выдает ему такое содержимое:

<html><head><title>Error</title></head><body>Не найдена указанная процедура. </body></html>

Отсюда и получался фрейм, как на скриншоте
30. dushelov (Душелов) 28.12.09 21:51 Сейчас в теме
(29) А в 8.1 эта компонента работает?
31. Дмитрий Богданов (eiffil) 28.12.09 22:01 Сейчас в теме
сделал обычную (неуправляемую 8.2) форму, туда кинул контрол активХ - работает.
Что-то мне подсказывает, что в вэб-сервере настройки безопасности не дают выполниться dll-ке... Эх, как любят центральные 1С-ники усложнять жизнь...
32. dushelov (Душелов) 28.12.09 22:23 Сейчас в теме
(31) Это не 1С-ники, это технология. Как же еще та же компонента будет работать в веб-клиенте? Там на форму ничего не кинешь.

А настройки безопасности не в веб-сервере, а именно в эксплорере, от веба главное отдать файл и все.
33. Дмитрий Богданов (eiffil) 28.12.09 23:17 Сейчас в теме
прогресс наступил (мало ли кому пригодится). по материалам похожего вопроса на gotdotnet выяснил, что если для папки в которой лежит dll в настройках стоит
Execute Permissions: Scripts and Executables
при этом dll интерпретируется как ISAPI dll, поэтому при обращении к ней она пытается выполниться и в результате выдается ошибка 404: ресурс не найден.
Для решения проблеммы достаточно убрать разрешение на выполнение для папки в которой лежит контрол...

Однако контрол всё равно не отоборажается, хотя скачать уже его можно... Буду копать дальше...
Душелов; +1 Ответить 1
34. dushelov (Душелов) 28.12.09 23:32 Сейчас в теме
(33) Ну вот, уже набирается материал для собственной статьи ;)
35. Роман Осадченко (cleaner_it) 208 13.01.10 04:33 Сейчас в теме
(34) А на обычной форме в "толстом" клиенте пробовал визуальные актив-икс компоненты располагать? Что-то поиск молчит по этому поводу, такое чувство что все актив-икс придется располагать в тонких клиентах, и толстые совсем не у дел останутся
36. dushelov (Душелов) 13.01.10 08:09 Сейчас в теме
(34) В управляемых формах? Точно так же.
37. dushelov (Душелов) 23.03.10 12:09 Сейчас в теме
Спасибо sgeneralov за дополнение к статье по настройкам безопасности для .Net Framework'а.
38. dushelov (Душелов) 23.03.10 14:11 Сейчас в теме
Добавил видео, демонстрирующее работу визуальной компоненты в тонком клиенте.
39. sergling (sergling) 27 28.05.10 15:42 Сейчас в теме
подскажите почему у меня не работает конструкция
ОбъектВК = ЭлементВК.contentDocument;
а работает
ОбъектВК = ЭлементВК;

при этом почему то в отладчике не видно реальных методов и свойств объекта, хотя использовать их получается? Основная же моя беда - не находятся события объекта.
40. dushelov (Душелов) 28.05.10 16:09 Сейчас в теме
(39) Вебклиент? Версия платформы какая?
41. dushelov (Душелов) 28.05.10 16:27 Сейчас в теме
(39) и еще, события "не находятся" еще потому, что они могут быть с русскими названиями
И в отладчике не всегда видны свойства и методы ком-объектов.
42. sergling (sergling) 27 28.05.10 16:43 Сейчас в теме
Тонкий клиент, 8.2.10.82, 8.2.11.229
пробовал свою компоненту, не из статьи
43. sergling (sergling) 27 28.05.10 16:46 Сейчас в теме
(41) имена латинскими, мне почему-то кажется что как-то связано с contentDocument, может быть новая версия платформы иначе работает.
44. dushelov (Душелов) 28.05.10 16:58 Сейчас в теме
contentDocument - это ActiveX-объект InternetExplorer'a
45. sergling (sergling) 27 16.06.10 11:40 Сейчас в теме
Запустил таки это чудо через тонкий клиент (свой компонент), но вот при попытке старта через web-клиент получаю от браузера "...ФормаУправляемая.Форма(418)}: Поле объекта не обнаружено (url)". Соответственно 418 строка это
Элементы.ВьюверПоле.Документ.url = "http://localhost/agro.html";
как тут быть? У меня IE 8.0.6001.18702, может версия не подходящая?
46. kiba Ковальчук (kiba) 55 18.06.10 16:49 Сейчас в теме
У кого-нибудь получилось таким же образом подключить компоненту WebCam.dll тоже от Dushelovа? Все делал по аналогии. Но не работает - черный квадрат и все...
47. Павел Рудаков (minister2007) 19.06.10 21:16 Сейчас в теме
dushelov, подскажи, что может быть при web-клиенте "Поле объекта не обнаружено (URL)"? В тонком все "как по маслу".
48. sergling (sergling) 27 21.06.10 11:30 Сейчас в теме
У меня и его компонента и моя отлично работают в тонком клиенте. Обновил ИЕ до 8 версии, поставил фреймверк 2 версии, добавил хост в доверенную зону, разрешил для доверенной зоны все.
49. sergling (sergling) 27 21.06.10 12:11 Сейчас в теме
Получается что свойство "Документ" поля вида "Поле html Документа" не работает в веб-клиенте, во всяком случае его тип не определен, по документации такое св-во доступно только в толстом клиенте. Однако успешно использует в тонком.
50. sergling (sergling) 27 22.06.10 13:34 Сейчас в теме
св-во "документ" не доступно в обработчике при открытии формы в веб-клиенте, после открытия пожалуйста...
51. dushelov (Душелов) 22.06.10 13:51 Сейчас в теме
Скорее всего при открытии его еще нет, этого документа, точнее его значение равно Null
52. sergling (sergling) 27 23.06.10 11:08 Сейчас в теме
Вот это очень сбило с толку, сейчас пытаюсь понять почему в веб-клиенте не работает
ОбъектВК = ЭлементВК.contentDocument; Нету св-ва contentDocument, т.е. работает такая конструкция ОбъектВК = ЭлементВК, но при этом не получается использовать события активХ элемента.
53. Виктор Даниленко (yastreb_220) 23.09.10 16:38 Сейчас в теме
а вообще таким образом можно с любой dll -кой работать чтоли??? кто нить пробовал??? напрмер в УТ 11 можно будет покдлючить оборудование ???
54. Сергей (seermak) 654 05.11.10 09:46 Сейчас в теме
Для заторможенных - на примере: http://infostart.ru/public/16446/ - как такое сделать в 8.2 на если несложно, то на пальцах :)
55. L_Oleg (l_oleg) 10.01.12 05:48 Сейчас в теме
(54) seermak,
также интересует этот вопрос.
Уточню: в 8.2 на ТОНКОМ клиенте
56. Сергей Писларь (serpisal) 10.03.12 15:37 Сейчас в теме
Интересно, пришлось чутка повозитья ,чтобы разобраться и прикрутить, но это того стоило
57. Валерий Іванович (firma-modul) 35 19.06.13 11:16 Сейчас в теме
Зарегистрировал Active-X компонент в системе. На форму документа добавил Поле HTML документа.
При создании на сервере присваиваю переменной даного поля следующий текст:

<HTML>
<OBJECT id=ThermalLib classid=clsid:904511D2-5407-4033-8DAD-07B33EC7317E width=0 height=0><PARAM NAME=""_Version"" VALUE=""65536""><PARAM NAME=""_ExtentX"" VALUE=""26"">
<PARAM NAME=""_ExtentY"" VALUE=""26"">
<PARAM NAME=""_StockProps"" VALUE=""0"">
</OBJECT>
</HTML>



Запускаю предприятие. При открытии данной формы 1С начинает матюкатся, типа настройки обозревателя не разрешают показывать ActiveX компоненты и все такое.

Иду в свойства обозревателя. Для зоны "Интернет" Включаю всевозможные настройки Active-X и сценарии.

Запускаю форму - вуаля, ни на что не ругается, компонента Active-X отлично работает.

Все бы ничего, если не учитывать того, что я полностью уничтожил безопасность компьютера.

Нужно все те настройки включить только для надежных узлов. Но самый сложный вопрос: Какой адрес добавить в надежные узлы??? Промучался. Что только не добавлял. И 904511D2-5407-4033-8DAD-07B33EC7317E добавлял, и clsid:904511D2-5407-4033-8DAD-07B33EC7317E добавлял не работает. Открываю форму - все те же сообщения и 1С виснет намертво.
58. Валерий Іванович (firma-modul) 35 19.06.13 11:17 Сейчас в теме
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа