Не копируется файл, но копируется каталог
Доброго времени суток!
Создал обработку по копированию файлов между каталогами.
Описание ошибки при копировании файла нет.
Суть такова, что папка копируется из одного каталога, в другой, но сам файл нет.
Привожу логики процедур по копированию. Возможно вы увидите мой косяк :
Создал обработку по копированию файлов между каталогами.
Описание ошибки при копировании файла нет.
Суть такова, что папка копируется из одного каталога, в другой, но сам файл нет.
Привожу логики процедур по копированию. Возможно вы увидите мой косяк :
&НаСервере
Процедура СкопироватьКаталог(КаталогИсточник, КаталогПриемник, ПерезаписатьФайл = Ложь, МасштабироватьИзображение = Ложь, МаксШирина = 0, МаксВысота = 0)
МассивФайловДляКопирования = НайтиФайлы(КаталогИсточник,"*.*");
Для каждого ФайлДляКопирования Из МассивФайловДляКопирования Цикл
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогПриемник) + ФайлДляКопирования.Имя;
НовыйПуть = НРег(НовыйПуть);
Если ФайлДляКопирования.ЭтоКаталог() Тогда
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
СоздатьКаталог(НовыйПуть);
КонецЕсли;
СкопироватьКаталог(ФайлДляКопирования.ПолноеИмя, НовыйПуть, ПерезаписатьФайл, МасштабироватьИзображение, МаксШирина, МаксВысота);
Иначе
Попытка
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
ПутьКФайлу = ФайлДляКопирования.ПолноеИмя;
Если ФайлДляКопирования.ПолучитьТолькоЧтение() Тогда
ФайлДляКопирования.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если НовыйФайл.Существует() И НовыйФайл.ПолучитьТолькоЧтение() Тогда
НовыйФайл.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если МасштабироватьИзображение Тогда
Если НЕ БИТ_СТ_ОбщегоНазначенияСервер.МасштабироватьИзображение(ПутьКФайлу, НовыйПуть, МаксШирина, МаксВысота) Тогда
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
Иначе
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
КонецЕсли;
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось скопировать " + ФайлДляКопирования.ПолноеИмя + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция СкопироватьФайлВКаталог(СсылкаНаФайл, КаталогПриемник, ИмяФайла, ТребуетсяКопироватьВложенныеПапки = Ложь, ПерезаписатьФайл = Ложь, МасштабироватьИзображение = Ложь, МаксШирина = 0, МаксВысота = 0)
НовыйПуть = Неопределено;
Если ЭтоСправочник(СсылкаНаФайл) Тогда
ПутьКФайлу = ФайловыеФункции.ПолныйПутьТома(СсылкаНаФайл.Том) + СсылкаНаФайл.ПутьКФайлу;
Иначе
ПутьКФайлу = СсылкаНаФайл;
КонецЕсли;
Если ЗначениеЗаполнено(ИмяФайла) Тогда
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогПриемник);
Если ТребуетсяКопироватьВложенныеПапки Тогда
МассивПапок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяФайла, "\");
ВсегоПапок = МассивПапок.Количество() - 1;
Если ВсегоПапок > 0 Тогда
Для Инд = 0 По ВсегоПапок цикл
Если Инд < ВсегоПапок Тогда
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(НовыйПуть) + МассивПапок[Инд];
Иначе
НовыйПуть = НРег(НовыйПуть);
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
СоздатьКаталог(НовыйПуть);
СкопироватьКаталог(ПутьКФайлу, НовыйПуть, ПерезаписатьФайл, МасштабироватьИзображение, МаксШирина, МаксВысота);
КонецЕсли;
Возврат НовыйПуть;
КонецЕсли;
КонецЦикла;
Иначе
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(НовыйПуть) + ИмяФайла;
КонецЕсли;
Иначе
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(НовыйПуть) + ИмяФайла;
КонецЕсли;
Попытка
НовыйПуть = НРег(НовыйПуть);
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
ТекФайл = Новый Файл(ПутьКФайлу);
Если ТекФайл.ПолучитьТолькоЧтение() Тогда
ТекФайл.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если НовыйФайл.Существует() И НовыйФайл.ПолучитьТолькоЧтение() Тогда
НовыйФайл.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если МасштабироватьИзображение Тогда
Если НЕ БИТ_СТ_ОбщегоНазначенияСервер.МасштабироватьИзображение(ПутьКФайлу, НовыйПуть, МаксШирина, МаксВысота) Тогда
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
Иначе
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
КонецЕсли;
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось скопировать " + ПутьКФайлу + ": " + ОписаниеОшибки());
НовыйПуть = Неопределено;
КонецПопытки;
КонецЕсли;
Возврат НовыйПуть;
КонецФункции
ПоказатьПо теме из базы знаний
- Скопировать файлы в подкаталоги ИБ
- Программное добавление кнопок копирования табличных частей во все документы с минимальными изменениями конфигурации (или вообще без изменения)
- [ТАКСИ] Шаблон внешней обработки...и не только
- Копирование картинок из Windows-интересное в коллекцию для картинок рабочего стола
- Внешняя компонента для копирования изображения в буфер обмена
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)
&НаСервере
Процедура СкопироватьКаталог(КаталогИсточник, КаталогПриемник, ПерезаписатьФайл = Ложь, МасштабироватьИзображение = Ложь, МаксШирина = 0, МаксВысота = 0)
МассивФайловДляКопирования = НайтиФайлы(КаталогИсточник,"*.*");
Для каждого ФайлДляКопирования Из МассивФайловДляКопирования Цикл
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогПриемник) + ФайлДляКопирования.Имя;
НовыйПуть = НРег(НовыйПуть);
Если ФайлДляКопирования.ЭтоКаталог() Тогда
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
СоздатьКаталог(НовыйПуть);
КонецЕсли;
СкопироватьКаталог(ФайлДляКопирования.ПолноеИмя, НовыйПуть, ПерезаписатьФайл, МасштабироватьИзображение, МаксШирина, МаксВысота);
КонецЕсли;
КонецЦикла;
Для каждого ФайлДляКопирования Из МассивФайловДляКопирования Цикл
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогПриемник) + ФайлДляКопирования.Имя;
НовыйПуть = НРег(НовыйПуть);
Если НЕ ФайлДляКопирования.ЭтоКаталог() Тогда
Попытка
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
ПутьКФайлу = ФайлДляКопирования.ПолноеИмя;
Если ФайлДляКопирования.ПолучитьТолькоЧтение() Тогда
ФайлДляКопирования.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если НовыйФайл.Существует() И НовыйФайл.ПолучитьТолькоЧтение() Тогда
НовыйФайл.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если МасштабироватьИзображение Тогда
Если НЕ БИТ_СТ_ОбщегоНазначенияСервер.МасштабироватьИзображение(ПутьКФайлу, НовыйПуть, МаксШирина, МаксВысота) Тогда
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
Иначе
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
КонецЕсли;
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось скопировать " + ФайлДляКопирования.ПолноеИмя + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
(7)
Не помогло(. Запустил обработку. Все также. Пустая папка(
&НаСервере
Процедура СкопироватьКаталог(КаталогИсточник, КаталогПриемник, ПерезаписатьФайл = Ложь, МасштабироватьИзображение = Ложь, МаксШирина = 0, МаксВысота = 0)
МассивФайловДляКопирования = НайтиФайлы(КаталогИсточник,"*.*");
Для каждого ФайлДляКопирования Из МассивФайловДляКопирования Цикл
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогПриемник) + ФайлДляКопирования.Имя;
НовыйПуть = НРег(НовыйПуть);
Если ФайлДляКопирования.ЭтоКаталог() Тогда
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
СоздатьКаталог(НовыйПуть);
КонецЕсли;
СкопироватьКаталог(ФайлДляКопирования.ПолноеИмя, НовыйПуть, ПерезаписатьФайл, МасштабироватьИзображение, МаксШирина, МаксВысота);
КонецЕсли;
КонецЦикла;
Для каждого ФайлДляКопирования Из МассивФайловДляКопирования Цикл
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогПриемник) + ФайлДляКопирования.Имя;
НовыйПуть = НРег(НовыйПуть);
Если НЕ ФайлДляКопирования.ЭтоКаталог() Тогда
Попытка
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
ПутьКФайлу = ФайлДляКопирования.ПолноеИмя;
Если ФайлДляКопирования.ПолучитьТолькоЧтение() Тогда
ФайлДляКопирования.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если НовыйФайл.Существует() И НовыйФайл.ПолучитьТолькоЧтение() Тогда
НовыйФайл.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если МасштабироватьИзображение Тогда
Если НЕ БИТ_СТ_ОбщегоНазначенияСервер.МасштабироватьИзображение(ПутьКФайлу, НовыйПуть, МаксШирина, МаксВысота) Тогда
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
Иначе
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
КонецЕсли;
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось скопировать " + ФайлДляКопирования.ПолноеИмя + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьПроцедура СкопироватьКаталог(КаталогИсточник, КаталогПриемник, ПерезаписатьФайл = Ложь, МасштабироватьИзображение = Ложь, МаксШирина = 0, МаксВысота = 0)
МассивФайловДляКопирования = НайтиФайлы(КаталогИсточник,"*.*");
Для каждого ФайлДляКопирования Из МассивФайловДляКопирования Цикл
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогПриемник) + ФайлДляКопирования.Имя;
НовыйПуть = НРег(НовыйПуть);
Если ФайлДляКопирования.ЭтоКаталог() Тогда
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
СоздатьКаталог(НовыйПуть);
КонецЕсли;
СкопироватьКаталог(ФайлДляКопирования.ПолноеИмя, НовыйПуть, ПерезаписатьФайл, МасштабироватьИзображение, МаксШирина, МаксВысота);
КонецЕсли;
КонецЦикла;
Для каждого ФайлДляКопирования Из МассивФайловДляКопирования Цикл
НовыйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогПриемник) + ФайлДляКопирования.Имя;
НовыйПуть = НРег(НовыйПуть);
Если НЕ ФайлДляКопирования.ЭтоКаталог() Тогда
Попытка
НовыйФайл = Новый Файл(НовыйПуть);
Если ПерезаписатьФайл Тогда
Копировать = Истина;
Иначе
Копировать = НЕ НовыйФайл.Существует();
КонецЕсли;
Если Копировать Тогда
ПутьКФайлу = ФайлДляКопирования.ПолноеИмя;
Если ФайлДляКопирования.ПолучитьТолькоЧтение() Тогда
ФайлДляКопирования.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если НовыйФайл.Существует() И НовыйФайл.ПолучитьТолькоЧтение() Тогда
НовыйФайл.УстановитьТолькоЧтение(Ложь);
КонецЕсли;
Если МасштабироватьИзображение Тогда
Если НЕ БИТ_СТ_ОбщегоНазначенияСервер.МасштабироватьИзображение(ПутьКФайлу, НовыйПуть, МаксШирина, МаксВысота) Тогда
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
Иначе
КопироватьФайл(ПутьКФайлу, НовыйПуть);
КонецЕсли;
КонецЕсли;
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось скопировать " + ФайлДляКопирования.ПолноеИмя + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Не помогло(. Запустил обработку. Все также. Пустая папка(
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот