Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Word, Web (http://forums.kuban.ru/f1040/word_web-7556233.html)

USSR 25.02.2016 11:56

Word, Web
 
Коллеги, может кто сталкивался. Как по OLE Word-ом
открыть HTML-ссылку. Если сохраняю как автономную страницу, то все работает и извдекаю из файла все что нужно. Но хотелось бы обойтись без сохранения автономной страницы, тем более пока не знаю как это сделать из 1С 7.7, располагая лишь ссылкой. Если что, сильно не ругайте )

user1C 25.02.2016 12:01

"[em]Как по OLE Word-ом открыть HTML-ссылку[/em]"
э-э-ээ... зачем?

USSR 25.02.2016 12:05

(1)по ссылке открывается страница в которой данные тендера, их надо прочесть.

user1C 25.02.2016 12:25

(2)
а ворд зачем?)
погугли СоздатьОбъект("WinHttp.WinHttpRequest.5.1")

USSR 25.02.2016 12:37

(3)спасибо, посмотрю, просто не знал. И сначала заказчик давал Word файл, вот мозги и зашорились. Но боюсь, что в твоем WinHttp все не так просто, у заказчика на этой странице по сути печатная форма, которая с маленькими нюансами прекрасно кушается Вордом, а тут как я логически свяжу данные этой печатной формы. А вообще сайт госзакупок делался уродами

DeiMos 27.02.2016 03:31

4-USSR > Не уродами он делался.
А очень квалифицированными программистами.

С целью максимально затруднить парсинг его.
Регулярно (хоть раз в неделю) могут менять АПИ, формат и вообще все-все-все...

С целью - чтобы все труды топикстартера были выкинуты на свалку.

Лично мой табачный ларек, в котором я сейчас работаю, - именно так и поступает.

USSR 28.02.2016 06:12

Короче, коллеги, забудем тот бред, который я писал выше. Это классический пример ситуации, когда быстро и успешно решенная локальная задачка (извлечение нужных параметров закупки из УЖЕ имеющегося Word файла) при дальнейшем развитии потребовала других подходов, а мозги остались в старой логике. Продолжать решать задачу старым инструментом стало неправильно, вплоть до смеха известных кур в столице.
Так вот, постановка становится по всей видимости классической, но у меня нет опыта работы с сайтами, поэтому требуется совет знающего человека. В инете покопался, можно утонуть, и не хотелось бы вооружаться всеми существующими инструментами, пусть там работают свои спецы, надо решить хоть и новую, но все-таки опять локальную задачу.
Есть вся переписанная торговля и склад 7.7. В ней ведется учет тендерных заказов. Что сейчас надо.
Есть некая страница конкретной закупки:
[url]http://new.zakupki.gov.ru/epz/order/notice/ea44/view/common-info.html?regNumber=0338200009916000074[/url]
Из нее мы можем получить извещение (это по сути печатная форма, которую я в ворде и разбирал):
[url]http://new.zakupki.gov.ru/epz/order/notice/printForm/view.html?printFormId=21309075[/url]
и что еще нужнее - реквизиты заказчика (тоже в виде простой таблички):
[url]http://zakupki.gov.ru/pgz/public/action/organization/view?source=epz&organizationCode=03382000099&source=epz[/url]
Хотелось бы скачать страничку закупки в локальный файл, превратить его в строку(это все умею, хотя может и неоптимально, но файлы маленькие, скорее всего эффективность некртична), пропарсить эту страничку закупки, получить ссылки на извещение и на реквизиты заказчика, затем пропарсить их и получить параметры закупки и реквизиты клиента. Инструментов парсинга вагон и тележка. Кто решал подобную задачу с учетом структуры данных. Что выбрать с учетом 7.7 и с учетом конкретной структуры html страниц. Снова не пинайте, если что не так

USSR 28.02.2016 10:28

Обсуждаемые страницы в кодировке UTF-8. Пытаюсь читать как тестовый файл с помощью FSO, перепробовал все кодировки при открытии файла, выходит все равно ерунда )

USSR 28.02.2016 13:57

Преобразовал с помощью утилиты от Ромикса в 1251 страницу, все прекрасно прочиталось, обе странички (извещение и реквизиты) сумел самопально разобрать, читая как текстовый файл и выделяя необходимые теги. Сейчас еще надо понять как формируются ссылки на извещение и на реквизиты

Струнин 28.02.2016 20:01

Кто-то из уважаемых тут выкладывал...
Может вот так как-то?

Процедура ПрочитатьДив(DIV)

Для j=0 по DIV.length-1 Цикл

A = DIV.item(j);

