ДеревоЗначений в ТекстовыйДокумент Код 1C v 8.2 УП
&НаСервереБезКонтекста
Процедура ВывестиДеревоЗначенийВТекст(Знач рВетка,рТекст,Знач рПараметры=Неопределено)
Попытка
Если рТекст= Неопределено Тогда
Если ТипЗнч( рВетка) < > Тип( "ДеревоЗначений" ) Тогда Возврат КонецЕсли ;
Если ТипЗнч( рПараметры) < > Тип( "Структура" ) Тогда рПараметры= Новый Структура КонецЕсли ;
стрКолонок= ? ( рПараметры. Свойство( "Колонки" ) , рПараметры. Колонки, Неопределено ) ;
Если ТипЗнч( стрКолонок) < > Тип( "Структура" ) Тогда стрКолонок= Новый Структура КонецЕсли ;
рПоказыватьУровни= ? ( рПараметры. Свойство( "ПоказыватьУровни" ) , рПараметры. ПоказыватьУровни, Ложь ) ;
рШагОтступа= ? ( рПараметры. Свойство( "ШагОтступа" ) , рПараметры. ШагОтступа, 2 ) ;
рДеревоДляТеста= рВетка;
рЗапись= Новый ЗаписьXML;
рЗапись. УстановитьСтроку( ) ;
СериализаторXDTO. ЗаписатьXML( рЗапись, рДеревоДляТеста) ;
стро= рЗапись. Закрыть( ) ;
стро= СтрЗаменить( стро, "xmlns=" , "xmlns:myns1C=" ) ;
рЧтение= Новый ЧтениеXML;
рЧтение. УстановитьСтроку( стро) ;
постр= Новый ПостроительDOM;
рДокументДОМ= постр. Прочитать( рЧтение) ;
рВыражение= "/ValueTree/row" ; максКолвоУровней= 1 ;
рРазыменователь= Новый РазыменовательПространствИменDOM( рДокументДОМ) ;
Пока Истина Цикл
#Если Клиент Тогда
ОбработкаПрерыванияПользователя( ) ;
#КонецЕсли
рРезультат= рДокументДОМ. ВычислитьВыражениеXPath( рВыражение, рДокументДОМ, рРазыменователь, ТипРезультатаDOMXPath. Любой) ;
Если рРезультат. ПолучитьСледующий( ) = Неопределено Тогда Прервать КонецЕсли ;
рВыражение= рВыражение+ "/row" ;
максКолвоУровней= максКолвоУровней+ 1 ;
КонецЦикла ;
максКолвоУровней= максКолвоУровней- 1 ;
строПробелы= " " ;
строРазделители= "===============================================================================================" ;
строОтступы= "___________________________________________________________________________________________" ;
секШапка1 = "|[_HCS" + Лев( строПробелы, максКолвоУровней* рШагОтступа) + "]|" ;
секГорРазделитель1 = "|" + Лев( строОтступы, максКолвоУровней* рШагОтступа+ 6 ) + "|" ;
рШиринаКолонкиИерархии= СтрДлина( секШапка1 ) - 2 ;
строПолейШапки= "#Поле _HCS
| #Выравнивание Центр" ;
строПолейЗаписи= "" ;
Если рПоказыватьУровни Тогда
секШапка1 = секШапка1 + "[_Level]|" ;
секГорРазделитель1 = секГорРазделитель1 + Лев( строРазделители, 8 ) + "|" ;
строПолейШапки= строПолейШапки+ "
|#Поле _Level
| #Выравнивание Центр" ;
строПолейЗаписи= "#Поле _Level
| #Выравнивание Центр
| #Забивать Истина" ;
КонецЕсли ;
мИменКолонок= Новый Массив;
Для каждого кол Из рВетка. Колонки Цикл
Если стрКолонок. Количество( ) < > 0 и не стрКолонок. Свойство( кол. Имя) Тогда Продолжить КонецЕсли ;
рДлинаИмениКолонки= СтрДлина( кол. Имя) ;
рНужнаяШирина= Макс( ? ( кол. Ширина< 3 , 10 , кол. Ширина) , рДлинаИмениКолонки) ;
секШапка1 = секШапка1 + "[" + кол. Имя+ Лев( строПробелы, рНужнаяШирина- рДлинаИмениКолонки) + "]|" ;
секГорРазделитель1 = секГорРазделитель1 + Лев( строРазделители, рНужнаяШирина+ 1 ) + "=|" ;
строПолейШапки= строПолейШапки+ "
|#Поле " + кол. Имя+ "
| #Выравнивание Центр" ;
рОписТипов= кол. ТипЗначения;
Если рОписТипов. Типы( ) . Количество( ) = 1 и рОписТипов. СодержитТип( Тип( "Булево" ) ) Тогда
рВыравнивание= "Центр" ;
ИначеЕсли рОписТипов. СодержитТип( Тип( "Число" ) ) Тогда
рВыравнивание= "Право" ;
ИначеЕсли рОписТипов. СодержитТип( Тип( "Строка" ) ) и рОписТипов. КвалификаторыСтроки. Длина= 0 Тогда
рВыравнивание= "ПоШирине" ;
Иначе
рВыравнивание= "Лево" ;
КонецЕсли ;
строПолейЗаписи= строПолейЗаписи+ ? ( ПустаяСтрока( строПолейЗаписи) , "" , Символы. ПС) + "#Поле " + кол. Имя+ "
| #Выравнивание " + рВыравнивание;
Попытка
Если ЗначениеЗаполнено( стрКолонок[кол. Имя]) Тогда
строПолейЗаписи= строПолейЗаписи+ "
| #Формат "" " + СокрЛП( стрКолонок[кол. Имя]) + """ " ;
КонецЕсли ;
Исключение
КонецПопытки ;
мИменКолонок. Добавить( кол. Имя) ;
КонецЦикла ;
секШапка2 = СтрЗаменить( СтрЗаменить( секШапка1 , "[" , "<" ) , "]" , ">" ) ;
секЗапись1 = секШапка1 ; секЗапись2 = секШапка2 ;
секГорРазделитель2 = СтрЗаменить( СтрЗаменить( секГорРазделитель1 , "=" , "-" ) , "|" , "+" ) ;
секГорРазделитель1 = СтрЗаменить( секГорРазделитель1 , "_" , "=" ) ;
секГорРазделитель2 = СтрЗаменить( секГорРазделитель2 , "_" , " " ) ;
тМакет= Новый ТекстовыйДокумент;
тМакет. ДобавитьСтроку( "#Область Шапка" ) ;
тМакет. ДобавитьСтроку( строПолейШапки) ;
тМакет. ДобавитьСтроку( секГорРазделитель1 ) ;
тМакет. ДобавитьСтроку( секШапка1 ) ;
тМакет. ДобавитьСтроку( секШапка2 ) ;
тМакет. ДобавитьСтроку( секГорРазделитель1 ) ;
тМакет. ДобавитьСтроку( "#КонецОбласти" ) ;
тМакет. ДобавитьСтроку( "" ) ;
тМакет. ДобавитьСтроку( "#Область Запись" ) ;
тМакет. ДобавитьСтроку( строПолейЗаписи) ;
тМакет. ДобавитьСтроку( секЗапись1 ) ;
тМакет. ДобавитьСтроку( секЗапись2 ) ;
тМакет. ДобавитьСтроку( секГорРазделитель2 ) ;
тМакет. ДобавитьСтроку( "#КонецОбласти" ) ;
рПараметры. Вставить( "ИсходныйМакет" , тМакет) ;
рТекст= Новый ТекстовыйДокумент;
сек= тМакет. ПолучитьОбласть( "Шапка" ) ;
сек. Параметры. _HCS= "Иерархия" ;
Для каждого имякол Из мИменКолонок Цикл
кол= рВетка. Колонки[имякол];
сек. Параметры[кол. Имя]= ? ( ПустаяСтрока( кол. Заголовок) , кол. Имя, кол. Заголовок) ;
КонецЦикла ;
рТекст. Вывести( сек) ;
пар= Новый Структура;
пар. Вставить( "МассивИмёнКолонок" , мИменКолонок) ;
пар. Вставить( "ТекущаяСекция" , тМакет. ПолучитьОбласть( "Запись" ) ) ;
пар. Вставить( "ШиринаКолонкиИерархии" , рШиринаКолонкиИерархии) ;
пар. Вставить( "ПоказыватьУровни" , рПоказыватьУровни) ;
пар. Вставить( "Отступ" , 0 ) ;
пар. Вставить( "ШагОтступа" , рШагОтступа) ;
ВывестиДеревоЗначенийВТекст( рВетка, рТекст, пар) ;
Иначе
мИменКолонок= рПараметры. МассивИмёнКолонок;
рСекция= рПараметры. ТекущаяСекция;
рОтступ= рПараметры. Отступ;
рШиринаКолонкиИерархии= рПараметры. ШиринаКолонкиИерархии;
рПоказыватьУровни= рПараметры. ПоказыватьУровни;
строОтступы= "_________________________________________________________________________________________________________" ;
строПробелы= " " ;
пар= Новый Структура;
пар. Вставить( "МассивИмёнКолонок" , мИменКолонок) ;
пар. Вставить( "ТекущаяСекция" , рПараметры. ТекущаяСекция) ;
пар. Вставить( "ШиринаКолонкиИерархии" , рШиринаКолонкиИерархии) ;
пар. Вставить( "ПоказыватьУровни" , рПоказыватьУровни) ;
пар. Вставить( "ШагОтступа" , рПараметры. ШагОтступа) ;
пар. Вставить( "Отступ" , рОтступ+ рПараметры. ШагОтступа) ;
Для каждого рПодветка Из рВетка. Строки Цикл
рСекция. Параметры. _HCS= Лев( строПробелы, рОтступ) + "\" + Лев( строОтступы, рШиринаКолонкиИерархии- рОтступ- 1 ) ;
Если рПоказыватьУровни Тогда
рСекция. Параметры. _Level= рПодветка. Уровень( ) ;
КонецЕсли ;
Для каждого имякол Из мИменКолонок Цикл
рСекция. Параметры[имякол]= рПодветка[имякол];
КонецЦикла ;
рТекст. Вывести( рСекция) ;
ВывестиДеревоЗначенийВТекст( рПодветка, рТекст, пар)
КонецЦикла ;
КонецЕсли ;
Исключение
Сообщить( "ВывестиДеревоЗначенийВТекст, ошибка: " + ОписаниеОшибки( ) , СтатусСообщения. ОченьВажное) ;
КонецПопытки ;
КонецПроцедуры
Источник
Категория:
Работа с Деревом Значений Как преобразовать данные текстового файла с единым разделителем в ТЗ Код 1C v 8.2 УП &НаСервере
Функция ПреобразоватьТекстВТЗ(Текст,Разделитель,ЕстьЗакрывающийСимвол)
ТаблицаЗначений = Новый ТаблицаЗначений;
МаксимальноеКвоРазделителей = 0 ;
Для НомерСтроки= 1 по Текст. КоличествоСтрок( ) Цикл
Стр = Текст. ПолучитьСтроку( НомерСтроки) ;
КвоРазделителей = СтрЧислоВхождений( Стр, Разделитель) ;
Если КвоРазделителей > МаксимальноеКвоРазделителей Тогда
МаксимальноеКвоРазделителей = КвоРазделителей;
КонецЕсли ;
КонецЦикла ;
КвоКолонок = ? ( ЕстьЗакрывающийСимвол = Истина , МаксимальноеКвоРазделителей, МаксимальноеКвоРазделителей+ 1 ) ;
Ном = 0 ;
Пока Ном < КвоКолонок Цикл
Ном = Ном+ 1 ;
ИмяКолонки = "Колонка" + Ном;
ТаблицаЗначений. Колонки. Добавить( ИмяКолонки) ;
КонецЦикла ;
Для НомерСтроки= 1 по Текст. КоличествоСтрок( ) Цикл
Стр = Текст. ПолучитьСтроку( НомерСтроки) ;
НоваяСтрока = ТаблицаЗначений. Добавить( ) ;
Ном = 0 ;
Пока Найти( Стр, Разделитель) > 0 Цикл
Ном = Ном+ 1 ;
ПозицияРазделителя = Найти( Стр, Разделитель) ;
ТекЗначение = ЛЕВ( Стр, ПозицияРазделителя - 1 ) ;
Стр = Прав( Стр, СтрДлина( Стр) - ПозицияРазделителя) ;
ИмяКолонки = "Колонка" + Ном;
НоваяСтрока[ИмяКолонки] = ТекЗначение;
КонецЦикла ;
Если ЕстьЗакрывающийСимвол = Ложь Тогда
ИмяКолонки = "Колонка" + ( Ном+ 1 ) ;
НоваяСтрока[ИмяКолонки] = Стр;
КонецЕсли ;
КонецЦикла ;
Возврат ТаблицаЗначений;
КонецФункции
Категория:
Работа с Таблицей Значений Как преобразовать данные текстового файла с единым разделителем в ТЗ Код 1C v 8.2 УП &НаСервере
Функция ПреобразоватьТекстВТЗ(Текст,Разделитель,ЕстьЗакрывающийСимвол)
ТаблицаЗначений = Новый ТаблицаЗначений;
МаксимальноеКвоРазделителей = 0 ;
Для НомерСтроки= 1 по Текст. КоличествоСтрок( ) Цикл
Стр = Текст. ПолучитьСтроку( НомерСтроки) ;
КвоРазделителей = СтрЧислоВхождений( Стр, Разделитель) ;
Если КвоРазделителей > МаксимальноеКвоРазделителей Тогда
МаксимальноеКвоРазделителей = КвоРазделителей;
КонецЕсли ;
КонецЦикла ;
КвоКолонок = ? ( ЕстьЗакрывающийСимвол = Истина , МаксимальноеКвоРазделителей, МаксимальноеКвоРазделителей+ 1 ) ;
Ном = 0 ;
Пока Ном < КвоКолонок Цикл
Ном = Ном+ 1 ;
ИмяКолонки = "Колонка" + Ном;
ТаблицаЗначений. Колонки. Добавить( ИмяКолонки) ;
КонецЦикла ;
Для НомерСтроки= 1 по Текст. КоличествоСтрок( ) Цикл
Стр = Текст. ПолучитьСтроку( НомерСтроки) ;
НоваяСтрока = ТаблицаЗначений. Добавить( ) ;
Ном = 0 ;
Пока Найти( Стр, Разделитель) > 0 Цикл
Ном = Ном+ 1 ;
ПозицияРазделителя = Найти( Стр, Разделитель) ;
ТекЗначение = ЛЕВ( Стр, ПозицияРазделителя - 1 ) ;
Стр = Прав( Стр, СтрДлина( Стр) - ПозицияРазделителя) ;
ИмяКолонки = "Колонка" + Ном;
НоваяСтрока[ИмяКолонки] = ТекЗначение;
КонецЦикла ;
Если ЕстьЗакрывающийСимвол = Ложь Тогда
ИмяКолонки = "Колонка" + ( Ном+ 1 ) ;
НоваяСтрока[ИмяКолонки] = Стр;
КонецЕсли ;
КонецЦикла ;
Возврат ТаблицаЗначений;
КонецФункции
Категория:
JSON, XML, TXT, CSV, DBF Поиск строки в текстовом файле по маске Есть ли возможность поиска строки в текстовом файле по маске? К примеру ХХХХ-ХХХХ-ХХХХ-ХХХХ.
Код 1C v 8.х RegExp = Новый COMОбъект( "VBScript.RegExp" ) ;
RegExp. IgnoreCase = Ложь ;
RegExp. Global = Истина ;
RegExp. MultiLine = Истина ;
RegExp. Pattern = "Windows[\w\s\d]*([A-Z1-9]{5}-[A-Z1-9]{5}-[A-Z1-9]{5}-[A-Z1-9]{5}-[A-Z1-9]{5})" ;
Matches= RegExp. Execute( "строка поиска" ) ;
ЧислоВхождений= Matches. Count( ) ;
Если ЧислоВхождений> 0 Тогда
Для к = 0 По ЧислоВхождений- 1 Цикл
Match = Matches. Item( к) ;
SubMatches = Match. SubMatches;
Ключ= SubMatches. Item( 0 ) ;
КонецЦикла ;
КонецЕсли ;
Категория:
Регулярные выражения Разбить строку на подстроки Разлогает строку типа:
Поле1, "Сложное, с запятыми внутри Поле2", Поле3
на массимв подстрок типа:
Поле1
Сложное, с запятыми внутри Поле2
Поле3
Код 1C v 8.х RegExp = Новый COMОбъект( "VBScript.RegExp" ) ;
Результат = Новый Массив( ) ;
RegExp. IgnoreCase = Ложь ;
RegExp. Global = Истина ;
RegExp. MultiLine = Ложь ;
RegExp. Pattern = "(?:^|;)(\"" (?:[^\"" ]+|\"" \"" )*\"" |[^;]*)" ;
Matches= RegExp. Execute( Стр) ;
ЧислоВхождений= Matches. Count( ) ;
Если ЧислоВхождений> 0 Тогда
Для к = 0 По ЧислоВхождений- 1 Цикл
Match = Matches. Item( к) ;
SubMatches = Match. SubMatches;
ЧислоПодвыражений= SubMatches. Count( ) ;
Для н = 0 По ЧислоПодвыражений- 1 Цикл
SubMatch= SubMatches. Item( н) ;
Если SubMatch= "" Тогда
КонецЕсли ;
Результат. Добавить( SubMatch) ;
КонецЦикла ;
КонецЦикла ;
Иначе
КонецЕсли ;
Возврат Результат;
Живой Ископаемый Категория:
Регулярные выражения Использование регулярных выражений (RegExp) в 1С Регулярные выражения (Regular Expressions) являются известным и мощным средством для поиска, тестирования и замены подстрок. Эта технология доступна и в 1С - через объект VBScript.RegExp. Нужный объект уже встроен в современные версии Windows (начиная с Windows 98), и устанавливать дополнительно ничего не нужно.
Приведенные ниже примеры были протестированы в 1С:Предприятие 7.7; для 1С:Предприятие 8.x изменяется способ создания объекта:
Код 1C v 8.х RegExp = Новый COMОбъект( "VBScript.RegExp" ) ;
Кроме того, там уже есть логические константы Истина и Ложь - объявлять их не нужно.
Более подробное описание самой технологии RegExp (что означают те или иные значки или скобочки, или какие шаблоны поиска или замены можно использовать в типичных ситуациях) можно найти в специальной литературе (например Бен Форта "Освой самостоятельно регулярные выражения (regexp) за 10 минут") или на сайтах в сети Internet.
Код 1C v 7.x
Процедура RegExp_Exec()
Истина = - 1 ;
Ложь = 0 ;
RegExp = CreateObject( "VBScript.RegExp" ) ;
RegExp. IgnoreCase = Ложь ;
RegExp. Global = Истина ;
RegExp. MultiLine = Ложь ;
RegExp. Pattern = "<[^>]*>" ;
Matches= RegExp. Execute( "Это <hr> строка <br> с тегами HTML" ) ;
ЧислоВхождений= Matches. Count( ) ;
Если ЧислоВхождений> 0 Тогда
Для к = 0 По ЧислоВхождений- 1 Цикл
Match = Matches. Item( к) ;
Сообщить( "Найден тег:" + Match. Value) ;
КонецЦикла ;
Иначе
Сообщить( "Вхождений шаблона не найдено" ) ;
КонецЕсли ;
КонецПроцедуры
Более продвинутый пример разбора HTML использует подвыражения (SubMatches) и позволяет находить как сами теги, так и текст между ними.
Код 1C v 7.x
Процедура RegExp_Exec1()
Истина = - 1 ;
Ложь = 0 ;
RegExp = CreateObject( "VBScript.RegExp" ) ;
RegExp. IgnoreCase = Ложь ;
RegExp. Global = Истина ;
RegExp. MultiLine = Ложь ;
RegExp. Pattern = "([^<]*)(<[^>]*>)([^<]*)" ;
Matches= RegExp. Execute( " <tr><td id=aaa>Дятел <td> долбит <td> сосну </tr>" ) ;
ЧислоВхождений= Matches. Count( ) ;
Если ЧислоВхождений> 0 Тогда
Для к = 0 По ЧислоВхождений- 1 Цикл
Match = Matches. Item( к) ;
SubMatches = Match. SubMatches;
ЧислоПодвыражений= SubMatches. Count( ) ;
Для н = 0 По ЧислоПодвыражений- 1 Цикл
SubMatch= SubMatches. Item( н) ;
Если SubMatch= "" Тогда
Продолжить;
КонецЕсли ;
Сообщить( "Подстрока: " + SubMatch) ;
КонецЦикла ;
КонецЦикла ;
Иначе
Сообщить( "Вхождений шаблона не найдено" ) ;
КонецЕсли ;
КонецПроцедуры
Часто регулярные выражения используются для тестирования строк, например пользовательского ввода.
Этот пример позволяет узнать, является ли строка целым числом.
Код 1C v 7.x
Процедура RegExp_Test()
RegExp = CreateObject( "VBScript.RegExp" ) ;
RegExp. Pattern = "^\d+$" ;
стр= "12345" ;
Если RegExp. Test( стр) = 0 Тогда
Сообщить( "Это не целое число" ) ;
Иначе
Сообщить( "Это целое число" ) ;
КонецЕсли ;
КонецПроцедуры
Регулярные выражения поддерживают не только поиск, но и замену текста. При этом найденные подвыражения (в круглых скобках) могут быть представлены в строке замены как $1, $2 и т. д.
(знак доллара используется в VBScript.RegExp; в других средах программирования, например в JavaScript, используемый для этой цели символ может отличаться).
Код 1C v 7.x
Процедура RegExp_Replace()
стр= "Дятел долбил сосну" ;
Истина = - 1 ;
Ложь = 0 ;
RegExp = CreateObject( "VBScript.RegExp" ) ;
RegExp. IgnoreCase = Истина ;
RegExp. Global = Истина ;
RegExp. MultiLine = Истина ;
RegExp. Pattern = "(долбил)" ;
стр= RegExp. Replace( стр, "про$1" ) ;
Сообщить( стр) ;
КонецПроцедуры
Источник Категория:
Регулярные выражения Как удалить Файл, Каталог? Функция Удаляет указанные файлы.
УдалитьФайлы(<Путь>, <Маска>)
Параметры: <Путь> (обязательный) Тип: Строка. Путь к удаляемым файлам.
<Маска> (необязательный) Тип: Строка. Маска для выбора удаляемых файлов. В строке маски допускается использование символа "*" (звездочка), обозначающего любое число произвольных символов, и "?" (знак вопроса), обозначающего один произвольный символ.
!!! - Если <Маска> не указана, то удаляются все файлы и каталог <Путь>.
Для удаления одного файла, можно передать его полное имя через первый параметр, либо передать путь к нему через первый параметр, а его короткое имя - через второй.
Удаление файлов производится, если в указанных файлах не установлено свойство "Только чтение". В противном случае возникает сообщение об ошибке.
Допускается использование схем http, https и ftp для адресации файлов. При использовании этих схем в адресах необходимо указывать прямые слеши '/', а не обратные '\'.
Код 1C v 8.х
Попытка
УдалитьФайлы( "C:\temp\Works" ) ;
Исключение
Сообщить( ОписаниеОшибки( ) ) ;
КонецПопытки ;
Код 1C v 8.2 УП
Попытка
УдалитьФайлы( КаталогВыгрузкиДанных, "*.csv" ) ;
Исключение
#Если Клиент Тогда
Сообщить( ОписаниеОшибки( ) ) ;
#КонецЕсли
КонецПопытки ;
В 7-рке для удаления используется
Код 1C v 7.x ФС. УдалитьКаталог( Стр) ;
ФС. УдалитьФайл( Стр) ;
Как удалить каталог с файлами?
Код 1C v 7.x
Функция Рекурсия(Знач Путь,Сп)
Перем А;
ФСО= СоздатьОбъект( "ФС" ) ;
Стр= ФСО. НайтиПервыйФайл( Путь+ "\*.*" ) ;
Пока ПустоеЗначение( Стр) = 0 Цикл
Если ( Стр< > ".." ) и ( Стр< > "." ) Тогда
Представление= "" ;
Для к= 1 По СтрЧислоВхождений( Путь+ "\" + Стр, "\" ) Цикл
Представление= Представление+ "\" ;
КонецЦикла ;
Сп. ДобавитьЗначение( Путь+ "\" + Стр, Представление+ Стр) ;
ФСО. АтрибутыФайла( Путь+ "\" + Стр, , А) ;
Если Сред( А, 4 , 1 ) = "1" Тогда
Рекурсия( Путь+ "\" + Стр, Сп) ;
КонецЕсли ;
КонецЕсли ;
Стр= ФСО. НайтиСледующийФайл( ) ;
КонецЦикла ;
КонецФункции
Процедура Сформировать()
Перем Каталог, А;
Если ФС. ВыбратьКаталог( Каталог, "" ) = 0 Тогда
Возврат ;
КонецЕсли ;
Сп= СоздатьОбъект( "СписокЗначений" ) ;
Рекурсия( Каталог, Сп) ;
Сп. СортироватьПоПредставлению( 0 ) ;
Для к= 1 По Сп. РазмерСписка( ) Цикл
Стр= Сп. ПолучитьЗначение( к) ;
ФС. АтрибутыФайла( Стр, , А) ;
Если Сред( А, 4 , 1 ) = "1" Тогда
ФС. УдалитьКаталог( Стр) ;
Иначе
ФС. УдалитьФайл( Стр) ;
КонецЕсли ;
КонецЦикла ;
ФС. УстТекКаталог( Каталог+ "\..\" ) ;
ФС. УдалитьКаталог( Каталог) ;
КонецПроцедуры
Категория:
Работа с Файлами и Каталогами