// ПутьКФайлу – Строка – путь к файлу. // // Возвращаемое значение: // Строка – каталог файла // Функция ПолучитьКаталогФайла(Знач ПутьКФайлу) Экспорт ПозицияСимвола = СтрДлина(ПутьКФайлу); Пока ПозицияСимвола >= 1 Цикл Если Сред(ПутьКФайлу, ПозицияСимвола, 1) = "\" Тогда Возврат ПозицияСимвола; КонецЕсли; ПозицияСимвола = ПозицияСимвола - 1; КонецЦикла; Если ПозицияСимвола > 1 Тогда Возврат Сред(ПутьКФайлу, 1, ПозицияСимвола - 1); Иначе Возврат ""; КонецЕсли; КонецФункции
// Параметры: // Адрес - адрес файла на сервере // ЛокальныйПуть - путь для сохранения файла на локальном компьютере // ВыдаватьСообщения - признак необходимости выдачи сообщений в случае ошибки // (необязательный, по умолчаню равен Истина) // // Возвращаемое значение: // Число - результат получения файла с сервера // 0 - успешно; // 1 - неправильный параметр // 2 - неправильные код пользователя или пароль для доступа к "закрытой" части сайта // 3 - ошибка подключения к веб-сайту. // Функция ПолучитьФайлССервера(Знач Адрес, Знач ЛокальныйПуть, Знач ВыдаватьСообщения = Истина, Знач Соединение = Неопределено) Экспорт Если НЕ ЗначениеЗаполнено(Адрес) ИЛИ НЕ ЗначениеЗаполнено(ЛокальныйПуть) Тогда ЗаписатьОшибку("Невозможно подключиться к сети Интернет: не инициализированы внутренние переменные."); Возврат 1; КонецЕсли; Если Соединение = Неопределено Тогда // Установка параметров прокси-сервера Если ПроксиСерверТребуетАутентификации Тогда ПроксиСервер = Новый ИнтернетПрокси(); ПроксиСервер.Пользователь = ПользовательПроксиСервера; ПроксиСервер.Пароль = ПарольПроксиСервера; КонецЕсли; // Создание HTTP-соединения с сервером обновлений Соединение = Новый HTTPСоединение(СерверОбновлений, , КодПользователяСервераОбновлений, ПарольСервераОбновлений, ?(ПроксиСерверТребуетАутентификации, ПроксиСервер, Неопределено)); КонецЕсли; Попытка СоздатьКаталог(ПолучитьКаталогФайла(ЛокальныйПуть)); Соединение.Получить(Адрес, ЛокальныйПуть); Исключение // "Ошибка аутентификации при доступе Адресу" ОписаниеОшибки = ОписаниеОшибки(); Если Найти(ОписаниеОшибки, Адрес) > 0 И НЕ Найти(ОписаниеОшибки, "не обнаружен") Тогда ЗаписатьПредупреждение("Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + " |" + ОписаниеОшибки); Если ВыдаватьСообщения Тогда ОбщегоНазначения.ПредупреждениеОбОшибке("Неправильно указан код пользователя или пароль."); КонецЕсли; Возврат 2; КонецЕсли; // Файл не обнаружен Если Найти(ОписаниеОшибки, "не обнаружен") Тогда Сообщение = "Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + " |" + ОписаниеОшибки; ЗаписатьПредупреждение("Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + " |" + ОписаниеОшибки); Если ВыдаватьСообщения Тогда ОбщегоНазначения.СообщитьОбОшибке(Сообщение); КонецЕсли; Возврат 3; КонецЕсли; // Ошибка работы с Интернет: a timeout was reached Сообщение = "Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + " |" + ОписаниеОшибки; ЗаписатьПредупреждение(Сообщение); Если ВыдаватьСообщения Тогда ОбщегоНазначения.СообщитьОбОшибке(Сообщение); КонецЕсли; Возврат 3; КонецПопытки; ЗаписатьИнформацию("Файл успешно получен (адрес: http://" + Соединение.Сервер + "/" + Адрес + "; локальный файл: " + ЛокальныйПуть + ")."); Возврат 0; КонецФункции