// Перекодировка файла из кодировки UTF-8 в ANSI. // Будет создан файл в кодировке ANSI в этом же каталоге // с суффиксом "_ansi" . // параметры: // каталогФайла - Каталог где лежит файл без символа "\" на конце // файлUTF8 - имя файла для конвертации Функция ПерекодироватьФайлUTF8_ANSI(каталогФайла, файлUTF8) исходныйФайл = каталогФайла + "\" + файлUTF8; файлЧтение = Новый ЧтениеТекста(исходныйФайл,КодировкаТекста.UTF8); txt=файлЧтение.Прочитать(); файлЧтение.Закрыть(); ФайлANSI = СтрЗаменить(файлUTF8,".","_ansi."); результатФайл = каталогФайла + "\" + ФайлANSI; файлЗапись = Новый ЗаписьТекста(результатФайл,КодировкаТекста.ANSI); файлЗапись.Записать(txt); файлЗапись.Закрыть(); Возврат ФайлANSI; КонецФункции // Запуск каталогCSV = "d:\csv"; файлCSV = "export_file_.csv"; // в utf-8 файлCSV_ansi = ПерекодироватьФайлUTF8_ANSI(каталогCSV,файлCSV);
//Возвращает Истина - скопирован, иначе Ложь Функция СкопироватьФайл(ИмяФайлаИсточник, ИмяФайлаНазначение, ВыдаватьСообщения = Ложь) Экспорт Попытка ПозицияСимвола = СтрДлина(ИмяФайлаНазначение); Пока ПозицияСимвола >= 1 Цикл Если Сред(ИмяФайлаНазначение, ПозицияСимвола, 1) = "\" Тогда Возврат ПозицияСимвола; КонецЕсли; ПозицияСимвола = ПозицияСимвола - 1; КонецЦикла; КаталогФайла=Сред(ИмяФайлаНазначение, 1, ПозицияСимвола - 1); СоздатьКаталог(КаталогФайла); КопироватьФайл(ИмяФайлаИсточник, ИмяФайлаНазначение); Исключение Сообщение = "Ошибка при копировании: " + ОписаниеОшибки() + " (источник: " + ИмяФайлаИсточник + "; приемник: " + ИмяФайлаНазначение + ")"; Если ВыдаватьСообщения Тогда Сообщить(Сообщение); КонецЕсли; Предупреждение(Сообщение); Возврат Ложь; КонецПопытки; Возврат Истина; КонецФункции
// ПутьКФайлу – Строка – путь к файлу. // // Возвращаемое значение: // Строка – каталог файла // Функция ПолучитьКаталогФайла(Знач ПутьКФайлу) Экспорт ПозицияСимвола = СтрДлина(ПутьКФайлу); Пока ПозицияСимвола >= 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; КонецФункции