Взаимодействие 1C с браузером Google Chrome через WebSocket посредством DevTools Protocol

17.04.20

Интеграция - WEB-интеграция

Внешняя обработка посредством DevTools Protocol позволяет открыть в браузере заданный URL, получить снимок открытой страницы, вывести на страницу браузера произвольный текст, выполнить JavaScript. Также отображает полный список доступных команд DevTools Protocol с описанием передаваемых параметров и возвращаемых значений. Поддерживаются все версии платформы от 8.3.10 и выше до 8.3.17.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
1ChromeDev.epf
.epf 1,19Mb ver:0.09.8
62
62 Скачать (1 SM) Купить за 1 850 руб.

При запуске обработка пытается обнаружить установленный на компьютере браузер Google Chrome. Если исполняемый файл браузера не найден, укажите в диалоге выбора файла полный путь к исполняемому файлу Chrome, либо браузеру Chromium, если вы предпочитаете использовать его. 

Перед началом демонстрации закройте открытые окна Google Chrome, убедитесь что все экземпляры браузера закрыты. Нажмите в обработке кнопку «Запустить браузер». Эта команда запустит исполняемый файл с нужным параметром командной строки: 

chrome.exe --remote-debugging-port=9222

После запуска браузера он начинает слушать порт 9222 и можно открыть в адресной строке: http://localhost:9222/json 

Нажмите в обработке кнопку «Заполнить описание», чтобы получить список доступных команд Chrome DevTools Protocol.

Следующая кнопка «Открыть URL» открывает страницу по заданному URL и возвращает адрес подключения WebSocket. Наконец то мы можем продемонстрировать возможность взаимодействия. Нажимаем кнопку «Демонстрация» и на открытой странице браузера на 10 секунд всплывает эффектное окно с текстом. Это произошёл вызов кода на JavaScript, расположенного в макете внешней обработки.

Чтобы получить снимок страницы браузера, отправьте такую команду.

ТекстJSON = "{""id"":1,""method"":""Page.captureScreenshot""}";
ОписаниеОповещения = Новый ОписаниеОповещения("ПолученСнимокЭкрана", ЭтотОбъект);
ВнешняяКомпонента.НачатьВызовВебСокет(ОписаниеОповещения, АдресWebSocket, ТекстJSON);

Результат вернётся в виде JSON, где картинка закодирована по стандарту Base64.

Вы можете выполнить произвольный код JavaScript на соответствующей вкладке внешней обработки.

ИмяМетода = "Runtime.evaluate";
ПараметрыМетода = Новый Структура("expression", ТекстJavaScript);
ДанныеJSON = Новый Структура("id,method,params", 1, ИмяМетода, ПараметрыМетода);
ТекстJSON = ЗаписатьСтрокуJSON(ДанныеJSON);
ОписаниеОповещения = Новый ОписаниеОповещения("ПолученРезультат", ЭтотОбъект);
ВнешняяКомпонента.НачатьВызовВебСокет(ОписаниеОповещения, АдресWebSocket, ТекстJSON);

Самостоятельно исследуйте и вызывайте команды Chrome DevTools Protocol, чтобы ознакомиться с богатыми возможностями этого инструмента. Для взаимодействия с браузером подойдёт любая внешняя компонента с поддержкой WebSocket Client. В данном примере использована компонента 1cWinCtrl, которая содержит и другой полезный функционал для управления окнами, процессами и буфером обмена.

В заключение следует сказать, что описанный механизм взаимодействия с браузером Google Chrome планируется использовать в инструменте сценарного тестирования прикладных решений Vanessa Automation для автоматизированного создания пользовательских инструкций, в том числе видео-инструкций.

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL, 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    1921    2    0    

9

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    1645    1    1    

4

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18625    20    22    

18

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 1C:Бухгалтерия Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20775    13    19    

18

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    18412    53    50    

29

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    527    2    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Pr-Mex 164 17.04.20 09:13 Сейчас в теме
Огромное спасибо за разработку!
2. Steelvan 307 17.04.20 10:45 Сейчас в теме
При открытии срабатывает поиск пути к обозревателю, если в конфе синхронный режим вк.
Доработайте пжл под асинхронный режим работы с родными dll.

Иначе каждому придется это все равно дорабатывать, а так вы сделаете это один раз централизованно :)
3. Steelvan 307 17.04.20 10:49 Сейчас в теме
добавление

