Проверка актуальных релизов (Платформа 8.2.18)

Обмен - Интеграция с WEB

Простая обработка для парсинга актуальных обновлений с сайта 1с. Код выложен для обычной формы. В обработке присутствует также Управляемая форма. Писалась просто для себя. Может быть использована для дальнейшей доработки своих решений =)

Как выяснилось httpЗапрос появился в версии платформы 8.2.18, будьте бдительны

Функция РазложитьДатуОбновления(СтрокаДаты)

Год = Сред(СтрокаДаты, 7, 4);
Месяц = Сред(СтрокаДаты, 4, 2);
День = Лев(СтрокаДаты, 2);

Часы = Сред(СтрокаДаты, 12, 2);
Минуты = Прав(СтрокаДаты, 2);

Возврат Дата(Год + Месяц + День + Часы + Минуты + "00");

КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
Дерево.Строки.Очистить();

АдресСервера = "downloads.1c.ru";
АдресСТранички = "/release_info/categ_js.jsp?GroupID=88";

Соединение = Новый HTTPСоединение(АдресСервера);

Запрос = Новый HTTPЗапрос;
Запрос.АдресРесурса = АдресСТранички;

Ответ = Соединение.Получить(Запрос);
Тело = Ответ.ПолучитьТелоКакСтроку();
Тело = СтрЗаменить(Тело, "document.write('", "");
Тело = СтрЗаменить(Тело, "');", "");
Тело = СтрЗаменить(Тело, Символы.ПС, "");

ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(Тело);

ПостроительDOM = Новый ПостроительDOM;
ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);

ЭлементыDOM = ДокументHTML.ПолучитьЭлементыПоИмени("tr");

Для каждого ЭлементDOM Из ЭлементыDOM Цикл
ДочерниеУзлы = ЭлементDOM.ПолучитьЭлементыПоИмени("td");
Если ДочерниеУзлы.Количество()= 0 Тогда
Продолжить;
КонецЕсли;

Если ДочерниеУзлы.Количество()= 1 Тогда
Корень = Дерево.Строки.Добавить();
Корень.Конфигурация = ЭлементDOM.ТекстовоеСодержимое;
КОрень.НедавноОбновлено = Ложь;
ИначеЕсли ДочерниеУзлы.Количество()= 3 Тогда
ЕщеДочерниеУзлы = ДочерниеУзлы[0].ПолучитьЭлементыПоИмени("span");
ВетвьКорня = Корень.Строки.Добавить();
Если ЕщеДочерниеУзлы[0].ИмяКласса = "new" Тогда
ВетвьКорня.НедавноОбновлено = Истина;
Корень.НедавноОбновлено = Истина;
Иначе
ВетвьКорня.НедавноОбновлено = Ложь;

КонецЕсли;

ВетвьКорня.Конфигурация = ДочерниеУзлы[1].ТекстовоеСодержимое;
ВетвьКорня.ДатаОбновления = РазложитьДатуОбновления(ДочерниеУзлы[0].ТекстовоеСодержимое);
ВетвьКорня.НомерРелиза = ДочерниеУзлы[2].ТекстовоеСодержимое;
КонецЕсли;
КонецЦикла;
ЭлементыФормы.Дерево.СоздатьКолонки();
ЭлементыФОрмы.Дерево.Колонки.НедавноОбновлено.Видимость = Ложь;
КонецПроцедуры

Процедура ДеревоПриПолученииДанных(Элемент, ОформленияСтрок)
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
Если ОформлениеСтроки.ДанныеСтроки.НедавноОбновлено Тогда
ОформлениеСтроки.ЦветФона = Новый Цвет(255, 50, 50);
КонецЕсли;
КонецЦикла;

КонецПроцедуры

Дерево.Колонки.Добавить("Конфигурация", Новый ОписаниеТипов("Строка"));
Дерево.Колонки.Добавить("НедавноОбновлено");

Дерево.Колонки.Добавить("ДатаОбновления");
Дерево.Колонки.Добавить("НомерРелиза", Новый ОписаниеТипов("Строка"));

Скачать файлы

Наименование Файл Версия Размер
Проверка актуальных обновлений
.epf 11,30Kb
17.04.14
13
.epf 1.0 11,30Kb 13 Скачать

См. также

Комментарии
1. Олег Каратаев (Kyrales) 118 18.04.14 05:10 Сейчас в теме
При нажатии на кнопку "Получить обновления":

{Форма.ФормаУпр.Форма(28)}: Ошибка при вызове метода контекста (Получить)
Ответ = Соединение.Получить(Запрос);
по причине:
Ошибка работы с Интернет: Не могу установить соединение
2. Денис Вовк (CyberWo1f) 5 18.04.14 06:54 Сейчас в теме
Возможно у вас интернет через прокси. Там надо в соединении прописать настройки прокси.

Прокси = Новый ИнтернетПрокси(Истина);
Прокси.Пользователь = "user";
Прокси.Пароль = "123";
Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = Ложь;
Соединение = Новый HTTPСоединение(АдресСервера,,,,Прокси)

Попробуйте так
3. Андрей Акулов (DrAku1a) 1201 18.04.14 08:32 Сейчас в теме
4. Денис Вовк (CyberWo1f) 5 18.04.14 08:37 Сейчас в теме
Я беру обновления с открытого источника. А там вроде как нужен логи и пароль для входа
5. Саша Безымяный (help1Ckr) 23.04.14 10:59 Сейчас в теме
Спасибо за выложенный код.
6. Денис Вовк (CyberWo1f) 5 23.04.14 13:27 Сейчас в теме
(5) help1Ckr, Да не за что =) Я Его выложил, потому что обработка достаточно простая =) Скачать могут те, у кого денег много, а у кого нет, можете скопировать код
Оставьте свое сообщение