3
IronDemon
05.02.08
✎
12:47
|
Функция ПолучитьИмяФайла(ИмяКаталога, ИмяФайла) Экспорт
Возврат ИмяКаталога + ?(ПустаяСтрока(ИмяФайла), "", "\" + ИмяФайла);
КонецФункции // ПолучитьИмяФайла()
Функция СохранитьФайлНаДиске(Хранилище, ИмяФайла, ТолькоЧтение, СпособПерезаписи, ВопросОПерезаписи = Истина, ИмяСправочника = "ХранилищеДополнительнойИнформации") Экспорт
Попытка
ФайлНаДиске = Новый Файл(ИмяФайла);
КаталогНаДиске = Новый Файл(ФайлНаДиске.Путь);
Если Не КаталогНаДиске.Существует() Тогда
СоздатьКаталог(ФайлНаДиске.Путь);
КонецЕсли;
Если ТипЗнч(Хранилище) <> Тип("ДвоичныеДанные") Тогда
ДвоичныеДанные = Хранилище.Получить();
Иначе
ДвоичныеДанные = Хранилище;
КонецЕсли;
ДвоичныеДанные.Записать(ИмяФайла);
ФайлНаДиске.УстановитьТолькоЧтение(ТолькоЧтение);
Исключение
Предупреждение(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецФункции // СохранитьФайлНаДиске()
Процедура КнопкаВыполнитьНажатие(Кнопка)
Если Объект = Неопределено Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ХранилищеДополнительнойИнформации.Ссылка
|ИЗ
| Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
|ГДЕ
| ХранилищеДополнительнойИнформации.Объект В ИЕРАРХИИ(&Объект)";
Запрос.УстановитьПараметр("Объект", Объект);
РезультатЗапроса = Запрос.Выполнить();
СоединениеВнешнегоХранилища = ВыполнитьFTPПодключениеКСерверуВнешнегоХранилища();
КаталогХранения = ПолучитьКаталогХранения(Объект);
мПутьВнешнегоХранилища = КаталогХранения;
ИмяКаталога = ПолучитьИмяКаталога(глТекущийПользователь);
мСписокОткрытыхФайлов = Новый СписокЗначений;
ТолькоЧтение = Ложь;
СпособПерезаписи = "";
Сч=1;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Ссылка=Выборка.Ссылка;
Если ПустаяСтрока(Ссылка.ИмяФайла) Тогда
Продолжить;
КонецЕсли;
СпрОбъект = Ссылка.ПолучитьОбъект();
Если СпрОбъект.Хранилище.Получить() = Неопределено Тогда
Сообщить("Пропускаем "+Ссылка);
Продолжить;
КонецЕсли;
Сообщить("Сохраняем "+Ссылка);
ИмяФайла = ПолучитьИмяФайла(ИмяКаталога, Ссылка.ИмяФайла);
СохранитьФайлНаДиске(СпрОбъект.Хранилище, ИмяФайла, Ложь, СпособПерезаписи, Ложь);
мСписокОткрытыхФайлов.Добавить(ИмяФайла);
ВнешнееИмяФайла = ПолучитьВнешнееИмяФайла(СпрОбъект.Объект, ИмяФайла);
КонецЦикла;
Сообщить("Закончил");
КонецПроцедуры
|
|