Это замечание относится к вашей предыдущей обработке, эту пока не смотрел.
Я сначала написал, а потом увидел что это другая обработка :)
4. kandr 207 18.04.20 15:38 Сейчас в теме
(3) Эта обработка полностью на асинхронных вызовах, обработку из предыдущей темы переделаю. Необходимые изменения уже опубликованы на GitHub в ветке develop.
5. Istur 1475 08.02.22 23:52 Сейчас в теме
дополнительная информация - если вместо about-blank написать --silent-launch то при открытии хрома не будет открыто ни одной вкладки. если по очереди запускать хром и нужную страницу, то так лучше, не будет этого лишней открытой вкладки слева.

P.S. огромное спасибо за публикацию!
6. Pr-Mex 164 09.02.22 10:45 Сейчас в теме
(5) Попробую использовать --silent-launch. Спасибо.
7. Viking 30.06.23 15:13 Сейчас в теме
День добрый)
перестала работать ваша кнопка Открыть URL

Using unsafe HTTP verb GET to invoke /json/new. This action supports only PUT verb.

вот, что выдаёт теперь в место JSON

попытку исключение проходит

HTTPЗапрос = Новый HTTPЗапрос("/json/new?" + Объект.URL);
HTTPСоединение = Новый HTTPСоединение("localhost", 9222, , , , 10);

Попытка
	HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
Исключение
	ОшибкаБраузера(Команда);
	Возврат;
КонецПопытки;
	
ТекстJSON = HTTPОтвет.ПолучитьТелоКакСтроку();
ДанныеJSON = ПрочитатьСтрокуJSON(ТекстJSON, Ложь);
Объект.WS = ДанныеJSON.webSocketDebuggerUrl;
Показать
10. kandr 207 30.06.23 19:51 Сейчас в теме
(7) Посмотрите как это теперь работает в Vanessa Automation


https://raw.githubusercontent.com/Pr-Mex/vanessa-automation/develop/VanessaAutomation/Forms/%D0%A3%D0%BF%D1%8­0%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D0%BC%D0%B0%D1%8F%D0%A4%D0%B­E%D1%80%D0%BC%D0%B0/Ext/Form/Module.bsl


Найдите там строчку:

HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("PUT", HTTPЗапрос);
8. kandr 207 30.06.23 19:44 Сейчас в теме
(7) Добрый день! Google поменяла DevTools Protocol, теперь вместо GET нужно использовать PUT, пример как исправить можно посмотреть в Vanessa Automation
9. Viking 30.06.23 19:46 Сейчас в теме
(8)
Vanessa Automation
спасибо! от души ) изучим
11. Viking 30.06.23 20:13 Сейчас в теме
// Кодирует строку для работы с браузером
&НаКлиенте
Функция КодироватьСтрокуUrl(Стр) Экспорт
	Возврат КодироватьСтрокуСервер(Стр);
КонецФункции

&НаСервереБезКонтекста
Функция КодироватьСтрокуСервер(Знач Стр)
	Возврат Вычислить("КодироватьСтроку(Стр, СпособКодированияСтроки.КодировкаURL)");
КонецФункции

&НаКлиенте
Процедура ОткрытьURL(Команда)
	
	
	Заголовки = Новый Соответствие;
	Заголовки["Content-Type"] = "application/x-www-form-urlencoded";
	HTTPЗапрос = Новый HTTPЗапрос("/json/new?" + КодироватьСтрокуUrl(Объект.URL), Заголовки);
	//HTTPСоединение = Новый HTTPСоединение("localhost", МодульРаботаСБраузером().ПортБраузера, , , , 10);
	HTTPСоединение = Новый HTTPСоединение("localhost", 9222, , , , 10);
	Попытка
		HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("PUT", HTTPЗапрос);
	Исключение
		ВызватьИсключение ОписаниеОшибки();
	КонецПопытки;
	//ТекстJSON = HTTPОтвет.ПолучитьТелоКакСтроку();	
	
	//HTTPЗапрос = Новый HTTPЗапрос("/json/new?" + Объект.URL);
	//HTTPСоединение = Новый HTTPСоединение("localhost", 9222, , , , 10);

	//Попытка
	//	HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
	//Исключение
	//	ОшибкаБраузера(Команда);
	//	Возврат;
	//КонецПопытки;
	
	ТекстJSON = HTTPОтвет.ПолучитьТелоКакСтроку();
Показать
12. Viking 30.06.23 20:13 Сейчас в теме
вот так и будет работать ))) проверено )))
13. kudim 11.08.23 15:24 Сейчас в теме
спасибо! исправленный вариант <ОткрытьURL> работает. Неплохо было бы и в выложенной обработке поправить!
Оставьте свое сообщение