nodeType = A.nodeType;
Если nodeType = 3 Тогда Продолжить КонецЕсли;
tagName = A.tagName;
Если врег(tagName) <> "DIV" Тогда Продолжить КонецЕсли;
innerText = A.innerText;
innerHTML = A.innerHTML;
Если Найти(innerHTML,"Извещение о проведении электронного аукциона") > 0 Тогда
НачСсылки = Найти(innerHTML,"href=""");
стрСсылка = Сред(innerHTML, НачСсылки + 6);
КонСсылки = Найти(стрСсылка,"""");
стрСсылка = Лев(стрСсылка, КонСсылки - 1);
Сообщить(" == " + СокрЛП(стрСсылка));
//Сообщить(" == " + Лев(СокрЛП(innerText),250));
КонецЕсли;

ПрочитатьДив(A.ChildNodes);
КонецЦикла;

КонецПроцедуры // ПрочитатьДив()

//*******************************************
Процедура Сформировать()
Попытка
objIE = СоздатьОбъект("InternetExplorer.Application");
objIE.Visible = 0;
objIE.Silent = 0;
objIE.offline = 0;
objIE.Navigate(Адрес);
Пока objIE.readyState < 4 Цикл // Ждем пока она загрузится
Состояние("Ждем выполнения запроса...");
КонецЦикла;
Док=objIE.document;
Стр = Док.Body.innerText; // строку в файл
Childs = Док.getElementsByTagName("Body").item(0).ChildNodes;
Для i=0 по Childs.length-1 Цикл
ПрочитатьДив(Childs);
КонецЦикла;
Исключение
Предупреждение("Ошибка доступа к сайту " + Адрес);
Возврат;
КонецПопытки;
Док = "";
objIE.Quit();
objIE = 0;
КонецПроцедуры

USSR 29.02.2016 02:29

(9)Спасибо, c извещением разобрался, все ок. Обошелся простым чтением c помощью FSO. Осталось добить ссылку на реквизиты заказчика. Тут что-то пока не врублюсь

USSR 29.02.2016 05:58

ссылку с реквизитами клиента тоже вроде победил
Еще бы освоить запрос к поисковой системе сайта,чтобы найти страницу закупки по ее номеру. Что-то пока не могу найти как это делается. Подтолкните в нужную сторону, дальше сам пойду ))

Струнин 29.02.2016 06:17

Извиняюсь
торможу
там проще намного.

Вот ссылка на заказчика

Процедура ПрочитатьТэги(Тэг = "")
Попытка
objIE = СоздатьОбъект("InternetExplorer.Application");
objIE.Visible = 0;
objIE.Silent = 0;
objIE.offline = 0;
objIE.Navigate(Адрес);
Пока objIE.readyState < 4 Цикл // Ждем пока она загрузится
Состояние("Ждем выполнения запроса...");
КонецЦикла;
Док=objIE.document;
Узлы = Док.getElementsByTagName("td");
Для к=0 По Узлы.length-1 Цикл
УзелЗаказа = Узлы.item(к);
ТекстУзла = УзелЗаказа.innerText;
Если ТекстУзла = "Размещение осуществляет" Тогда
Сообщить(ТекстУзла);
Сообщить("=========");
// узел заказа - следующий td после этого td
УзелЗаказа = Узлы.item(к + 1);
Прервать;
КонецЕсли;
КонецЦикла;
УзлыСсылок = Док.getElementsByTagName("a");
Для к=0 По УзлыСсылок.length-1 Цикл
УзелСсылки = УзлыСсылок.item(к);
УзелЗаказчика = УзелСсылки.ParentNode;
ИмяЗаказчика = УзелСсылки.innerText;
Если УзелЗаказа.innerText = УзелЗаказчика.innerText Тогда
СсылкаНаЗаказчика = УзелСсылки.href;
ТекстЗаказчик = УзелЗаказчика.innerText;
Сообщить(ТекстЗаказчик);
Сообщить("=========");
Сообщить(СсылкаНаЗаказчика);
КонецЕсли;
КонецЦикла;
Исключение
Предупреждение("Ошибка доступа к сайту " + Адрес);
Возврат;
КонецПопытки;
Док = "";
objIE.Quit();
objIE = 0;
КонецПроцедуры

результат:
Размещение осуществляет
=========
Заказчик
КРАЕВОЕ ГОСУДАРСТ...
=========
[url]http://new.zakupki.gov.ru/controls/public/action/organization/view?source=epz&organizationCode=03382000099[/url]

Струнин 29.02.2016 06:27

(11) а так нельзя?

Адрес = "http://new.zakupki.gov.ru/epz/order/notice/ea44/view/common-info.html?regNumber=" + НомерЗакупки

...
objIE.Navigate(Адрес);


Текущее время: 04:20. Часовой пояс GMT +3.