Модули для задач\Директория\Заменить текст в файлах
Функция ПередОткрытием()
Задача = Этот.Владелец.Параметр;
Если (Задача=0) Тогда Возврат 0; Конец;
Задача.Описание = "Замена текста в отмеченных файлах по маске";
Параметры = Задача.Определить(0, Объекты.Список, Свойства.Наименование, "Параметры");
Параметры.Колонки.Определить(Свойства.Наименование, 0, 150, 1, 0);
Параметры.Колонки.Определить(Свойства.Значение, 0, 200, 1, 1);
Параметры.'Отключить канву объекта' = 1;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Строка поиска");
Если (П.Новый()) Тогда
П.Отмечен = 1;
П.Значение = "Привет";
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Заменить на");
Если (П.Новый()) Тогда
П.Отмечен = 1;
П.Значение = "Добрый день";
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Учесть регистр");
Если (П.Новый()) Тогда
П.Отмечен = 0;
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Только целые слова");
Если (П.Новый()) Тогда
П.Отмечен = 0;
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Маска включения в строке");
Если (П.Новый()) Тогда
П.Отмечен = 0;
П.Значение = "*как дела*";
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Маска исключения в строке");
Если (П.Новый()) Тогда
П.Отмечен = 0;
П.Значение = "*всем*";
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Кодировка");
Если (П.Новый()) Тогда
П.Отмечен = 0;
П.Значение = "UTF8";
Конец;
Задача.Выбранный(Параметры);
Конец
Функция Выполнить()
// Замена текста в отмеченных файлах по маске
Задача = Этот.Владелец.Параметр;
Если (Задача=0) Тогда Возврат 0; Конец;
Параметры = Задача.Определить(0, Объекты.Список, Свойства.Наименование, "Параметры");
Результаты = Задача.Определить(0, Объекты.Список, Свойства.Наименование, "Результат");
Результаты.Колонки.Определить(Свойства.'Путь к файлу', 0, 350, 1, 0);
Результаты.Колонки.Определить(Свойства.Строка, 0, 350, 1, 0);
Результаты.Колонки.Определить(Свойства.Результат, 0, 350, 1, 0);
Результаты.'Отключить канву объекта' = 1;
Результаты.'Отключить отметку' = 1;
Результаты.Очистить();
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Строка поиска");
СтрПоиска = П.Значение;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Заменить на");
СтрЗамены = П.Значение;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Учесть регистр");
УчестьРегистр = П.Отмечен;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Только целые слова");
ТолькоЦелые = П.Отмечен;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Маска включения в строке");
МаскаВключения = "";
Если (П.Отмечен) Тогда МаскаВключения = П.Значение; Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Маска исключения в строке");
МаскаИсключения = "";
Если (П.Отмечен) Тогда МаскаИсключения = П.Значение; Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Кодировка");
Кодировка = ""; // по умолчанию ANSI;
Если (П.Отмечен) Тогда Кодировка = П.Значение; Конец;
Для Объект Из Задача.Владелец Цикл
Если ((Объект.Отмечен=1)И(Объект.'Это файл'=1)) Тогда
есть_замена = 0;
Текст1 = "";
Текст2 = "";
Текст1.Прочитать(Объект.'Путь к файлу',Кодировка);
Для Стр1 Из Текст1 Цикл
Сообщить(Стр1);
Если (Строки.Найти(Стр1,СтрПоиска)>0) Тогда
есть_замена = 1;
Стр2 = Строки.Заменить(Стр1,СтрПоиска,СтрЗамены);
Текст2.Добавить(Стр2);
Результат = Результаты.Добавить(Объекты.Объект);
Результат.'Путь к файлу' = Объект.'Путь к файлу';
Результат.Строка = Стр1;
Результат.Результат = Стр2;
Иначе
Текст2.Добавить(Стр1);
Конец;
Конец;
Если (есть_замена=1) Тогда
Текст2.Записать(Объект.'Путь к файлу',Кодировка);
Конец;
Конец;
Конец;
Задача.Обновить();
Задача.Выбранный(Результаты);
Конец