Skip to content

Commit

Permalink
Новые методы плагина "Файлы" #134
Browse files Browse the repository at this point in the history
ОбеспечитьКаталогФайла
КаталогПустой
ОтносительныйПуть
ПолныйПуть
  • Loading branch information
artbear committed May 4, 2018
1 parent 13be524 commit d6abf4f
Show file tree
Hide file tree
Showing 2 changed files with 172 additions and 0 deletions.
84 changes: 84 additions & 0 deletions plugins/Файлы/Файлы/Ext/ObjectModule.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,18 @@

КонецПроцедуры // ОбеспечитьКаталог()

// Гарантирует наличие каталога-родителя для указанного файла или родителя
//
// Параметры:
// ПутьФайла - Строка - Путь к файлу или каталогу
//
Процедура ОбеспечитьКаталогФайла(Знач ПутьФайла) Экспорт

Файл = Новый Файл(ПутьФайла);
ОбеспечитьКаталог(Файл.Путь);

КонецПроцедуры

// Копирует все файлы из одного каталога в другой
//
// Параметры:
Expand All @@ -139,6 +151,78 @@

КонецПроцедуры

// Проверяет является ли каталог пустым.
// Генерирует исключение если каталог с указанным именем не существует.
//
// Параметры:
// Путь - Строка - Путь к каталогу
//
// Возвращаемое значение:
// Булево - Истина, если каталог пуст
//
Функция КаталогПустой(Знач Путь) Экспорт

Если НЕ КаталогСуществует(Путь) Тогда
ВызватьИсключение "Каталог <" + Путь + "> не существует";
КонецЕсли;

МассивФайлов = НайтиФайлы(Путь, ПолучитьМаскуВсеФайлы(), Ложь);

Возврат МассивФайлов.Количество() = 0;

КонецФункции // КаталогПустой(Знач Путь)

// Возвращает путь файла относительно корневого каталога
//
// Параметры:
// ПутьКорневогоКаталога - Строка - путь корневого каталога
// ПутьВнутреннегоФайла - Строка - путь файла
// РазделительПути - Строка или Неопределено - все разделители в пути заменяются на указанный разделитель пути
// если Неопределено, то разделители пути не заменяются
//
// Возвращаемое значение:
// Строка - относительный путь файла
//
Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла, Знач РазделительПути = Неопределено) Экспорт

Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда
ВызватьИсключение "Не указан корневой путь в методе ФС.ОтносительныйПуть";
КонецЕсли;

