Рассмотрим задачу интеграции двух разных поколений платформы 1С. Основная идея заключается в использовании стандартного элемента управления Microsoft Web Browser (известного как Shell.Explorer), который позволяет отображать веб-страницы непосредственно в окне обработки 1С 7.7.
Для реализации этой задачи нам потребуется выполнить следующие шаги:
Shell.Explorer.Shell.Explorer будет использовать крайне устаревшие настройки рендеринга, что сделает запуск веб-клиента 1С 8 невозможным.Самым важным этапом является организация двусторонней связи. Мы можем передавать данные из 1С 7.7 в веб-клиент и обратно, используя объект external.
Рассмотрим, как 1С 7.7 может отправить команду в веб-интерфейс 8-ки. Мы используем метод document.parentWindow.execScript внутри браузера для выполнения JavaScript-кода. Пример логики взаимодействия:
// Пример вызова функции внутри веб-страницы из 1С 7.7
ЭлементActiveX.Document.parentWindow.execScript("ФункцияJS()", "JavaScript");
Для обратной связи, когда веб-клиент 8-ки должен передать данные в 1С 7.7, мы используем объект window.external. В коде 1С 7.7 мы перехватываем события, генерируемые элементом ActiveX. В частности, событие BeforeNavigate2 или другие доступные события компонента могут служить точками входа для передачи данных.
Проанализируем ситуацию: стоит ли использовать этот метод в реальных проектах? Технически это «островки 1С 8» внутри старой системы 1С 7.7. Это может быть полезно в сценариях:
Важно понимать, что использование Shell.Explorer накладывает определенные требования к безопасности и стабильности. Мы рекомендуем:
HTTP-сервисы на стороне 1С 8 как основной канал для передачи больших объемов данных, а ActiveX оставить только для визуализации интерфейса.Мы рассмотрели, как организовать связь между старой и новой платформами. Несмотря на кажущуюся сложность, механизм работы через Shell.Explorer и window.external остается рабочим инструментом для интеграции в рамках локальных рабочих мест. Разберем этот подход на практике только в том случае, если альтернативные методы обмена данными (например, COM-соединение или прямое чтение SQL) не позволяют достичь необходимого уровня пользовательского удобства.