Имя: Пароль:
1C
 
Как в 1с83 поместить/скопировать файлы по требуемому пути
0 Василиск
 
18.11.19
09:36
Казалось бы нет ничего проще!
Ранее использовал код:

FSO = Новый COMОбъект("Scripting.FileSystemObject");
FSO.CopyFile(ИмяФайлаИсточник, ИмяФайлаНазначение, -1);
FSO = Неопределено;

Но в вебе перестал работать. В инете полно примеров с командой ПоместитьФайл

//если имя файла выбирает пользователь в стандартном диалоговом окне Windows
Результат = ПоместитьФайл(ВнутреннийАдресСервера);
//если имя файла указывает программист напрямую
//Результат = ПоместитьФайл(ВнутреннийАдресСервера, "D:\Текстовый файл.txt",, Ложь);

Но! В режиме такси надо использовать НачатьПомещениеФайла и тут почти нет примеров.
А те что есть - написаны с использование интерактивного окна диалога.
А мне это не надо - у меня и исходный и конечный пути уже есть. Надо просто СКОПИРОВАТЬ файл.

Подскажите - нет ли у кого примера как сделать?
1 ДенисЧ
 
18.11.19
09:41
Глобальный контекст.КопироватьФайл (Global context.FileCopy)
Глобальный контекст (Global context)
КопироватьФайл (FileCopy)
Синтаксис:

КопироватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>)
Параметры:

<ИмяФайлаИсточника> (обязательный)

Тип: Строка.
Полное имя файла-источника.
<ИмяФайлаПриемника> (обязательный)

Тип: Строка.
Полное имя файла-приемника.
Описание:

Копирует файл-источник в файл-приемник. Допускается перезапись файла-приемника.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

Файл-приемник при создании будет иметь права доступа, аналогичные назначаемым при создании новых файлов (т.е. права доступа к файлу-источнику не копируются).
Допускается использование схем http, https и ftp для адресации файлов. При использовании этих схем в адресах необходимо указывать прямые слеши '/', а не обратные '\'.
Для работы метода на веб-клиенте необходимо предварительно подключить расширение работы с файлами.
На веб-клиенте метод работает только с локальными файлами.
Пример:

КопироватьФайл("C:\Temp\Order.htm", "C:\My Documents\Order.htm");


См. также:

Глобальный контекст, метод НачатьКопированиеФайла

--------------------------------------------------------------------------------

     Методическая информация
2 Василиск
 
18.11.19
09:45
спасибо попробую
3 Василиск
 
18.11.19
09:46
А как проверить на существование файла?
ранее использовал

Если FSO.FileExists(ИмяФайлаНазначение) = 1 Тогда
    Сообщить("Файл с таким именем уже существует");
    Возврат Ложь
КонецЕсли;
4 FIXXXL
 
18.11.19
09:49
(3) Файл.Существует
5 ДенисЧ
 
18.11.19
09:49
Файл.Существует (File.Exist)
Файл (File)
Существует (Exist)
Синтаксис:

Существует()
Возвращаемое значение:

Тип: Булево.
Истина - файл существует; Ложь - в противном случае.
Описание:

Определяет, существует ли файл, соответствующий данному объекту.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

Для работы метода на веб-клиенте необходимо предварительно подключить расширение работы с файлами.
Пример:

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


См. также:

Файл, метод НачатьПроверкуСуществования

--------------------------------------------------------------------------------

     Методическая информация
6 Василиск
 
18.11.19
09:54
Проверил...
Вроде копирует.
Но! Спрашивает пользователя - "Скопировать файл?"

А мне этого не надо.
Как отключить этот интерактивный вопрос?
7 Михаил Иванович
 
18.11.19
10:03
(6) сам то гуглить и доки читать умеешь?
8 Василиск
 
18.11.19
10:08
(7)конечно. Вот не нашел как отключить интерактивные сообщения
9 Михаил Иванович
 
18.11.19
10:11
(8) плохо искал
10 Василиск
 
18.11.19
10:13
(9)да уже все облазил.
Просто проблема - выдается скрытый путь - который пользователи не должны видить.
Может подскажите - куда копать - что бы не спрашивал каждый раз "Скопировать Файл N по пути F"
11 ДенисЧ
 
18.11.19
10:16
(10) Убери вопрос. Этот вопрос задаёт твой код.
12 Василиск
 
18.11.19
10:19
(11) нет!
Проверил - именно в момент вызова процедуры
КопироватьФайл(ИмяФайлаИсточник, ИмяФайлаНазначение);
13 ДенисЧ
 
18.11.19
10:21
(12) Обманываешь.
14 Василиск
 
18.11.19
10:24
нет!
Более того код в Хроме не отрабатывает

ФайлНаДиске = Новый Файл(ИмяФайлаНазначение);
Если ФайлНаДиске.Существует() Тогда

Пишет "Использование синхронных методов на клиенте запрещено". А в IE все нормально
15 Василиск
 
18.11.19
10:25
Вот код - где я тут оповещаю пользователя?

    ФайлНаДиске = Новый Файл(ИмяФайлаНазначение);
    Если ФайлНаДиске.Существует() Тогда
        Сообщить("Файл с таким именем уже существует");        // возможно привязан к другим данным
        Возврат Ложь
    КонецЕсли;
    Попытка
        КопироватьФайл(ИмяФайлаИсточник, ИмяФайлаНазначение);
        ЗначениеВозврата = ИмяФайла;
    Исключение
        Сообщить("Невозможно поместить файл в хранилище" + ОписаниеОшибки());
        ЗначениеВозврата = Ложь
    КонецПопытки;
16 Василиск
 
18.11.19
10:55
Кстати!
КопироватьФайл не работает в Хроме

Пишет "Использование синхронных методов на клиенте запрещено".
17 Василий Алибабаевич
 
18.11.19
11:03
(16) Тебе же уже написали
НачатьКопированиеФайла
НачатьПроверкуСуществования

Обратись к ДенисЧ у него было много СП по клюшкам. Спроси - может и по снеговику завалялся.
18 Василиск
 
18.11.19
12:56
(17)спасибо. разобрался. работает.
НО! все равно спрашивает - переместить файл?
19 Сияющий в темноте
 
18.11.19
23:19
там флажок интерактивно должен быть.
но и расширение для работы с файлами(расширение браузера)должно стоять,иначе шишь вам,а не файлы.