ФайлКорень = Новый Файл(ПутьКорневогоКаталога);
ФайлВнутреннийКаталог = Новый Файл(ПутьВнутреннегоФайла);
Рез = СтрЗаменить(ФайлВнутреннийКаталог.ПолноеИмя, ФайлКорень.ПолноеИмя, "");
Если Найти("\/", Лев(Рез, 1)) > 0 Тогда
Рез = Сред(Рез, 2);
КонецЕсли;
Если Найти("\/", Прав(Рез, 1)) > 0 Тогда
Рез = Лев(Рез, СтрДлина(Рез)-1);
КонецЕсли;
Если РазделительПути <> Неопределено Тогда
Рез = СтрЗаменить(Рез, "\", РазделительПути);
Рез = СтрЗаменить(Рез, "/", РазделительПути);
КонецЕсли;

Если ПустаяСтрока(Рез) Тогда
Рез = ".";
КонецЕсли;

Возврат Рез;
КонецФункции

// Возращает полный путь, приведенный по правилам ОС.
//
// Параметры:
// ОтносительныйИлиПолныйПуть - Строка - фрагмент или полный путь
//
// Возвращаемое значение:
// Строка - путь, оформленный по правилам ОС
//
Функция ПолныйПуть(Знач ОтносительныйИлиПолныйПуть) Экспорт
Файл = Новый Файл(ОтносительныйИлиПолныйПуть);
Возврат Файл.ПолноеИмя;
КонецФункции // ПолныйПуть(Знач ОтносительныйИлиПолныйПуть) Экспорт

// Процедура - Записать файл в кодировке UTF-8
//
// Параметры:
Expand Down
88 changes: 88 additions & 0 deletions plugins/Файлы/Файлы/Forms/Форма/Ext/Form/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,19 @@

КонецПроцедуры // ОбеспечитьКаталог()

&НаКлиенте
// Гарантирует наличие каталога-родителя для указанного файла или родителя
//
// Параметры:
// ПутьФайла - Строка - Путь к файлу или каталогу
//
Процедура ОбеспечитьКаталогФайла(Знач ПутьФайла) Экспорт

Файл = Новый Файл(ПутьФайла);
ОбеспечитьКаталог(Файл.Путь);

КонецПроцедуры

&НаКлиенте
// Копирует все файлы из одного каталога в другой
//
Expand All @@ -143,6 +156,81 @@

КонецПроцедуры

&НаКлиенте
// Проверяет является ли каталог пустым.
// Генерирует исключение если каталог с указанным именем не существует.
//
// Параметры:
// Путь - Строка - Путь к каталогу
//
// Возвращаемое значение:
// Булево - Истина, если каталог пуст
//
Функция КаталогПустой(Знач Путь) Экспорт

Если НЕ КаталогСуществует(Путь) Тогда
ВызватьИсключение "Каталог <" + Путь + "> не существует";
КонецЕсли;

МассивФайлов = НайтиФайлы(Путь, ПолучитьМаскуВсеФайлы(), Ложь);

Возврат МассивФайлов.Количество() = 0;

КонецФункции // КаталогПустой(Знач Путь)

&НаКлиенте
// Возвращает путь файла относительно корневого каталога
//
// Параметры:
// ПутьКорневогоКаталога - Строка - путь корневого каталога
// ПутьВнутреннегоФайла - Строка - путь файла
// РазделительПути - Строка или Неопределено - все разделители в пути заменяются на указанный разделитель пути
// если Неопределено, то разделители пути не заменяются
//
// Возвращаемое значение:
// Строка - относительный путь файла
//
Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла, Знач РазделительПути = Неопределено) Экспорт

Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда
ВызватьИсключение "Не указан корневой путь в методе ФС.ОтносительныйПуть";
КонецЕсли;

ФайлКорень = Новый Файл(ПутьКорневогоКаталога);
ФайлВнутреннийКаталог = Новый Файл(ПутьВнутреннегоФайла);
Рез = СтрЗаменить(ФайлВнутреннийКаталог.ПолноеИмя, ФайлКорень.ПолноеИмя, "");
Если Найти("\/", Лев(Рез, 1)) > 0 Тогда
Рез = Сред(Рез, 2);
КонецЕсли;
Если Найти("\/", Прав(Рез, 1)) > 0 Тогда
Рез = Лев(Рез, СтрДлина(Рез)-1);
КонецЕсли;
Если РазделительПути <> Неопределено Тогда
Рез = СтрЗаменить(Рез, "\", РазделительПути);
Рез = СтрЗаменить(Рез, "/", РазделительПути);
КонецЕсли;

Если ПустаяСтрока(Рез) Тогда
Рез = ".";
КонецЕсли;

Возврат Рез;
КонецФункции

&НаКлиенте
// Возращает полный путь, приведенный по правилам ОС.
//
// Параметры:
// ОтносительныйИлиПолныйПуть - Строка - фрагмент или полный путь
//
// Возвращаемое значение:
// Строка - путь, оформленный по правилам ОС
//
Функция ПолныйПуть(Знач ОтносительныйИлиПолныйПуть) Экспорт
Файл = Новый Файл(ОтносительныйИлиПолныйПуть);
Возврат Файл.ПолноеИмя;
КонецФункции // ПолныйПуть(Знач ОтносительныйИлиПолныйПуть) Экспорт

&НаКлиенте
// Процедура - Записать файл в кодировке UTF-8
//
Expand Down

0 comments on commit d6abf4f

Please sign in to comment.