Имя: Пароль:
1C
1С v8
Маска метода НайтиФайлы() для каталогов/папок
0 TreeDogNight
 
12.08.15
16:53
Какую нужно установить маску в методе НайтиФайлы(), чтобы в результате поиска были только каталоги(папки)?
1 Живой Ископаемый
 
12.08.15
16:55
Какую?
2 Злопчинский
 
12.08.15
16:56
да, какую?
3 Злопчинский
 
12.08.15
16:57
выбирать список по маске и смотреть атрибуты файла штатными 1Сными возможносятми - для каталога стоит соотв.флажок
4 TreeDogNight
 
12.08.15
17:07
Синтаксис:
НайтиФайлы(<Путь>, <Маска>, <ИскатьВПодкаталогах>)
<Маска> (необязательный)

Тип: Строка.
Маска выбора файлов.
Если параметр задан, то первый параметр воспринимается системой как путь к каталогу, в котором требуется найти файлы, удовлетворяющие маске выбора.
Для операционной системы MS Windows:
В строке маски, помимо обычных символов, допускается использование символа "*" (звездочка), обозначающего любое число произвольных символов, и "?" (знак вопроса), обозначающего один произвольный символ.

Перебор и проверка всех найденных файлов в цикле происходит очень долго, поэтому появилась мысль сразу находить папки, используя маску. Вот только какую маску задать, я не знаю...
5 ДенисЧ
 
12.08.15
17:08
Никак ты тут маской не здашь
6 Злопчинский
 
12.08.15
17:10
АтрибутыФайла(<?>,,,,,,);
Синтаксис:
АтрибутыФайла(<ИмяФайла>,<РазмерФайла>,<АтрибутыФайла>,<ВремяСоздания>,<ВремяПоследнегоДоступа>,<ВремяПоследнейЗаписи>,<РасширенноеИмяФайла>)
Назначение:
Возвращает атрибуты файла (в параметрах).
Параметры:
<ИмяФайла> - строка с именем файла;
<РазмерФайла> - переменная, принимающая размер файла в байтах;
<АтрибутыФайла> - переменная, принимающая атрибуты файла;
Возвращаемое строковое значение длиной 9 символов, в котором закодированы атрибуты файла. Символы могут принимать значения ''0'' или ''1'':
первый символ: если ''1'' - файл только для чтения;
второй символ: если ''1'' - скрытый файл;
третий символ: если ''1'' - системный файл;
четвертый символ: если ''1'' - каталог;
пятый символ: если ''1'' - архивный файл;
шестой символ: если ''1'' - обычный файл (все другие атрибуты не установлены);
седьмой символ: если ''1'' - временный файл;
восьмой символ: если ''1'' - файл, сжатый каким-либо архиватором;
девятый символ: если ''1'' - нет доступа к файлу.
<ВремяСоздания> - переменная, принимающая строку с датой и временем создания файла;
<ВремяПоследнегоДоступа> - переменная, принимающая строку с датой и временем последнего доступа к файлу;
<ВремяПоследнейЗаписи> - переменная, принимающая строку с датой и временем последней записи файла;
<РасширенноеИмяФайла> - переменная, принимающая строку с полным именем файла.

Подробнее см. в книгу ''1С:Предприятие 7.7. Описание встроенного языка. Часть 2'', глава 37 ''Работа с Файлами''.
7 Живой Ископаемый
 
12.08.15
17:11
2(6) почему 77?
8 TreeDogNight
 
13.08.15
09:30
(6) Что вы хотели передать этим ответом?
9 ДенисЧ
 
13.08.15
09:31
(7) (8) в 77 справка по этой функции немного более насыщена. Но функционал ничем от 8ки не отличается...
10 1Сергей
 
13.08.15
09:31
(8) >> четвертый символ: если ''1'' - каталог;
11 Провинциальный 1сник
 
13.08.15
09:38
(9) Так это обертка апишных findfirst/findnext, в свою очередь берущих свое начало с соответствующих досовских функций 21 прерывания)
12 ДенисЧ
 
13.08.15
09:39
(11) Спасибо, кэп. А я сам бы никогда не догадался...
13 Провинциальный 1сник
 
13.08.15
09:47
(12) Просто удивительно, что за 30 лет не выдумали ничего поудобнее. Скажем, что-то типа sql-запроса к каталогу с возможностью иерархии.
14 ДенисЧ
 
13.08.15
09:48
(13) МС собиралась такое делать.
Что-то не срослось.
15 TreeDogNight
 
13.08.15
11:02
Нашёл решение! Маска должна быть такая: "*."
16 Провинциальный 1сник
 
13.08.15
13:23
(15) Файлы без расширения попадут
17 Провинциальный 1сник
 
13.08.15
13:23
+(16) и соответственно не попадут каталоги с расширением
18 ДенисЧ
 
13.08.15
13:33
(15) А теперь попробуй найти таким макаром хоть одну папку из принадлежащих .net...
19 drcrasher
 
13.08.15
13:51
http://catalog.mista.ru/public/166391/
курить в сторону FolderInfo.Вставить("SubFoldersCount", FileSystemObject_FOLDER.SubFolders.Count);
20 TreeDogNight
 
15.08.15
08:35
(16) По крайней мере, теперь файлов на много меньше и это значительно ускорило работу алгоритма.
(17) Что за каталоги с расширением, не слышал о них?
21 ДенисЧ
 
15.08.15
09:00
(20)
Содержимое папки C:\WINDOWS\Microsoft.NET\assembly\GAC_32

6.05.2015  11:48    <DIR>          .
6.05.2015  11:48    <DIR>          ..
6.05.2015  11:10    <DIR>          CustomMarshalers
6.05.2015  11:10    <DIR>          ISymWrapper
6.05.2015  11:11    <DIR>          Microsoft.Transactions.Bridge.Dtc
6.05.2015  11:11    <DIR>          Microsoft.VisualBasic.Activities.Compiler
6.05.2015  11:48    <DIR>          Microsoft.VisualStudio.FileDiscovery
6.05.2015  11:48    <DIR>          Microsoft.VisualStudio.Modeling.Sdk.Diagrams
GraphObject.10.0
6.05.2015  11:48    <DIR>          Microsoft.VisualStudio.Settings
6.05.2015  11:48    <DIR>          mscorcfg
6.05.2015  11:10    <DIR>          mscorlib
6.05.2015  11:11    <DIR>          PresentationCore
6.05.2015  11:10    <DIR>          System.Data
6.05.2015  11:17    <DIR>          System.Data.OracleClient
6.05.2015  11:10    <DIR>          System.EnterpriseServices
6.05.2015  11:11    <DIR>          System.Printing
6.05.2015  11:11    <DIR>          System.Transactions
6.05.2015  11:17    <DIR>          System.Web
22 mehfk
 
15.08.15
09:01
(20) Хоть раз посмотри структуру каталогов, которую создает 1с при установке