Перем СписокКаталогов ;
Функция ФайлСуществует (Знач ПутьКФайлу) Экспорт
Файл = Новый Файл (ПутьКФайлу);
Возврат Файл.Существует();
КонецФункции
Процедура ПоискКаталога (Каталог)
НайденныеФайлы = НайтиФайлы (Каталог,"*");
Для каждого Ф из НайденныеФайлы цикл
Если Ф.ЭтоКаталог() и Не ф.ПолучитьНевидимость() Тогда
СписокКаталогов.Добавить(Ф.Имя, Ф.ПолноеИмя);
ПоискКаталога (Ф.ПолноеИмя);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПоказатьДокументыНажатие(Элемент)
Если ФайлСуществует(ПапкаПользователя) = ложь Тогда
// Разбираем строку пути и вычленяем имя (только имя) каталога пользователя
ФлагПоиска1 = 0;
ТСтрока = ПапкаПользователя;
Пока ФлагПоиска1 = 0 Цикл
НомерСимвола = Найти(ТСтрока,"\");
ДлСтроки = СтрДлина(ТСтрока);
НоваяСтрока = Прав(ТСтрока, ДлСтроки - НомерСимвола);
Если Найти(НоваяСтрока,"\") = 0 тогда
ФлагПоиска1 = 1;
Прервать;
КонецЕсли;
ТСтрока = НоваяСтрока;
КонецЦикла;
// Путь к каталогу хранения - это путь к каталогу - внутри которого осуществляем поиск.
// в общем случае это имя диска
ПутьХранения = Константы.ПутьККаталогуХранения.Получить()+ "\";
СписокКаталогов = Новый СписокЗначений;
ПоискКаталога (ПутьХранения);
// Поиск имени каталога в списке каталогов.
// И соответсвенно реакция
НайденныйКаталог = СписокКаталогов.НайтиПоЗначению(НоваяСтрока);
Если НайденныйКаталог = Неопределено Тогда
Предупреждение ("Каталог пользователя потерян." + Символы.ПС +
"Поиск каталога результатов не дал." + Символы.ПС +
"Нужна ручная корректировка");
Возврат ;
Иначе
ТекстВопроса = "Каталог пользователя потерян." + Символы.ПС +
"Каталог обнаружен в новом месте." + Символы.ПС +
"Старое размещение: "+ ЭтотОбъект.ПапкаПользователя + Символы.ПС +
"Новое размещение : "+ НайденныйКаталог.Представление + Символы.ПС +
"Скорректировать размещение?";
РезультатВопроса = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Сообщить ("Путь к найденному каталогу " + НайденныйКаталог.Представление);
Возврат ;
Иначе
ЭтотОбъект.ПапкаПользователя = НайденныйКаталог.Представление;
Сообщить ("Внесение изменений.");
Попытка
ЭтотОбъект.Записать ();
Исключение
Предупреждение("Не удалось записать объект """ + ЭтотОбъект + """
|" + ОписаниеОшибки(),60);
КонецПопытки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Здесь вызываем обработку открытия папки по указанному пути
КонецПроцедуры
Рекурсивный поиск каталога среди каталогов.
Задачи пользователя - Поиск данных
В них для функции НайтиФайлы не был реализован рекурсивный поиск в подкаталогах.
Это указано в справке.
Задача
Найти путь к вложенному каталогу.
Пример
Каталог AST содержит каталоги A1, S1, T1
Каталог A1 содержит каталоги 0001, 0002, 0003
каталог S1 содержит каталоги 1001, 1002, 1003
Каталог Т1 содержит каталоги 2001, 2002, 2003
На входе функции КорневойКаталог = "D:\AST"
КаталогПоиска = "1002"
На выходе функции НайденныйПуть = "D:\AST\A1\1002"
Уточнение - имена КаталогПоиска уникальны и не повторяются.
Функция НайтиФайлы не помогает - она ищет их только в текущем каталоге.
См. также
Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)
21600 руб.
15.05.2017 42687 10 24
Вставляем картинку из буфера обмена (платформа 1С 8.3.24)
1 стартмани
18.03.2024 2949 2 John_d 11
Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам
2 стартмани
22.08.2023 2300 28 progmaster 8
Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
1 стартмани
13.10.2022 16445 144 sapervodichka 112