Как известно, компания 1С лишила разработчиков возможности размещения ActiveX объектов на управляемой форме. Обходные пути, конечно же, есть. Они неоднократно были описаны в публикациях. Например, в этой - //infostart.ru/public/61064/. Но все они сводятся к вставке элементов управления в тэг <OBJECT>, используемый в HTML документе, что лишь частично удовлетворяет потребность в их использовании. Впрочем, последние версии платформы, насколько я знаю, используют интерфейс WebView2 для приложений, работающих в ОС Windows, а прямое использование ActiveX в WebView2 не поддерживается (цитата).
Представленное в данной публикации решение, контейнер ActiveX объектов, является на данный момент единственной альтернативой размещения ActiveX объектов на управляемых формах. Поле HTML документа, как и другие поля элементов управления, имеющие оконный интерфейс (см. примечания), являются по сути всего лишь родительскими окнами для контейнера.
Работа с компонентой очень проста, поскольку компонента имеет всего лишь два метода (описание приемов работы с компонентой продемонстрировано в приложенных обработках). Всё остальное делает платформа 1С:Предприятие.
Примечание 1: в версиях платформы 1С:Предприятие выше 8.3.11 изменились классы окон, поэтому на этих платформах следует использовать в качестве окна для контейнера элемент с типом ФорматированныйДокумент, а в функцию УстановитьActiveX в качестве второго параметра передавать значение 1 или использовать альтернативную функцию ВставитьActiveX. Подробности см. в справочной системе внешней компоненты.
Примечание 2: в версиях платформы 1С:Предприятие выше 8.3.12 оконный интерфейс потеряли большинство элементов управления, поэтому на этих платформах следует использовать в качестве окна для контейнера элементы с типом ФорматированныйДокумент, HTMLДокумент и использовать альтернативную функцию ВставитьActiveX. Подробности см. в справочной системе внешней компоненты.
Примечание 3: В некоторых случаях компонента успешно загружается только когда платформа 1С:Предприятия запущена с правами администратора. Прочитать как это обойти или автоматизировать можно на этой странице.
Работоспособность проверена:
на версии платформы 8.3.15.1489 и версии Windows 7;
на версии платформы 8.3.23.1865 и версии Windows 10.
В некоторых случаях может возникать ошибка при регистрации компоненты, описанная в комментарии 84. В комментариях 85, 86 описаны способы устранения подобной ошибки.
P.S. Поскольку компонента выполнена по технологии COM, она должна быть зарегистрирована утилитой regsvr32.exe с правами администратора.
Реализация внешней компоненты - 32-битная, соответственно и клиент 1С:Предприятия, к которому будет подключаться компонента, также должен быть 32-битный. Есть, конечно, варианты решения проблемы совместимости, но моя публикация не об этом.
Внешняя обработка, приложенная к публикации - пример использования контейнера ActiveX объектов на управляемых формах.
Не для коммерческого использования (см. лицензионное соглашение).
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.378
Вступайте в нашу телеграмм-группу Инфостарт