sun_simon
03.03.2020, 09:20
Добрый день!!! Изменил код, чтобы можно было указать самим путь, диалог выбора нормально работает, но как теперь изменить функцию, чтоб я мог сам указать путь для сохранения?(сейчас там путь указан в константе)
Процедура ДействияФормыСохранитьИЗа крытьДляВыгрузки(Кнопка)
Для Каждого ТекСтрока Из ТЗ Цикл
Если НЕ ТекСтрока.Загрузить Тогда
Продолжить;
КонецЕсли;
НачатьТранзакцию();
Отказ = Ложь;
ПолученныйФайл = Новый Файл(ТекСтрока.ПутьКФайлу);
Если Не ПолученныйФайл.Существует( ) Тогда
Сообщить("Файл " + ПолученныйФайл.ПолноеИмя + " не найден!",СтатусСообщения.Важное);
Предупреждение("Файл " + ПолученныйФайл.ПолноеИмя +" не найден!");
Отказ = Истина;
Продолжить;
КонецЕсли;
ИмяФайла = ?(ЗначениеЗаполнено(ТекСтр� �ка.ИмяФайла),ТекСтрока.Имя� �айла,ПолучитьИмяФайла());
Представление = ТекСтрока.Представление;
Расширение = ТекСтрока.Расширение;
РазмерФайла = ТекСтрока.Размер;
Если Не Отказ Тогда
Попытка
ИсходныйПутьКФайлу = ПолученныйФайл.ПолноеИмя;
НовыйПутьКФайлу = ПолныйПутьХраненияДляВыгр узки(ИмяФайла, Расширение);
Если ИсходныйПутьКФайлу <> НовыйПутьКФайлу Тогда
//СлужебныйКаталогЗагрузки=� �правочники.ЭР_Константы.Ос новнойКаталогФайловЗагруз ка.Значение;
//Если ЗначениеЗаполнено(Служебн� �йКаталогЗагрузки)
// И ТипЗнч(СлужебныйКаталогЗа� �рузки)=Тип("Строка")
// И НЕ ФайлНаходитсяВСлужебномКа талогеЗагрузки(Полученный� �айл.ПолноеИмя,СлужебныйКа� �алогЗагрузки)
// Тогда
//лИмяКаталога = ""; лИмяФайла = "";
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДи� �логаВыбораФайла.Сохранени е);
ДиалогСохраненияФайла.Пол� �оеИмяФайла = ИсходныйПутьКФайлу;
Фильтр = "Все файлы(*.*)";
ДиалогСохраненияФайла.Фил� �тр = Фильтр;
ДиалогСохраненияФайла.Мно� �ественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заг� �ловок = "Выберите путь для сохранения";
Если ДиалогСохраненияФайла.Выб� �ать() Тогда
КопироватьФайл(Полученный� �айл.ПолноеИмя,НовыйПутьКФ� �йлу);
Иначе
ПереместитьФайл(Полученны� �Файл.ПолноеИмя, НовыйПутьКФайлу);
КонецЕсли;
// КаталогНаДиске = Новый Файл(лИмяКаталога);
//Если НЕ КаталогНаДиске.Существует( ) Тогда
// СоздатьКаталог(лИмяКатало� �а);
//КонецЕсли;
// КопироватьФайл(Полученный� �айл.ПолноеИмя,НовыйПутьКФ� �йлу);
//Иначе
// ПереместитьФайл(Полученны� �Файл.ПолноеИмя, НовыйПутьКФайлу);
//КонецЕсли;
//ПереместитьФайл(Полученны� �Файл.ПолноеИмя, НовыйПутьКФайлу);
КонецЕсли;
НаборЗаписей = РегистрыСведений.УЭ_Прикре пленныеФайлы.СоздатьНабор� �аписей();
НаборЗаписей.Отбор.Докумен т.Установить(Документ);
//НаборЗаписей.Отбор.Предста вление.Установить(Представ ление);
НаборЗаписей.Прочитать();
КоличествоЗаписей = НаборЗаписей.Количество();
ТекПредставление = Представление;
Если КоличествоЗаписей > 0 Тогда
Для Инд = 1 По КоличествоЗаписей Цикл
МенеджерЗаписи = РегистрыСведений.УЭ_Прикре пленныеФайлы.СоздатьМенед� �ерЗаписи();
МенеджерЗаписи.Документ = Документ;
МенеджерЗаписи.Представле� �ие = Представление;
МенеджерЗаписи.Прочитать();
Если МенеджерЗаписи.Выбран()Тог� �а
Представление = ТекПредставление+"_"+Строка(Инд);
КонецЕсли;
КонецЦикла;
КонецЕсли;
НаборЗаписей.Очистить();
НаборЗаписей.Отбор.Докумен т.Установить(Документ);
НаборЗаписей.Отбор.Предста вление.Установить(Представ ление);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Документ = Документ;
НоваяЗапись.Представление = Представление;
НоваяЗапись.ИмяФайла = ИмяФайла;
НоваяЗапись.Размер = РазмерФайла;
НоваяЗапись.Расширение = Расширение;
НоваяЗапись.ДатаЗагрузки = ТекущаяДата();
НаборЗаписей.Записать();
ТекСтрока.Загрузить = Ложь;
//привяжем файл к контрагенту
Исключение
Отказ = Истина;
Сообщить(ОписаниеОшибки());
КонецПопытки;
Иначе
Сообщить("Ошибка в указании файла");
КонецЕсли;
Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецЦикла;
ЭтаФорма.Закрыть();
КонецПроцедуры
Функция ПолныйПутьХраненияДляВыгр узки(ИмяФайла, Расширение) Экспорт
Если Справочники.УЭ_ЗапускБизне сПроцессов.ВыгрузкаЗапрос� �вУТвУПП.Запщен
И ТекущаяДата() >= Справочники.УЭ_ЗапускБизне сПроцессов.ВыгрузкаЗапрос� �вУТвУПП.ДатаЗапуска
Тогда
результат= ?( ТипЗнч(Документ) = Тип("ДокументСсылка.ЗаказПокуп� �теля"),
Строка(Справочники.ЭР_Конс� �анты.ОсновнойКаталогФайло вХранениеУТ.Значение),
Строка(Справочники.ЭР_Конс� �анты.ОсновнойКаталогФайло вХранение.Значение)) + ИмяФайла + Расширение;
иначе
результат = Строка( Справочники.ЭР_Константы.О� �новнойКаталогФайловХране� �ие.Значение) + ИмяФайла + Расширение;
КонецЕсли;
возврат( результат)
КонецФункции
Процедура КоманднаяПанельДокументВы грузить(Кнопка)
ДействияФормыСохранитьИЗа крытьДляВыгрузки(Кнопка);
КонецПроцедуры
Процедура ДействияФормыСохранитьИЗа крытьДляВыгрузки(Кнопка)
Для Каждого ТекСтрока Из ТЗ Цикл
Если НЕ ТекСтрока.Загрузить Тогда
Продолжить;
КонецЕсли;
НачатьТранзакцию();
Отказ = Ложь;
ПолученныйФайл = Новый Файл(ТекСтрока.ПутьКФайлу);
Если Не ПолученныйФайл.Существует( ) Тогда
Сообщить("Файл " + ПолученныйФайл.ПолноеИмя + " не найден!",СтатусСообщения.Важное);
Предупреждение("Файл " + ПолученныйФайл.ПолноеИмя +" не найден!");
Отказ = Истина;
Продолжить;
КонецЕсли;
ИмяФайла = ?(ЗначениеЗаполнено(ТекСтр� �ка.ИмяФайла),ТекСтрока.Имя� �айла,ПолучитьИмяФайла());
Представление = ТекСтрока.Представление;
Расширение = ТекСтрока.Расширение;
РазмерФайла = ТекСтрока.Размер;
Если Не Отказ Тогда
Попытка
ИсходныйПутьКФайлу = ПолученныйФайл.ПолноеИмя;
НовыйПутьКФайлу = ПолныйПутьХраненияДляВыгр узки(ИмяФайла, Расширение);
Если ИсходныйПутьКФайлу <> НовыйПутьКФайлу Тогда
//СлужебныйКаталогЗагрузки=� �правочники.ЭР_Константы.Ос новнойКаталогФайловЗагруз ка.Значение;
//Если ЗначениеЗаполнено(Служебн� �йКаталогЗагрузки)
// И ТипЗнч(СлужебныйКаталогЗа� �рузки)=Тип("Строка")
// И НЕ ФайлНаходитсяВСлужебномКа талогеЗагрузки(Полученный� �айл.ПолноеИмя,СлужебныйКа� �алогЗагрузки)
// Тогда
//лИмяКаталога = ""; лИмяФайла = "";
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДи� �логаВыбораФайла.Сохранени е);
ДиалогСохраненияФайла.Пол� �оеИмяФайла = ИсходныйПутьКФайлу;
Фильтр = "Все файлы(*.*)";
ДиалогСохраненияФайла.Фил� �тр = Фильтр;
ДиалогСохраненияФайла.Мно� �ественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заг� �ловок = "Выберите путь для сохранения";
Если ДиалогСохраненияФайла.Выб� �ать() Тогда
КопироватьФайл(Полученный� �айл.ПолноеИмя,НовыйПутьКФ� �йлу);
Иначе
ПереместитьФайл(Полученны� �Файл.ПолноеИмя, НовыйПутьКФайлу);
КонецЕсли;
// КаталогНаДиске = Новый Файл(лИмяКаталога);
//Если НЕ КаталогНаДиске.Существует( ) Тогда
// СоздатьКаталог(лИмяКатало� �а);
//КонецЕсли;
// КопироватьФайл(Полученный� �айл.ПолноеИмя,НовыйПутьКФ� �йлу);
//Иначе
// ПереместитьФайл(Полученны� �Файл.ПолноеИмя, НовыйПутьКФайлу);
//КонецЕсли;
//ПереместитьФайл(Полученны� �Файл.ПолноеИмя, НовыйПутьКФайлу);
КонецЕсли;
НаборЗаписей = РегистрыСведений.УЭ_Прикре пленныеФайлы.СоздатьНабор� �аписей();
НаборЗаписей.Отбор.Докумен т.Установить(Документ);
//НаборЗаписей.Отбор.Предста вление.Установить(Представ ление);
НаборЗаписей.Прочитать();
КоличествоЗаписей = НаборЗаписей.Количество();
ТекПредставление = Представление;
Если КоличествоЗаписей > 0 Тогда
Для Инд = 1 По КоличествоЗаписей Цикл
МенеджерЗаписи = РегистрыСведений.УЭ_Прикре пленныеФайлы.СоздатьМенед� �ерЗаписи();
МенеджерЗаписи.Документ = Документ;
МенеджерЗаписи.Представле� �ие = Представление;
МенеджерЗаписи.Прочитать();
Если МенеджерЗаписи.Выбран()Тог� �а
Представление = ТекПредставление+"_"+Строка(Инд);
КонецЕсли;
КонецЦикла;
КонецЕсли;
НаборЗаписей.Очистить();
НаборЗаписей.Отбор.Докумен т.Установить(Документ);
НаборЗаписей.Отбор.Предста вление.Установить(Представ ление);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Документ = Документ;
НоваяЗапись.Представление = Представление;
НоваяЗапись.ИмяФайла = ИмяФайла;
НоваяЗапись.Размер = РазмерФайла;
НоваяЗапись.Расширение = Расширение;
НоваяЗапись.ДатаЗагрузки = ТекущаяДата();
НаборЗаписей.Записать();
ТекСтрока.Загрузить = Ложь;
//привяжем файл к контрагенту
Исключение
Отказ = Истина;
Сообщить(ОписаниеОшибки());
КонецПопытки;
Иначе
Сообщить("Ошибка в указании файла");
КонецЕсли;
Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецЦикла;
ЭтаФорма.Закрыть();
КонецПроцедуры
Функция ПолныйПутьХраненияДляВыгр узки(ИмяФайла, Расширение) Экспорт
Если Справочники.УЭ_ЗапускБизне сПроцессов.ВыгрузкаЗапрос� �вУТвУПП.Запщен
И ТекущаяДата() >= Справочники.УЭ_ЗапускБизне сПроцессов.ВыгрузкаЗапрос� �вУТвУПП.ДатаЗапуска
Тогда
результат= ?( ТипЗнч(Документ) = Тип("ДокументСсылка.ЗаказПокуп� �теля"),
Строка(Справочники.ЭР_Конс� �анты.ОсновнойКаталогФайло вХранениеУТ.Значение),
Строка(Справочники.ЭР_Конс� �анты.ОсновнойКаталогФайло вХранение.Значение)) + ИмяФайла + Расширение;
иначе
результат = Строка( Справочники.ЭР_Константы.О� �новнойКаталогФайловХране� �ие.Значение) + ИмяФайла + Расширение;
КонецЕсли;
возврат( результат)
КонецФункции
Процедура КоманднаяПанельДокументВы грузить(Кнопка)
ДействияФормыСохранитьИЗа крытьДляВыгрузки(Кнопка);
КонецПроцедуры