gifts2017

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

Опубликовал Денис Вовк (CyberWo1f) в раздел Обмен - Интеграция с 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
12
.epf 1.0 11,30Kb 12 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

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

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