PDA

Просмотр полной версии : Сохранение файлов



sun_simon
03.03.2020, 08:20
Добрый день!!! Изменил код, чтобы можно было указать самим путь, диалог выбора нормально работает, но как теперь изменить функцию, чтоб я мог сам указать путь для сохранения?(сейчас там путь указан в константе)

Процедура ДействияФормыСохранитьИЗа крытьДляВыгрузки(Кнопка)

Для Каждого ТекСтрока Из ТЗ Цикл

Если НЕ ТекСтрока.Загрузить Тогда
Продолжить;
КонецЕсли;

НачатьТранзакцию();

Отказ = Ложь;

ПолученныйФайл = Новый Файл(ТекСтрока.ПутьКФайлу);
Если Не ПолученныйФайл.Существует( ) Тогда
Сообщить("Файл " + ПолученныйФайл.ПолноеИмя + " не найден!",СтатусСообщения.Важное);
Предупреждение("Файл " + ПолученныйФайл.ПолноеИмя +" не найден!");
Отказ = Истина;
Продолжить;
КонецЕсли;

ИмяФайла = ?(ЗначениеЗаполнено(ТекСтр� �ка.ИмяФайла),ТекСтрока.Имя� �айла,ПолучитьИмяФайла());
Представление = ТекСтрока.Представление;
Расширение = ТекСтрока.Расширение;
РазмерФайла = ТекСтрока.Размер;

Если Не Отказ Тогда
Попытка
ИсходныйПутьКФайлу = ПолученныйФайл.ПолноеИмя;
НовыйПутьКФайлу = ПолныйПутьХраненияДляВыгр узки(ИмяФайла, Расширение);
Если ИсходныйПутьКФайлу <> НовыйПутьКФайлу Тогда
//СлужебныйКаталогЗагрузки=� �правочники.ЭР_Константы.Ос новнойКаталогФайловЗагруз ка.Значение;
//Если ЗначениеЗаполнено(Служебн� �йКаталогЗагрузки)
// И ТипЗнч(СлужебныйКаталогЗа� �рузки)=Тип("Строка")
// И НЕ ФайлНаходитсяВСлужебномКа талогеЗагрузки(Полученный� �айл.ПолноеИмя,СлужебныйКа� �алогЗагрузки)
// Тогда
//лИмяКаталога = ""; лИмяФайла = "";
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДи� �логаВыбораФайла.Сохранени е);
ДиалогСохраненияФайла.Пол� �оеИмяФайла = ИсходныйПутьКФайлу;
Фильтр = "Все файлы(*.*)";
ДиалогСохраненияФайла.Фил� �тр = Фильтр;
ДиалогСохраненияФайла.Мно� �ественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заг� �ловок = "Выберите путь для сохранения";
Если ДиалогСохраненияФайла.Выб� �ать() Тогда
КопироватьФайл(Полученный� �айл.ПолноеИмя,НовыйПутьКФ� �йлу);
Иначе
ПереместитьФайл(Полученны� �Файл.ПолноеИмя, НовыйПутьКФайлу);
КонецЕсли;

// КаталогНаДиске = Новый Файл(лИмяКаталога);
//Если НЕ КаталогНаДиске.Существует( ) Тогда
// СоздатьКаталог(лИмяКатало� �а);
//КонецЕсли;
// КопироватьФайл(Полученный� �айл.ПолноеИмя,НовыйПутьКФ� �йлу);
//Иначе
// ПереместитьФайл(Полученны� �Файл.ПолноеИмя, НовыйПутьКФайлу);
//КонецЕсли;
//ПереместитьФайл(Полученны� �Файл.ПолноеИмя, НовыйПутьКФайлу);
КонецЕсли;

НаборЗаписей = РегистрыСведений.УЭ_Прикре пленныеФайлы.СоздатьНабор� �аписей();
НаборЗаписей.Отбор.Докумен т.Установить(Документ);
//НаборЗаписей.Отбор.Предста вление.Установить(Представ ление);

НаборЗаписей.Прочитать();
КоличествоЗаписей = НаборЗаписей.Количество();
ТекПредставление = Представление;
Если КоличествоЗаписей > 0 Тогда
Для Инд = 1 По КоличествоЗаписей Цикл
МенеджерЗаписи = РегистрыСведений.УЭ_Прикре пленныеФайлы.СоздатьМенед� �ерЗаписи();
МенеджерЗаписи.Документ = Документ;
МенеджерЗаписи.Представле� �ие = Представление;
МенеджерЗаписи.Прочитать();
Если МенеджерЗаписи.Выбран()Тог� �а
Представление = ТекПредставление+"_"+Строка(Инд);
КонецЕсли;
КонецЦикла;
КонецЕсли;
НаборЗаписей.Очистить();
НаборЗаписей.Отбор.Докумен т.Установить(Документ);
НаборЗаписей.Отбор.Предста вление.Установить(Представ ление);


НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Документ = Документ;
НоваяЗапись.Представление = Представление;

НоваяЗапись.ИмяФайла = ИмяФайла;
НоваяЗапись.Размер = РазмерФайла;
НоваяЗапись.Расширение = Расширение;
НоваяЗапись.ДатаЗагрузки = ТекущаяДата();

НаборЗаписей.Записать();

ТекСтрока.Загрузить = Ложь;

//привяжем файл к контрагенту
Исключение
Отказ = Истина;
Сообщить(ОписаниеОшибки());
КонецПопытки;

Иначе
Сообщить("Ошибка в указании файла");
КонецЕсли;

Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;

КонецЦикла;

ЭтаФорма.Закрыть();

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

Функция ПолныйПутьХраненияДляВыгр узки(ИмяФайла, Расширение) Экспорт
Если Справочники.УЭ_ЗапускБизне сПроцессов.ВыгрузкаЗапрос� �вУТвУПП.Запщен
И ТекущаяДата() >= Справочники.УЭ_ЗапускБизне сПроцессов.ВыгрузкаЗапрос� �вУТвУПП.ДатаЗапуска
Тогда
результат= ?( ТипЗнч(Документ) = Тип("ДокументСсылка.ЗаказПокуп� �теля"),
Строка(Справочники.ЭР_Конс� �анты.ОсновнойКаталогФайло вХранениеУТ.Значение),
Строка(Справочники.ЭР_Конс� �анты.ОсновнойКаталогФайло вХранение.Значение)) + ИмяФайла + Расширение;
иначе
результат = Строка( Справочники.ЭР_Константы.О� �новнойКаталогФайловХране� �ие.Значение) + ИмяФайла + Расширение;
КонецЕсли;

возврат( результат)
КонецФункции

Процедура КоманднаяПанельДокументВы грузить(Кнопка)
ДействияФормыСохранитьИЗа крытьДляВыгрузки(Кнопка);
КонецПроцедуры

Meffiks
21.05.2020, 09:40
Проще в синтакс-помошнике было посмотреть.
Примерно так:
...
Если ДиалогСохраненияФайла.Выб� �ать() Тогда
КопироватьФайл(Полученный� �айл.ПолноеИмя,ДиалогСохра� �енияФайла.ПолноеИмяФайла);
Иначе
...