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

Простая обработка для парсинга актуальных обновлений с сайта 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);
КонецЕсли;
КонецЦикла;

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

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

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

6 Comments

  1. Kyrales

    При нажатии на кнопку «Получить обновления»:

    {Форма.ФормаУпр.Форма(28)}: Ошибка при вызове метода контекста (Получить)

    Ответ = Соединение.Получить(Запрос);

    по причине:

    Ошибка работы с Интернет: Не могу установить соединение

    Reply
  2. CyberWo1f

    Возможно у вас интернет через прокси. Там надо в соединении прописать настройки прокси.

    Прокси = Новый ИнтернетПрокси(Истина);

    Прокси.Пользователь = «user»;

    Прокси.Пароль = «123»;

    Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = Ложь;

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

    Попробуйте так

    Reply
  3. DrAku1a
  4. CyberWo1f

    Я беру обновления с открытого источника. А там вроде как нужен логи и пароль для входа

    Reply
  5. help1Ckr

    Спасибо за выложенный код.

    Reply
  6. CyberWo1f

    (5) help1Ckr, Да не за что =) Я Его выложил, потому что обработка достаточно простая =) Скачать могут те, у кого денег много, а у кого нет, можете скопировать код

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *