// Объявление переменных
ОбрабатываемыеКолонки = Новый Соответствие;
ОбрабатываемыеКолонки.Вставить("Код" , "Код");
ОбрабатываемыеКолонки.Вставить("Единица измерения", "ЕдиницаИзмерения");
ОбрабатываемыеКолонки.Вставить("МКЕИ" , "ЕдиницаИзмеренияКод");
ОбрабатываемыеКолонки.Вставить("Название" , "ПолноеНаименование");
ОбрабатываемыеКолонки.Вставить("Описание" , "Характеристика");
ОбрабатываемыеКолонки.Вставить("Вид" , "ВидНоменклатуры");
СоответствияИменИИндексовКолонок = Новый Соответствие;
НомерСтраницы = 1;
КоличествоСтраниц = 1;
Массив = Новый Массив;
Пока НомерСтраницы <= КоличествоСтраниц Цикл
#Если Клиент Тогда
Состояние("Обработка страницы " + НомерСтраницы + " из " + ?(СоответствияИменИИндексовКолонок.Количество() = 0, "?", КоличествоСтраниц), , "Пожалуйста, подождите...");
#КонецЕсли
// Загрузка веб-страницы
Заголовки = Новый Соответствие;
Заголовки.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36");
// Получим текст страницы данные страницы
ВременныйФайл = ПолучитьИмяВременногоФайла("html");
HTTPСоединение = Новый HTTPСоединение("enstru.skc.kz");
HTTPОтвет = HTTPСоединение.Получить(Новый HTTPЗапрос("/ru/last/?PAGEN_1=" + НомерСтраницы, Заголовки), ВременныйФайл);
Если HTTPОтвет.КодСостояния <> 200 Тогда
ВызватьИсключение HTTPОтвет.КодСостояния;
КонецЕсли;
ЧтениеТекста = Новый ЧтениеТекста(ВременныйФайл);
ТекстСтраницы = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
УдалитьФайлы(ВременныйФайл);
// Чтение HTML страницы
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(ТекстСтраницы);
ПостроительDOM = Новый ПостроительDOM;
ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);
Для Каждого ТаблицаHTML Из ДокументHTML.ПолучитьЭлементыПоИмени("table") Цикл
Если ТаблицаHTML.ИмяКласса = "detail-table" Тогда
Перейти ~ПриступитьКЧтениюТаблицы;
КонецЕсли;
КонецЦикла;
ЧтениеHTML.Закрыть();
Возврат Массив;
~ПриступитьКЧтениюТаблицы:
Если СоответствияИменИИндексовКолонок.Количество() = 0 Тогда
КоличествоСтраниц = СтрЧислоВхождений(ТаблицаHTML.ПредыдущийСоседний.ТекстовоеСодержимое, "|");
#Если Клиент Тогда
Состояние("Обработка страницы " + НомерСтраницы + " из " + ?(СоответствияИменИИндексовКолонок.Количество() = 0, "?", КоличествоСтраниц), , "Пожалуйста, подождите...");
#КонецЕсли
ИндексКолонки = -1;
СтрокаЗаголовка = ТаблицаHTML.ПолучитьЭлементыПоИмени("thead")[0];
Для Каждого ТекКолонка Из СтрокаЗаголовка.ДочерниеУзлы[0].ДочерниеУзлы Цикл
ИндексКолонки = ИндексКолонки + 1;
Если ОбрабатываемыеКолонки[ТекКолонка.ТекстовоеСодержимое] <> Неопределено Тогда
СоответствияИменИИндексовКолонок.Вставить(ОбрабатываемыеКолонки[ТекКолонка.ТекстовоеСодержимое], ИндексКолонки);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ТаблицаДанных = ТаблицаHTML.ПолучитьЭлементыПоИмени("tbody")[0];
Для Каждого ТекСтрока Из ТаблицаДанных.ДочерниеУзлы Цикл
Массив.Добавить(СокрЛП(ТекСтрока.ДочерниеУзлы.Элемент(СоответствияИменИИндексовКолонок["Код"]).ТекстовоеСодержимое));
КонецЦикла;
ЧтениеHTML.Закрыть();
НомерСтраницы = НомерСтраницы + 1;
КонецЦикла; |