API Chrome для 1C - альтернатива ПолеHTMLДокумента для парсера

29.12.20

Разработка - Разработка внешних компонент

ВНИМАНИЕ! Движок Awesomium давно не поддерживается, работоспособность не гарантирована! Библиотека, подключаемая по технологии COM, предоставляет доступ к Api awesomium (www.awesomium.com), браузеру на движке chrome без визуального отображения

Скачать файл

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

Наименование По подписке [?] Купить один файл
Внешняя компонента AltBrowser
.dll 30,50Kb
121
121 Скачать (1 SM) Купить за 1 850 руб.
Awesomium (распаковать в каталог к AltBrowser.dll)
.zip 15,01Mb
111
111 Скачать (1 SM) Купить за 1 850 руб.
Исходники на с++
.zip 5,79Mb
42
42 Скачать (1 SM) Купить за 1 850 руб.

upd. с переводом поле HTML на WebKit актуальность в использовании стороннего движка отпала.

Если вы когда-нибудь писали парсер html под 1c, то прекрасно знакомы с кучей багов ПолеHTMLДокумента, которые он наследует от WebBrowser - например событие ДокументСформирован некорректо отрабатывает AJAX, DOM модель работает от случая к случаю на разных машинах и т.д.

Моя библиотека не панацея, но позволила решить все насущные проблемы. Можете говорить о недостатке функционала, но 3х функций вполне достаточно для парсинга каталогов десятков интернет-магазинов, загрузок заказов из личного кабинета и т.д.

Итак, по порядку.

Для начала, нужно зарегистрировать библиотеку

regsvr32 altbrowser.dll

Инициализация компоненты:

Попытка
 браузер = новый COMОбъект("AltBrowser.Browser");
Исключение
 Предупреждение("Не удалось загрузить внешнюю компоненту!",,"Ошибка создания");
 Состояние("");
 Возврат;
КонецПопытки;
Браузер.CreateView();

По сути, CreateView() это создание вкладки в браузере. Создание нескольких вкладок не реализовано, не было потребности.

Обязательно надо закрыть ее, когда она не нужна. 

 Браузер.DestroyView();

Перейти на страницу

Результат=Браузер.Navigate(url);

Переходит на указанный url, выполняется синхронно, возвращает строку outerHTML. В отличии от ПолеXTMLДокумента возвращает значение после полной загрузки документа, корректно отрабатывает AJAX.  Асинхронная загрузка не реализована.

Результат=Браузер.outerHTML();

 Тут все просто, возвращает outerHTML документа

Браузер.ExecuteJS(ТекстСкрипта);

 Выполняет javascript, опять же синхронно. Результат можно посмотреть  с помощью outerHTML. выполнение скриптов с возвратом результата не стал реализовывать, т.к. за 2 года работы потребности в этом не было.

 

В качестве примера авторизация на сайте emex.ru

Браузер.Navigate("http://emex.ru/");
браузер.ExecuteJS("var elems = document.getElementsByTagName('input');
|for(var i=0; i | if (elems[i].name=='username'){
| elems[i].value='"+ЛогинEmex+"';
| }};");
браузер.ExecuteJS("var elems = document.getElementsByTagName('input');
|for(var i=0; i | if (elems[i].name=='password'){
| elems[i].value='"+ПарольEmex+"';
| }};");
браузер.ExecuteJS("var elems = document.getElementsByTagName('form');
|for(var i=0; i | var str=elems[i].action;
| if (str.indexOf('Account.mvc')+1){
| elems[i].submit();
| }};");

 

парсер браузер chrome WebBrowser ПолеHTMLДокумента Внешняя компонента

См. также

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77993    73    280    

191

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    29329    139    100    

92

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    37262    115    128    

116

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    47821    125    66    

68

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    2854    bayselonarrend    14    

49

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    5652    kovalevdmv    26    

77

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

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1377    3    4    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nsm 09.06.14 02:05 Сейчас в теме
Приветствую коллегу по железу (правда я по силовому троеборью в экипировке- IPF).
Вы не думали над тем что бы сделать на основе http://infostart.ru/public/149468/ парсер сайта? Я понимаю, что вы и так попытались донести свою мысль , но к сожалею большинство не понимают как это можно реализовать (ну или только я) ), как ни стараются)
2. centurion74 36 09.06.14 11:26 Сейчас в теме
(1) nsm, У меня как раз таки обработка собирает данные о кроссах и ценах с 12 сайтов, включая Exist, и выводит в сводную таблицу, либо тащит с любого из сайта список кросс-номеров к детали и в подборе делает отбор по кроссам
3. centurion74 36 09.06.14 11:37 Сейчас в теме
(1) nsm, http://www.youtube.com/watch?v=NMK_-knQb0A вот собственно так работала старая версия без проценки, только в режиме подбора кроссов
4. theshadowco 258 11.06.14 11:23 Сейчас в теме
Как я понимаю, компонента по технологии COM, а не NativeAPI
5. centurion74 36 11.06.14 17:55 Сейчас в теме
(4) theshadowco, все верно. я в С++ особо не разбираюсь, сделал чтобы работало и то хорошо
6. Ava_1c 54 20.06.14 12:45 Сейчас в теме
Метод объекта не обнаружен (Destroy)
Прикрепленные файлы:
7. centurion74 36 20.06.14 13:24 Сейчас в теме
8. Ava_1c 54 20.06.14 13:48 Сейчас в теме
(7) Код как-бы из примера в статье:

	Попытка 
		браузер = новый COMОбъект("AltBrowser.Browser");
	Исключение
		Предупреждение("Не удалось загрузить внешнюю компоненту!",,"Ошибка создания");
		Состояние("");
		Возврат;
	КонецПопытки;
	Браузер.CreateView();
	
	Браузер.Destroy();
Показать
9. centurion74 36 20.06.14 16:46 Сейчас в теме
Мой фэйл, в новой версии библиотеки метод называетcя DestroyView()
10. Ava_1c 54 20.06.14 17:07 Сейчас в теме
(9) а где взять новую версию библиотеки? Инфостарт показывает, что дата файла = 01.06.14.
11. Ava_1c 54 20.06.14 17:36 Сейчас в теме
(10) Скачала еще раз библиотеку, переустановила, DestroyView() теперь работает. Спасибо.
Но так и не получилось воспользоваться ExecuteJS(). =(
Открываю страницу со следующим кодом:
<ht ml><body>

<fоrm method="POST" action='http://exist.ru/Profile/Login.aspx' id="loginForm">
<input type="text" id="login" name="login" value="МойЛогинНаЭкзисте" tabindex="1" />
<input type="password" value="МойПарольНаЭкзисте" id="pass" name="pass" tabindex="2" />
<input type="checkbox" name="save" id="tbSave" tabindex="3" value="yes" />
<input id="btnLogin" type="submit" value="" tabindex="4" style="width:30px;" />
</form>

</body></html>
Показать
Пытаюсь сделать
Браузер.ExecuteJS("document.getElementById('loginForm').submit();")
- ничего не происходит..
Пример авторизация на сайте emex из статьи - тоже не рабочий.

enturion74, не могли бы Вы привести хоть один живой пример использования скриптов?
29. keln 73 21.02.15 19:14 Сейчас в теме
(9) подскажи, а как дела обстоят с куками? Есть один сайт, который не дает залогинится, ругаясь на то, что "В вашем браузере отключены cookies".
30. centurion74 36 05.03.15 12:53 Сейчас в теме
(29) keln, да работают, один момент-они сохраняются в рабочую папку программы, как правило, куда указывает путь рабочей папке в ярлыке, там должны быть разрешения на запись
12. centurion74 36 20.06.14 18:53 Сейчас в теме
А где вы взяли такую страницу? если генерируете страничку, то сервер не примет ее, с большой долей вероятности, ибо источник неведомо где расположен.
Если уж говорить об экзисте, то вот рабочий кусок кода, который я продал очередной раз не далее как сегодня:
Процедура ВойтиExistНажатие(Элемент)
	Браузер.Navigate("http://exist.ru/");
	браузер.ExecuteJS("document.getElementById('login').value='"+ЛогинExist +"';
	|document.getElementById('pass').value='"+ПарольExist+"';
	|document.getElementById('tbSave').checked=true;
	|document.getElementById('loginForm').submit();");
КонецПроцедуры
13. centurion74 36 20.06.14 18:58 Сейчас в теме
Еще ньюанс, куки сохраняются по умолчанию в рабочую папку программы, как правило это "C:\Program Files (x86)\1cv82\common\" или "C:\Program Files\1cv82\common\", возможно, что UAC не дает записывать туда, либо нет прав на запись
18. TuneSoft 248 01.10.14 12:50 Сейчас в теме
(13) а указать другой путь для сохранения куки нельзя ?
14. EmpireSer 01.07.14 15:05 Сейчас в теме
Я как понял базовая система - это "альтернативный браузер" (с возможностью работы без форм)?
15. centurion74 36 01.07.14 15:34 Сейчас в теме
(14) EmpireSer, да, хотя в SDK awesomium в принципе есть функционал для отображения окна
16. EmpireSer 01.07.14 17:33 Сейчас в теме
(15)
Это я заметил.
Я ещё заметил, что она кросс-платформенная. Может Вам лучше вместо СОМ сделать Native компоненту? Заодно сможете сделать тоже кросс-платформенную внешнюю компоненту для 1С.
17. centurion74 36 02.07.14 08:02 Сейчас в теме
время будет может займусь, хотя потребности нет вроде такой
19. Гость 11.11.14 06:26
Добрый день!
Я видел вашу разработку для Гугл Хрома. Мне нужно не грабить страницу, а распечатать её в файл PDF по правилам Гугл Хром. То есть то, что делается с помощью стандартного меню Печать-Сохранить как PDF меня вполне устроит. Нужен ещё один метод к уже загруженной странице. PrintPDF(<path-file>)
Сколько может стоить такая доработка у Вас и в какой срок?
22. centurion74 36 14.11.14 16:04 Сейчас в теме
(19) Гость, посмотрю на выходных
26. nsm 23.11.14 12:04 Сейчас в теме
(22) Жаль, что моё предложение оказалось неинтересным. Думал, что смогу приобрести у вас уже готовый продукт.
27. centurion74 36 23.11.14 13:30 Сейчас в теме
(26) nsm, я отписал на почту вроде
28. nsm 23.11.14 21:42 Сейчас в теме
(27) точно нет) напишите ещё раз, пожалуйста. 9629095@gmail com
20. dikd 17 13.11.14 21:36 Сейчас в теме
А на 7.7 она будет работать?
21. centurion74 36 14.11.14 16:03 Сейчас в теме
(20) dikd, теоретически должно
23. dikd 17 19.11.14 14:09 Сейчас в теме
Вот такая ошибка при регистрации dll'ки
Прикрепленные файлы:
24. dikd 17 19.11.14 14:19 Сейчас в теме
Win 7 Prof 32 bit, Пробовал закидывать в System32 и в C:\
регить как regsvr32 altbrowser.dll
regsvr32 C:\altbrowser.dll
25. nsm 20.11.14 13:44 Сейчас в теме
centurion74, свяжитесь, пожалуйста, со мной по поводу возмездного сотрудничества 9629095 собака gmail точка com как можно скорее))
31. r2d255 15.04.15 14:41 Сейчас в теме
Вот такая ошибка при регистрации - http://savepic.net/6704820.htm
Windows 7 - 64
Можете подсказать что не так?
34. Leo_A 103 20.02.16 12:12 Сейчас в теме
(31) r2d255,
Всем у кого не регается altbrowser.
Вероятнее всего проблема в файлах:
msvcp120.dll
msvcr120.dll
Так же убедитесь, что вы не забыли распаковать Awesomium в каталог altbrowser.dll
Выяснить, чего реально не хватает можно софтиной dependencywalker. Запускаете исполняемый файл, подсовываете ему библиотеку и смотрите, на что ругается. В первую очередь подкиньте в тот же каталог altbrowser.dll те библиотеки, которые без значка песочных часов.
obemgyorik; +1 Ответить
32. Andruykha 179 29.07.15 18:14 Сейчас в теме
33. Andruykha 179 07.09.15 15:47 Сейчас в теме
В клиент-серверной базе не работает
Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован
35. nkYellOw 23.06.16 12:47 Сейчас в теме
Спасибо за обработку! Попробую поковырять. Долгие танцы с бубном по нахождению элементов и судя потому что после нажатия кнопки в результате та же страница то я делаю что то не так)))

