|
|
|
Есть документ html.. как его разобрать и загрузить в 1с 7.7 | ☑ | ||
|---|---|---|---|---|
|
0
belarus
12.05.09
✎
12:02
|
Есть документ html.. как его разобрать и загрузить в 1с 7.7... дайте ссылочку где почитать плз... или че неть для примера
|
|||
|
1
povar
12.05.09
✎
12:03
|
разбирай его как текст
|
|||
|
2
povar
12.05.09
✎
12:03
|
да и что значит "загрузить в 1С" ?
|
|||
|
3
Нуф-Нуф
12.05.09
✎
12:03
|
тхт = СоздатьОбъект("Текст");
|
|||
|
4
TitanLuchs
12.05.09
✎
12:05
|
(0) Открывай его из 1С в IE, получай доступ к объекту "document", а у этого объекта куча свойств: доступ к тексту, ко всем картинкам, колллекции ссылок и т.д.
|
|||
|
5
skunk
12.05.09
✎
12:05
|
||||
|
6
belarus
12.05.09
✎
12:05
|
мтс дает детализацию звонков.... в формате html... вот и нужно ее загрузить в 1с.... никогда с html через 1с не работал
|
|||
|
7
Шахид
12.05.09
✎
13:31
|
Псмотри пример
я загружал курсы валют банков города Оренбург сначала я сохранил страницу в виде html потом находил свою таблицу и разбирал ее Процедура ЗагрузитьКурс(Пар=0) Экспорт //проверим курс за сегодня Док=СоздатьОбъект("Документ.Курс"); Док.УстановитьФильтр(1,0); Если Док.ВыбратьДокументы(ТекущаяДата(),ТекущаяДата())=1 Тогда Возврат; КонецЕсли; //загрузим файл URL ="http://orenburg.ratiss.org/Courses.aspx"; ИмяФ=КаталогИБ()+"kurs\"+СтрЗаменить(Строка(ТекущаяДата()),".","-")+" "+".html"; Если ЗагрузитьВнешнююКомпоненту("v7plus.dll") <> 1 Тогда Если Пар=0 Тогда Сообщить("Компонента v7plus.dll не найдена!"); Сообщить("курсы не загружены!"); КонецЕсли; Возврат; КонецЕсли; HTTPСоединение=СоздатьОбъект("AddIn.V7HttpReader"); Попытка HTTPСоединение.ПолучитьКакФайл(URL,ИмяФ); Исключение Если Пар=0 Тогда Сообщить(HTTPСоединение.СтрокаСостоянияОтвета); Сообщить("Курсы не загружены!"); КонецЕсли; Возврат; КонецПопытки; HTTPСоединение=0; //проверим дату курса ФТекс=СоздатьОбъект("Текст"); ФТекс.Открыть(ИмяФ); КС=ФТекс.КоличествоСтрок(); ФЛ=0; ТекСтр=""; Для Перем1=1 По КС Цикл ТекСтр=ФТекс.Получитьстроку(Перем1); Если Найти(ТекСтр,"Курсы валют, пункты обмена (")<>0 Тогда ФЛ=1; Перем1=Найти(ТекСтр,"Курсы валют, пункты обмена ("); ТекСтр=Сред(ТекСтр,Перем1+28); Перем1=Найти(ТекСтр,")"); ТекСтр=Лев(ТекСтр,Перем1-1); //разберем дату //дата и месяц отделены пробелами //будем их поочереди "выкусывать" //1. дата Перем1=Найти(ТекСтр," "); Д=Число(Лев(ТекСтр,Перем1-1)); ТекСтр=Сред(ТекСтр,Перем1+1); //2.месяц Перем1=Найти(ТекСтр," "); М=Лев(ТекСтр,Перем1-1); Если М="января" Тогда М=1; ИначеЕсли М="февраля" Тогда М=2; ИначеЕсли М="марта" Тогда М=3; ИначеЕсли М="апреля" Тогда М=4; ИначеЕсли М="мая" Тогда М=5; ИначеЕсли М="июня" Тогда М=6; ИначеЕсли М="июля" Тогда М=7; ИначеЕсли М="августа" Тогда М=8; ИначеЕсли М="сентября" Тогда М=9; ИначеЕсли М="октября" Тогда М=10; ИначеЕсли М="ноября" Тогда М=11; ИначеЕсли М="декабря" Тогда М=12; КонецЕсли; ТекСтр=Сред(ТекСтр,Перем1+1); //3. оставшееся год Г=Число(ТекСтр); ДатаПР=Дата(Г,М,Д); //проверим курс за дату //проверим если курс на сегодня Док=СоздатьОбъект("Документ.Курс"); Док.УстановитьФильтр(1,0); Если Док.ВыбратьДокументы(ДатаПР,ДатаПР)=1 Тогда Если Пар=0 Тогда Сообщить("Курс за "+Строка(ДатаПР)+" уже загружен!"); КонецЕсли; Возврат; КонецЕсли; Прервать; КонецЕсли; КонецЦикла; Если ФЛ=0 Тогда Если Пар=0 Тогда Сообщить("Изменился формат таблицы:не найдет строка таблицы"); КонецЕсли; возврат; КонецЕсли; //разоберем //1. найдем шапку таблицу ФЛ=0; ТекСтр=""; Для Перем1=1 По КС Цикл ТекСтр=ФТекс.Получитьстроку(Перем1); Если Найти(ТекСтр,"<th scope=""col""><font color=""White"">Название банка</font></th><th scope=""col""><font color=""White"">USD покупка</font></th><th scope=""col""><font color=""White"">USD продажа</font></th><th scope=""col""><font color=""White"">EUR покупка</font></th><th scope=""col""><font color=""White"">EUR продажа</font></th>")<>0 Тогда ФЛ=1; Перем1=Перем1+3; прервать; КонецЕсли; КонецЦикла; Если ФЛ=0 Тогда Если Пар=0 Тогда Сообщить("Изменился формат таблицы:не найдет строка таблицы"); КонецЕсли; возврат; КонецЕсли; ТабКурс=СоздатьОбъект("ТаблицаЗначений"); ТабКурс.НоваяКолонка("ИмяБ"); ТабКурс.НоваяКолонка("ИмяВ"); ТабКурс.НоваяКолонка("Курс1","Число",15,2); ТабКурс.НоваяКолонка("Курс2","Число",15,2); ТабКурс.НоваяКолонка("Курс3","Число",15,2); ТабКурс.НоваяКолонка("Курс4","Число",15,2); //шапка найдена ТекСтр=ФТекс.Получитьстроку(Перем1); Пока Найти(ТекСтр,"</div>")=0 Цикл //получим имя Имя=ФТекс.Получитьстроку(Перем1); //пропуск Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); Пока Найти(ТекСтр,"</td>")=0 Цикл Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); КонецЦикла; //курс1 Перем1=Перем1+1; Курс1 =ФТекс.Получитьстроку(Перем1); //пропуск Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); Пока Найти(ТекСтр,"</td>")=0 Цикл Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); КонецЦикла; //курс2 Перем1=Перем1+1; Курс2 =ФТекс.Получитьстроку(Перем1); //пропуск Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); Пока Найти(ТекСтр,"</td>")=0 Цикл Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); КонецЦикла; //курс3 Перем1=Перем1+1; Курс3 =ФТекс.Получитьстроку(Перем1); //пропуск Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); Пока Найти(ТекСтр,"</td>")=0 Цикл Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); КонецЦикла; //курс4 Перем1=Перем1+1; Курс4 =ФТекс.Получитьстроку(Перем1); //пропуск Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); Пока Найти(ТекСтр,"</td>")=0 Цикл Перем1=Перем1+1; ТекСтр=ФТекс.Получитьстроку(Перем1); КонецЦикла; ТабКурс.НоваяСтрока(); ТабКурс.ИмяБ =Имя; ТабКурс.Курс1=Число(Курс1); ТабКурс.Курс2=Число(Курс2); ТабКурс.Курс3=Число(Курс3); ТабКурс.Курс4=Число(Курс4); //перейдем на следующую строку Перем1=Перем1+3; ТекСтр=ФТекс.Получитьстроку(Перем1); КонецЦикла; //таблица получена СпрВал=СоздатьОбъект("Справочник.Валюты"); СпрБк =СоздатьОбъект("Справочник.Банк"); СпрВал.НайтиПоКоду("840"); Вал1=СпрВал.ТекущийЭлемент(); СпрВал.НайтиПоКоду("978"); Вал2=СпрВал.ТекущийЭлемент(); Док.Новый(); Док.ДатаДок=ДатаПР; ТабКурс.Выбратьстроки(); Пока ТабКурс.ПолучитьСтроку()=1 Цикл //найдем банк Если СпрБк.НайтиПоНаименованию(СокрЛП(ТабКурс.ИмяБ),0,1)=0 Тогда //новый банк Сообщить(СокрЛП(ТабКурс.ИмяБ)); СпрБк.Новый(); СпрБк.Наименование=СокрЛП(ТабКурс.ИмяБ); СпрБк.Записать(); Бк=СпрБк.ТекущийЭлемент(); Иначе Бк=СпрБк.ТекущийЭлемент(); КонецЕсли; //создадим строки Док.Новаястрока(); Док.Банк =Бк; Док.Валюта =Вал1; Док.Покупка=ТабКурс.Курс1; Док.Продажа=ТабКурс.Курс2; Док.Новаястрока(); Док.Банк =Бк; Док.Валюта =Вал2; Док.Покупка=ТабКурс.Курс3; Док.Продажа=ТабКурс.Курс4; КонецЦикла; Док.Записать(); Док.Провести(); Если Пар=0 Тогда Сообщить("Курсы получены и сохранены!"); КонецЕсли; //загрузим курс ЦБ Конт=СоздатьОбъект("СписокЗначений"); Конт.ДобавитьЗначение(1,"Автоматически"); ОткрытьФорму("Отчет.ИППКурсыВалютРБК",Конт); КонецПроцедуры |
|||
|
8
FN
12.05.09
✎
13:37
|
Самый просто и быстрый способ - через ОЛЕ открываешь Ексель - там открываешь свой хтмл - дальше по ОЛЕ перекидываешь лист в ТЗ...
|
|||
|
9
FN
12.05.09
✎
13:44
|
Либо так:
Функция ПолучитьТаблицуСоСтраницы(номерТаблицы=0) ТЗ=СоздатьОбъект("ТаблицаЗначений"); //для значений //Попытка ТаблицаСДанными=IE.Document.getElementsByTagName("table").item(номерТаблицы); ВсегоСтрок=ТаблицаСДанными.rows().Length()-1; Для х=1 по ВсегоСтрок Цикл СтолбцовВстроке=ТаблицаСДанными.rows(х).Cells().Length()-1; Для ш=ТЗ.КоличествоКолонок()/2 по СтолбцовВстроке Цикл ТЗ.НоваяКолонка("Текст"+ш); ТЗ.НоваяКолонка("ХТМЛ"+ш); КонецЦикла; ТЗ.НоваяСтрока(); ПоследняяСтрокаТЗ=ТЗ.КоличествоСтрок(); Для ш=0 по СтолбцовВстроке Цикл ТЗ.УстановитьЗначение(ПоследняяСтрокаТЗ,"Текст"+ш,ТаблицаСДанными.rows(х).Cells(ш).outerText); ТЗ.УстановитьЗначение(ПоследняяСтрокаТЗ,"ХТМЛ"+ш,ТаблицаСДанными.rows(х).Cells(ш).innerHtml); КонецЦикла; КонецЦикла; //Исключение //Сообщить("Ошибка при получении данных! "+ОписаниеОшибки()); //КонецПопытки; Возврат ТЗ; КонецФункции Процедура Сформировать() IE=СоздатьОбъект("InternetExplorer.Application"); IE.Navigate("http://...."); Пока (IE.readyState<4) или (IE.Busy=-1) Цикл Состояние("Получение страницы...");КонецЦикла; ТЗ=ПолучитьТаблицуСоСтраницы(0); - тут опытным путем подбери номер от 0 и выше... |
|||
|
10
Шахид
12.05.09
✎
14:21
|
9 Красиво
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |