Предположим, нам нужно скопировать файл, находящийся в определенном каталоге, в тот же каталог, но с новым именем, которое задано в поле ввода демонстрационной обработки (реквизит ИмяНовогоФайла).
Для решения этой задачи добавим команду КопироватьФайлСНовымИменем. Обработчик команды заполним следующим образом (листинг 6.11).
Листинг 6.11. Обработчик команды «КопироватьФайлСНовымИменем»
&НаКлиенте
Процедура КопироватьФайлСНовымИменем(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл";
Диалог.Показать(Новый ОписаниеОповещения("КопироватьФайлЗавершение", ЭтотОбъект));
КонецПроцедуры
В этом обработчике мы выбираем файл, который нам нужно скопировать. Для этого мы показываем пользователю диалог выбора файла с помощью немодального метода Показать(). В этот метод мы передаем описание оповещения, указывающее на экспортную процедуру КопироватьФайлЗавершение(), которая будет выполнена после того, как пользователь выберет файл для копирования (листинг 6.12).
Листинг 6.12. Процедура «КопироватьФайлЗавершение()»
&НаКлиенте
Процедура КопироватьФайлЗавершение(ВыбранныеФайлы, Параметры) Экспорт
Если ВыбранныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
ИмяФайлаИсточника = ВыбранныеФайлы[0];
ФайлИсточник = Новый Файл(ИмяФайлаИсточника);
ИмяФайлаПриемника = ФайлИсточник.Путь + СокрЛП(ИмяНовогоФайла) + ФайлИсточник.Расширение;
НачатьКопированиеФайла(Новый ОписаниеОповещения("КопироватьФайлСНовымИменемЗавершение", ЭтотОбъект),
ИмяФайлаИсточника, ИмяФайлаПриемника);
КонецПроцедуры
В этом обработчике оповещения, в случае если файл выбран, мы получаем полный путь к файлу-источнику как первый элемент массива, содержащийся в параметре ВыбранныеФайлы (для простоты примера будем выбирать только один файл).
Затем создаем на основе пути к файлу-источнику объект Файл. Используя свойства этого объекта, получаем отдельно путь (ФайлИсточник.Путь) и расширение (ФайлИсточник.Расширение) файла-источника. Вставив имя нового файла, мы получаем полный путь к файлу-приемнику. После этого мы вызываем процедуру НачатьКопированиеФайла(), в которую передаем полные пути к файлу-источнику и файлу-приемнику.
Первым параметром в немодальный метод НачатьКопированиеФайла() мы передаем описание оповещения, указывающее на экспортную процедуру КопироватьФайлСНовымИменемЗавершение(), которая будет вызвана по окончании копирования файла (листинг 6.13).
Листинг 6.13. Процедура «КопироватьФайлСНовымИменемЗавершение()»
&НаКлиенте
Процедура КопироватьФайлСНовымИменемЗавершение(СкопированныйФайл, Дополнительно) Экспорт
РезультирующийФайл = Новый Файл(СкопированныйФайл);
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Выбранный файл скопирован в: " + РезультирующийФайл.Имя;
Сообщение.Сообщить();
КонецПроцедуры
В этой процедуре в параметре СкопированныйФайл содержится полный путь к новому файлу. На его основе мы создаем объект Файл. И затем показываем короткое имя нового файла (имя с расширением – РезультирующийФайл.Имя) в сообщении пользователю.