пример кода на сайте:
<input name="username" class="logininput" type="text">
<input name="password" class="logininput" type="password">
<input name="remember_me" value="true" selected="" class="absmiddle" type="checkbox">
<input id="loginsubmit" class="loginsubmit" src="assets/images/button_login.png" value="Login" alt="Login" onclick="javascript:document.login_form.Ticket.value=gup('ticketID'); document.login_form.Manufacturer.value=gup('manName'); document.login_form.DetailTabNumber.value=gup('partDetailTab'); document.login_form.PartNum.value=gup('partnumber');setTimeout(diableLogin, 1);" type="submit">

как я обрабатываю:
 Браузер.ExecuteJS("document.getElementsByTagName('username')[0].value='"+Логин+"';");
	Браузер.ExecuteJS("document.getElementsByTagName('password')[0].value='"+Пароль+"';");		
	Браузер.ExecuteJS("document.getElementById('remember_me').checked=true;");
	Браузер.ExecuteJS("document.getElementById('loginsubmit').submit();");


Правильно делаю? но не работает =)))




37. sondarium 177 25.10.17 13:01 Сейчас в теме
Сайт требует TLS 1.1 и не хочет работать с TLS 1.0. Как это решить? Подскажите, кто разбирается, пожалуйста.
Transport Layer Security — Протокол защиты транспортного уровня.
38. MsDjuice 114 17.01.18 15:53 Сейчас в теме
В этой разработке есть возможность перейти на страницу и распечатать ее программно? Без открытия диалогов и окон. Спасибо
39. centurion74 36 17.01.18 21:07 Сейчас в теме
(38) печать не реализована, но сам движок это позволяет, можете скачать исходники и дописать по аналогии с другими методами
40. man-trid 01.05.18 12:33 Сейчас в теме
Добрый день,
стоит задача настроить взаимодействие между 1с и контур.фокус.
Основная проблема - авторизоваться в сервисе. Для авторизации на электронный адрес высылается одноразовая ссылка. По ней выполняется обращение к ресурсу auth.kontur.ru с уникальным ключом, после чего происходит редирект на сайт фокус.контур.
Ваша разработка позволяет выполнить программно авторизацию? И в дальнейшем возможность выполнение POST запросов к этому сеансу?
41. centurion74 36 08.05.18 13:58 Сейчас в теме
(40) авторизация по ссылке скорее всего сработает, а насчет пост-запросов-только если средствами Javascript пробовать
42. wild83 26.08.18 17:47 Сейчас в теме
Возникла проблема. При загрузке страницы на одном сайте появляется "выберите ваш город" и дальше загрузке страницы не идет.

