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