Как обработать файлы с разделителями, изменив их структуру и сохранив в кодировке UTF8 без BOM Частенько при разработке сайтов приходится обрабатывать тысячи однотипных файлов... чтобы оптимизировать эту рутинную работу я набросал небольшую обработку, которая перебирает в указанном каталоге все файлы с расширением w1c и полностью меняет структуру данного файла, сохраняя его в кодировке UTF8 без BOM сигнатуры
Код обработки файлов:
Код 1C v 8.3 &НаКлиенте
Процедура КомандаОбрW1C(Команда)
Режим = РежимДиалогаВыбораФайла. ВыборКаталога;
ДиалогОткрытия = Новый ДиалогВыбораФайла( Режим) ;
ДиалогОткрытия. Каталог = "" ;
ДиалогОткрытия. МножественныйВыбор = Ложь ;
ДиалогОткрытия. Заголовок = "Выберите каталог с Файлами" ;
Если ДиалогОткрытия. Выбрать( ) Тогда
ПутьККаталогу = ДиалогОткрытия. Каталог;
ВыбранКаталог = НайтиФайлы( ПутьККаталогу, "*.*" ) ;
Для каждого НайденныйФайл Из ВыбранКаталог Цикл
Если НайденныйФайл. ЭтоКаталог( ) Тогда
ИначеЕсли НайденныйФайл. Расширение= ".w1c" Тогда
Сообщить( НайденныйФайл. ПолноеИмя) ;
ОбработатьФайл( НайденныйФайл. ПолноеИмя) ;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьФайл(ТекФайл)
ОбрФайл = Новый ТекстовыйДокумент;
ОбрФайл. Прочитать( ТекФайл, "UTF-8" ) ;
врТекст = ОбрФайл. ПолучитьТекст( ) ;
врМассив = РазложитьСтрокуВМассив( врТекст, "<&w1c&>" ) ;
новТекст = СокрЛП( врМассив[0 ]) + "<&w1c&>" ;
новТекст = новТекст + СокрЛП( врМассив[1 ]) + "<&w1c&>" + "1<&w1c&>" ;
АтрибутыФайла = Новый Файл( ТекФайл) ;
новТекст = новТекст + Формат( АтрибутыФайла. ПолучитьВремяИзменения( ) , "ДФ=dd/MM/yyyy" ) + "<&w1c&>" ;
новТекст = новТекст + СокрЛП( врМассив[2 ]) + "<&w1c&>" ;
новТекст = новТекст + СокрЛП( врМассив[3 ]) + "<&w1c&>" ;
новТекст = новТекст + СокрЛП( врМассив[4 ]) + "<&w1c&>" ;
новТекст = новТекст + СокрЛП( врМассив[5 ]) + "<&w1c&>" ;
новТекст = новТекст + "no-mods<&w1c&>" ;
новТекст = новТекст + СокрЛП( врМассив[6 ]) + "<&w1c&>" ;
новТекст = новТекст + СокрЛП( врМассив[7 ]) ;
ОбрФайл. Очистить( ) ;
ОбрФайл. УстановитьТекст( новТекст) ;
ОбрФайл. Записать( ТекФайл, "UTF-8" ) ;
Данные = Новый ДвоичныеДанные( ТекФайл) ;
Строка64 = Base64Строка( Данные) ;
Строка64 = Прав( Строка64 , СтрДлина( Строка64 ) - 4 ) ;
ДанныеНаЗапись= Base64Значение( Строка64 ) ;
ДанныеНаЗапись. Записать( ТекФайл) ;
КонецПроцедуры
&НаКлиенте
Функция РазложитьСтрокуВМассив(Знач Стр, Разделитель = "," ) Экспорт
МассивСтрок = Новый Массив( ) ;
Если Разделитель = " " Тогда
Стр = СокрЛП( Стр) ;
Пока 1 = 1 Цикл
Поз = Найти( Стр, Разделитель) ;
Если Поз= 0 Тогда
МассивСтрок. Добавить( Стр) ;
Возврат МассивСтрок;
КонецЕсли ;
МассивСтрок. Добавить( Лев( Стр, Поз- 1 ) ) ;
Стр = СокрЛ( Сред( Стр, Поз) ) ;
КонецЦикла ;
Иначе
ДлинаРазделителя = СтрДлина( Разделитель) ;
Пока 1 = 1 Цикл
Поз = Найти( Стр, Разделитель) ;
Если Поз= 0 Тогда
МассивСтрок. Добавить( Стр) ;
Возврат МассивСтрок;
КонецЕсли ;
МассивСтрок. Добавить( Лев( Стр, Поз- 1 ) ) ;
Стр = Сред( Стр, Поз+ ДлинаРазделителя) ;
КонецЦикла ;
КонецЕсли ;
КонецФункции
Внешний вид обработки получился таким:
Обработка написана для Web-Студии W1C : Первый Веб-Консультант
Категория:
Текстовый документ