Попробовал открыть через Chrome (полная версия), выбрал город, окно больше не появлялось. Однако через компоненту проблема по-прежнему осталась.

Есть ли возможность как-то отобразить визуально окно страницы при работе с компонентой или может есть какой-нибудь другой вариант как обойти всплывающие окна препятствующие загрузке страницы?
Прикрепленные файлы:
43. GoodZone 13 31.01.19 10:34 Сейчас в теме
Так и не получилось зарегистрировать dll, ошибка как в 23. 2 стратмани (последних) потрачены в пустую. Есть рекомендации как мне выполнить регистрацию?
44. centurion74 36 31.01.19 18:37 Сейчас в теме
45. GoodZone 13 05.02.19 06:45 Сейчас в теме
(44) а можете исходники скинуть, стартмани кончились ((. Проект Awesomium теперь Ultralight называется, хочу нативную компоненту написать. Или может занимались таким?
46. centurion74 36 05.02.19 09:23 Сейчас в теме
(45) почту в личку скиньте
47. GoodZone 13 05.02.19 14:05 Сейчас в теме
(46) что-то в личку не уходит сообщение infoСОБАКАbizon22.ru
55. evvid 12.01.22 17:11 Сейчас в теме
(47)
(45)Удалось написать компоненту?
56. GoodZone 13 13.01.22 06:14 Сейчас в теме
(55) к сожалению нет, другим занят был
48. user633364_seleznev.ua 12.03.19 20:05 Сейчас в теме
а впн прикрутить есть какие-то варианты?
52. centurion74 36 28.01.20 13:48 Сейчас в теме
(48) Awesomium закрыт, смысла что-то прикручивать нет
49. пользователь 01.12.19 04:44
Сообщение было скрыто модератором.
...
50. EvilDoc 178 24.01.20 16:35 Сейчас в теме
Не регистрируется компонента.
"Так же убедитесь, что вы не забыли распаковать Awesomium в каталог altbrowser.dll " - не понимаю что это значит. Откуда этот каталог возьмется у меня? Его создать нужно? В каком месте расположжить?
51. centurion74 36 28.01.20 13:47 Сейчас в теме
(50)
Прикрепленные файлы:
53. EvilDoc 178 30.01.20 14:17 Сейчас в теме
(51) А где он, этот каталог? Его создать нужно? В Любом месте?
54. centurion74 36 31.01.20 09:02 Сейчас в теме
(53) это файл, к нему в каталог распаковать
57. senkins 07.12.22 15:14 Сейчас в теме
А сейчас будет работать?
У меня нельзя использовать webkit, и версия предприятия не более8.3.12
58. nickn1659@gmail.com 30 15.03.23 07:11 Сейчас в теме
НЕ РЕГИСТРИРУЕТСЯ regsvr32- win 10 x64
ни с правами админа никак - с одинаковой формулировкой "...
поскольку его паралельная КОНФИГУРАЦИЯ НЕПРАВИЛЬНА..."
автор выложил КУЧКУ Г...НА
59. centurion74 36 02.05.23 14:30 Сейчас в теме
(58) вопрос исключительно в прямизне ваших рук
Прикрепленные файлы:
60. пользователь 30.06.23 15:46
Сообщение было скрыто модератором.
...
Оставьте свое сообщение